Browse Source

增加 从业车辆画像查询-定制版

15810770710@163.com 3 years ago
parent
commit
c518d075d6

+ 58 - 0
src/main/java/info/aspirecn/rdc/iov/sjjh/servicenode/supplier/action/WycChannelActionImpl.java

@@ -397,4 +397,62 @@ public class WycChannelActionImpl {
             return responseObject;
         }
     }
+
+    @ApiOperation(value = "从业车辆画像查询-定制版", notes = "")
+    @PostMapping(value = "/vehicleInfoQueryV2.do")
+    public ChannelTypeHandleResponseObject vehicleInfoQueryV2(
+            @ApiParam(value="通道ID")@RequestHeader(name="channelId")  String channelId,
+            @ApiParam(value="超时时间,单位:毫秒",example = "10000")@RequestParam(name = "outTime", required = true) int outTime,
+            @ApiParam(value="请求参数JSON串")@RequestParam(name = "customBody", required = true) String customBody) {
+
+        log.info("从业车辆画像查询--->channelId:{}--->outTime:{},--->customBody:{}",channelId,outTime,customBody);
+        //日志记录通道类型 - 同步
+        ServletRequestAttributes servletRequestAttributes = (ServletRequestAttributes)RequestContextHolder.getRequestAttributes();
+        HttpServletRequest request = servletRequestAttributes.getRequest();
+        request.setAttribute(Constant.CHANNEL_TYPE_KEY,Constant.CHANNEL_TYPE_SYNC);
+        request.setAttribute(Constant.ACCESSLOG_MG_ISCHARGE_KEY,Constant.IS_NOT_CHARGE);
+        request.setAttribute(Constant.ACCESSLOG_MG_RESPONSE_CODE_KEY,Constant.CHANNEL_LOG_ERROR_CODE);
+        request.setAttribute(Constant.LOG_UPSTREAM_RESPONSE_CODE, Constant.LOG_UPSTREAM_DEFAULT_RESPONSE_CODE);
+        String channel_price = request.getHeader(Constant.CHANNEL_PRICE);
+        String channel_second_price = request.getHeader(Constant.CHANNEL_SECOND_PRICE);
+        log.info("channel_price:{},channel_second_price:{}",channel_price,channel_second_price);
+        request.setAttribute(Constant.CHANNEL_PRICE,request.getHeader(Constant.CHANNEL_PRICE));
+        ChannelTypeHandleResponseObject responseObject = new ChannelTypeHandleResponseObject();
+        try{
+            responseObject = wycChannelService.vehicleInfoQueryV2(
+                    request, channelId,outTime,customBody);
+            //日志记录通道响应码
+            if(responseObject.getCode() != 1){
+                request.setAttribute(Constant.ACCESSLOG_MG_RESPONSE_CODE_KEY,Constant.CHANNEL_LOG_ERROR_CODE);
+            }else{
+                log.info("ifJk:{}",request.getHeader(Constant.CUSTOMER_RETURN_TYPE_PARA));
+                if(Constant.CUSTOMER_RETURN_JK.equals(request.getHeader(Constant.CUSTOMER_RETURN_TYPE_PARA))){
+
+                    String code = property.getCode().get(responseObject.getResultCode());
+                    log.info("resultCode:{},jkCode:{}",responseObject.getResultCode(),code);
+                    if(code!=null){
+                        responseObject.setResultCode(Integer.valueOf(code));
+                    }
+                }
+                request.setAttribute(Constant.ACCESSLOG_MG_RESPONSE_CODE_KEY,Constant.CHANNEL_LOG_SUCCESS_CODE);
+            }
+            //日志记录通道查询参数
+            if(customBody != null){
+                try {
+                    request.setAttribute(Constant.CHANNEL_LOG_QUERY,Base64.encodeBase64String(customBody.getBytes("utf-8")));
+                } catch (UnsupportedEncodingException e) {
+                    ExceptionUtils.handleThrowable(e);
+                    log.error("异常信息:{}",e);
+                }
+            }
+
+            request.setAttribute(Constant.ACCESSLOG_MG_ISCHARGE_KEY,responseObject.getIsCharge());
+
+            return responseObject;
+        }catch(Exception ex){
+            ErrorUtils.captureException(ex);
+            log.error("message:{}",ex);
+            return responseObject;
+        }
+    }
 }

+ 11 - 0
src/main/java/info/aspirecn/rdc/iov/sjjh/servicenode/supplier/service/WycChannelService.java

