HsCodeInterface.java 3.34 KB
package com.erry.iclear.dateInterface.api;

import com.erry.iclear.dateInterface.api.request.HsCodeParam;
import com.erry.iclear.dateInterface.api.response.ResultHsCode;
import com.erry.iclear.dateInterface.entity.IClearApiHsCodeLog;
import com.erry.iclear.dateInterface.service.HsCodeService;
import com.erry.iclear.dateInterface.service.IClearApiHsCodeLogService;
import com.erry.iclear.dateInterface.util.StringUtil;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import javax.servlet.http.HttpServletRequest;
import java.util.Date;

/**
 * @author Administrator
 * /hscode/hscodeRequest
 */
@RestController
@RequestMapping("/hscode")
@Slf4j
public class HsCodeInterface {

    @Autowired
    HsCodeService hsCodeService;

    @Autowired
    IClearApiHsCodeLogService iClearApiHsCodeLogService;

    @ApiOperation(value = "获取hscode数据", httpMethod = "POST", notes = "ex:  http://192.168.1.71:8080/hscode/hscodeRequest")
    @PostMapping("/hscodeRequest")
    @ResponseBody
    public ResultHsCode hscodeRequest(HttpServletRequest request
                                , @RequestBody HsCodeParam hscode) {
        log.info("接收到请求数据hscode:【"+hscode.getHscode()+"】");
        String appId = (String) request.getHeader("Appid");
        String appkey = (String) request.getHeader("Appkey");
        IClearApiHsCodeLog iclearApiHsCodeLog = new IClearApiHsCodeLog();
        ResultHsCode resultHsCode = null;
        long begin = System.currentTimeMillis();
        try {
            iclearApiHsCodeLog.setAppId(appId);
            iclearApiHsCodeLog.setAppKey(appkey);
            iclearApiHsCodeLog.setCreateTime(new Date());
            iclearApiHsCodeLog.setCode(hscode.getHscode());
            if (!StringUtil.isEmpty(hscode.getHscode())) {
                resultHsCode = hsCodeService.findHsCodeListByCode(hscode.getHscode());
                return resultHsCode;
            } else {

                //如果没有传hscode需要限制10分钟只能查询一次
                boolean rs = iClearApiHsCodeLogService.findIClearApiHsCodeLog();
                if(rs == true){
                    resultHsCode = new ResultHsCode(Boolean.FALSE,"10019","未指定hscode编码,10分钟之内只允许查询一次",null);
                }else{
                    resultHsCode = hsCodeService.findAllHsCodeList();
                }
                return resultHsCode;
            }
        }catch(Exception ex){
            log.error(ex.getMessage(),ex);
            resultHsCode = new ResultHsCode(Boolean.FALSE,"30101","数据查询异常",null);
            return resultHsCode;
        }finally {
            iclearApiHsCodeLog.setReceiveResult(resultHsCode.getMsg());
            iclearApiHsCodeLog.setErrorCode(resultHsCode.getCode());
            iclearApiHsCodeLog.setResponseTime(new Date());
            long end = System.currentTimeMillis();
            iclearApiHsCodeLog.setSpendTime(end-begin);
            //如果异常为hscode长度超过2000,将截取0到2000字符
            if(resultHsCode.getCode().equals("30102")){
                iclearApiHsCodeLog.setCode(iclearApiHsCodeLog.getCode().substring(0,2000));
            }
            iClearApiHsCodeLogService.saveIClearApiHsCodeLog(iclearApiHsCodeLog);
        }
    }
}