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

import com.erry.iclear.dateInterface.enums.ErrorCodeEnum;
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 = "获取最新HS Code信息接口", 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(appId);
                if(rs == true){
                    resultHsCode = new ResultHsCode(Boolean.FALSE, ErrorCodeEnum.ERROR_10019.getCode(),ErrorCodeEnum.ERROR_10019.getName(),null);
                }else{
                    resultHsCode = hsCodeService.findAllHsCodeList();
                }
                return resultHsCode;
            }
        }catch(Exception ex){
            log.error(ex.getMessage(),ex);
            resultHsCode = new ResultHsCode(Boolean.FALSE,ErrorCodeEnum.ERROR_30101.getCode(),ErrorCodeEnum.ERROR_30101.getName(),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(ErrorCodeEnum.ERROR_30102.getCode())){
                iclearApiHsCodeLog.setCode(hscode.getHscode().substring(0,2000));
            }
            iClearApiHsCodeLogService.saveIClearApiHsCodeLog(iclearApiHsCodeLog);
        }
    }

    @ApiOperation(value = "HSCODE通用模糊查询接口", httpMethod = "POST", notes = "ex:  http://192.168.1.71:8080/hscode/fuzzyQuery")
    @PostMapping("/fuzzyQuery")
    @ResponseBody
    public ResultHsCode fuzzyQueryHsCode(HttpServletRequest request
            , @RequestBody HsCodeParam hscode) {
        log.info("接收到请求数据skuCode:【"+hscode.getSkuCode()+"】,skuName:【"+hscode.getSkuName()+"】");
        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());
            resultHsCode = hsCodeService.fuzzyQueryHsCode(hscode);
            iclearApiHsCodeLog.setReceiveResult(resultHsCode.getMsg());
            iclearApiHsCodeLog.setErrorCode(resultHsCode.getCode());
            iclearApiHsCodeLog.setResponseTime(new Date());
            long end = System.currentTimeMillis();
            iclearApiHsCodeLog.setSpendTime(end-begin);
            String skuCode = hscode.getSkuCode();
            if(!StringUtil.isEmpty(skuCode) && skuCode.length() > 50){
                skuCode = skuCode.substring(0,50);
            }
            String skuName = hscode.getSkuName();
            if(!StringUtil.isEmpty(skuName) && skuName.length() > 1000){
                skuName = skuName.substring(0,1000);
            }
            iclearApiHsCodeLog.setCode("[skuCode="+skuCode+"],[skuName="+skuName+"]");
            iClearApiHsCodeLogService.saveIClearApiHsCodeLog(iclearApiHsCodeLog);
            return resultHsCode;
        }catch(Exception ex){
            log.error(ex.getMessage(),ex);
            resultHsCode = new ResultHsCode(Boolean.FALSE,ErrorCodeEnum.ERROR_30101.getCode(),ErrorCodeEnum.ERROR_30101.getName(),null);
            return resultHsCode;
        }finally{
            return resultHsCode;
        }
    }
}