@@ -74,4 +74,15 @@ public interface WycChannelService {
 	 */
 	ChannelTypeHandleResponseObject WycInfoDecodeRequestV2(
             HttpServletRequest request, String channelId, Integer outTime, String customBody, String encryptType);
+
+	/**
+	 * 从业车辆画像查询-定制版
+	 * @param request
+	 * @param channelId
+	 * @param outTime
+	 * @param customBody 入参:车牌号,vin, 业务类型,公司名称
+	 * @return 从业年限,总公里数,半年公里数
+	 */
+	ChannelTypeHandleResponseObject vehicleInfoQueryV2(
+			HttpServletRequest request, String channelId, Integer outTime, String customBody);
 }

+ 64 - 3
src/main/java/info/aspirecn/rdc/iov/sjjh/servicenode/supplier/service/impl/WycChannelServiceImpl.java

@@ -2,12 +2,12 @@ package info.aspirecn.rdc.iov.sjjh.servicenode.supplier.service.impl;
 
 import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson.JSONObject;
+import com.fasterxml.jackson.core.JsonProcessingException;
 import com.fasterxml.jackson.databind.ObjectMapper;
 import info.aspirecn.iov.sjjh.commons.lang.ChannelTypeHandleResponseObject;
 import info.aspirecn.iov.sjjh.commons.lang.Constant;
 import info.aspirecn.iov.sjjh.commons.lang.PatternTools;
 import info.aspirecn.iov.sjjh.service.sms.action.SmsActionInterface;
-import info.aspirecn.iov.sjjh.service.sms.vo.RequestSmsObject;
 import info.aspirecn.rdc.aspirecloud.node.except.utils.ErrorUtils;
 import info.aspirecn.rdc.iov.sjjh.servicenode.supplier.constant.ChannelConstant;
 import info.aspirecn.rdc.iov.sjjh.servicenode.supplier.service.WycChannelService;
@@ -18,7 +18,6 @@ import lombok.extern.slf4j.Slf4j;
 import okhttp3.*;
 import org.apache.commons.lang3.ArrayUtils;
 import org.apache.commons.lang3.StringUtils;
-import org.omg.CORBA.Current;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Value;
 import org.springframework.data.redis.core.StringRedisTemplate;
@@ -821,7 +820,6 @@ public class WycChannelServiceImpl implements WycChannelService {
             Response response = client.newCall(builder.build()).execute();
             String responseContext = response.body().string();
             log.info("supplier10000036.vehicleInfoQuery接口responseContext={}",responseContext);
-
             WycInfoResponseObject responseObject = objectMapper.readValue(responseContext, WycInfoResponseObject.class);
 
             if (responseObject != null) {
@@ -1123,4 +1121,67 @@ public class WycChannelServiceImpl implements WycChannelService {
             return true;
         }
     }
+
+    @Override
+    public ChannelTypeHandleResponseObject vehicleInfoQueryV2(HttpServletRequest request, String channelId, Integer outTime, String customBody) {
+        ChannelTypeHandleResponseObject ret = new ChannelTypeHandleResponseObject();
+        ret.setIsCharge(Constant.INTERFACE_QUERY_NO_FEE);
+        String upstreamCode = Constant.LOG_UPSTREAM_DEFAULT_RESPONSE_CODE;
+        String returnType = request.getHeader(Constant.CUSTOMER_RETURN_TYPE_PARA);
+
+        if (StringUtils.isBlank(returnType)) {
+            returnType = Constant.CUSTOMER_RETURN_ZW;
+        }
+        if (outTime <= 0) {
+            outTime = Constant.HTTPCLIENT_CONNECTTIMEOUT;
+        }
+
+        log.info("vehicleInfoQueryV2---customBody={},outTime={}", customBody, outTime);
+        VehicleInfoQueryV2RequestObject jsonResolveObject = new VehicleInfoQueryV2RequestObject();
+
+        try {
+            jsonResolveObject = objectMapper.readValue(customBody,
+                    VehicleInfoQueryV2RequestObject.class);
+        } catch (JsonProcessingException ex) {
+            ErrorUtils.captureException(ex);
+            log.info("supplier10000036.vehicleInfoQueryV2接口Exception={}", ex);
+            ret.setCode(Constant.FAIL);
+        }
+        // 参数校验
+        if (!validateRequestParams(ret, returnType, jsonResolveObject)
+                || !validateVehicleInfoRequestParams(ret, returnType, jsonResolveObject)) {
+            ret.setCode(Constant.SUCCESS);
+            request.setAttribute(Constant.LOG_UPSTREAM_RESPONSE_CODE, upstreamCode);
+            return ret;
+        }
+        ret = vehicleInfoQuery(request, channelId, outTime, customBody);
+        if (ret.getResultCode() == Constant.MATCH_CODE) {
+            JSONObject resultBody = JSON.parseObject((String) ret.getResultBody());
+            VehicleInfoQueryV2ResponseObject responseObject = new VehicleInfoQueryV2ResponseObject();
+            responseObject.setEarliestOrderMonth(resultBody.getString("earliestOrderMonth"));
+            responseObject.setTotalMile(resultBody.getString("totalMile"));
+            responseObject.setHalfYearMile(resultBody.getString("mile6"));
+            ret.setResultBody(responseObject);
+        }
+        //上游返回码
+        return ret;
+    }
+
+    private boolean validateVehicleInfoRequestParams(ChannelTypeHandleResponseObject ret, String returnType,
+                                          VehicleInfoQueryV2RequestObject jsonResolveObject) {
+        if (StringUtils.isBlank(jsonResolveObject.getVin())
+                || StringUtils.isBlank(jsonResolveObject.getBusinessType())
+                || StringUtils.isBlank(jsonResolveObject.getCompanyName())) {
+            if (Constant.CUSTOMER_RETURN_ZW.equals(returnType)) {
+                ret.setResultCode(Constant.INVALID_PARAMETER_CODE);
+            } else {
+                ret.setResultCode(Constant.JK_RETURN_CODE_INVALID_PARAMETER);
+            }
+            ret.setResultDesc(Constant.INVALID_PARAMETER);
+            ret.setResultBody(Constant.INVALID_PARAMETER);
+            return false;
+        } else {
+            return true;
+        }
+    }
 }

+ 4 - 0
src/main/java/info/aspirecn/rdc/iov/sjjh/servicenode/supplier/utils/DESedeUtil.java

@@ -104,4 +104,8 @@ public class DESedeUtil {
         return (byte) "0123456789ABCDEF".indexOf(c);
     }
 
+    public static void main(String[] args) {
+        String src = "{\"name\":\"宋海平\",\"idCode\":\"310228198302262214\",\"month\":\"1\"}";
+        System.out.println(encryptMode(src, "JK568FG2823"));;
+    }
 }

+ 28 - 0
src/main/java/info/aspirecn/rdc/iov/sjjh/servicenode/supplier/vo/VehicleInfoQueryV2RequestObject.java

@@ -0,0 +1,28 @@
+package info.aspirecn.rdc.iov.sjjh.servicenode.supplier.vo;
+
+import lombok.Data;
+import lombok.ToString;
+
+import javax.validation.constraints.NotNull;
+import java.io.Serializable;
+
+/**
+ * @description:
+ * @author: xusonglin
+ * @create: 2020/10/19 14:32
+ * @version: V1.0
+ **/
+@Data
+@ToString
+public class VehicleInfoQueryV2RequestObject extends VehicleInfoQueryRequestObject implements Serializable {
+    private static final long serialVersionUID = -4647203384196833437L;
+
+    @NotNull(message = "参数名错误")
+    private String vin;
+
+    @NotNull(message = "参数名错误")
+    private String businessType;
+
+    @NotNull(message = "参数名错误")
+    private String companyName;
+}

+ 26 - 0
src/main/java/info/aspirecn/rdc/iov/sjjh/servicenode/supplier/vo/VehicleInfoQueryV2ResponseObject.java

@@ -0,0 +1,26 @@
+package info.aspirecn.rdc.iov.sjjh.servicenode.supplier.vo;
+
+import lombok.Data;
+import lombok.ToString;
+
+import java.io.Serializable;
+
+/**
+ * @author xusonglin
+ * @version V1.0
+ **/
+@Data
+@ToString
+public class VehicleInfoQueryV2ResponseObject implements Serializable {
+
+    private static final long serialVersionUID = -1998931058291445554L;
+
+    // 车辆从事年限
+    private String earliestOrderMonth;
+
+    // 总公里数
+    private String totalMile;
+
+    // 近半年公里数
+    private String halfYearMile;
+}

+ 1 - 1
src/main/resources/config/application-test.yml

@@ -41,7 +41,7 @@ management:
 
 #logging
 logging:
-  path: /apps/var/jakarta/logs
+  path: /Users/jkxy/root-logs/apps/var/jakarta/logs
   level:
     root: INFO
     red: