Commit cfe24a40c73e5d7555f22536aa287adf9fb578c2

Authored by 夏天
1 parent 2fe30da1

调整车辆认证逻辑

fw-valhalla-common/src/main/java/cn/fw/valhalla/common/utils/DateUtil.java
... ... @@ -22,6 +22,8 @@ public final class DateUtil {
22 22  
23 23 static SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
24 24  
  25 + static SimpleDateFormat sdf1 = new SimpleDateFormat("yyyyMMdd");
  26 +
25 27 /**
26 28 * 默认构造器
27 29 */
... ... @@ -39,6 +41,17 @@ public final class DateUtil {
39 41 return null;
40 42 }
41 43  
  44 +
  45 + public static Date parse1(String date){
  46 + try {
  47 + return sdf1.parse(date);
  48 + } catch (Exception e) {
  49 + e.printStackTrace();
  50 + }
  51 + return null;
  52 + }
  53 +
  54 +
42 55 /**
43 56 * 开始日期处理
44 57 */
... ...
fw-valhalla-domain/src/main/java/cn/fw/valhalla/domain/dto/NewVehicleDTO.java
1 1 package cn.fw.valhalla.domain.dto;
2 2  
3 3 import cn.fw.common.validator.Vin;
  4 +import cn.fw.valhalla.domain.vo.customer.VehicleRecordVO;
4 5 import lombok.Data;
5 6 import lombok.ToString;
6 7  
... ... @@ -72,7 +73,7 @@ public class NewVehicleDTO {
72 73 */
73 74 private Long memberId;
74 75 /**
75   - *
  76 + * 会员名称
76 77 */
77 78 private String memberName;
78 79 }
... ...
fw-valhalla-sdk/src/main/java/cn/fw/valhalla/sdk/enums/CarUseTypeEnum.java
... ... @@ -49,6 +49,22 @@ public enum CarUseTypeEnum implements IEnum<Integer> {
49 49 return null;
50 50 }
51 51  
  52 + /**
  53 + * 根据枚举中文名字获取枚举对象
  54 + *
  55 + * @param name 名字
  56 + * @return 枚举对象
  57 + */
  58 + public static CarUseTypeEnum ofName(final String name) {
  59 + for (final CarUseTypeEnum typeEnum : CarUseTypeEnum.values()) {
  60 + if (typeEnum.value.equals(name)) {
  61 + return typeEnum;
  62 + }
  63 + }
  64 + return null;
  65 + }
  66 +
  67 +
52 68 @Override
53 69 @JsonValue
54 70 public Integer getValue() {
... ...
fw-valhalla-server/src/main/java/cn/fw/valhalla/controller/wx/VehicleWxController.java
... ... @@ -51,21 +51,4 @@ public class VehicleWxController {
51 51 return success(memberVehicleBizService.getVehicleList(user.getUserId()));
52 52 }
53 53  
54   - /**
55   - * 新增变更档案
56   - *
57   - * @param user
58   - * @param dto
59   - * @return
60   - */
61   - @RepeatSubmit
62   - @PostMapping("/save")
63   - @ControllerMethod("新增认证车辆")
64   - public Message<Void> saveVehicle(@CurrentUser PassportAuthBean user,
65   - @Validated @RequestBody final NewVehicleDTO dto) {
66   - dto.setMemberId(user.getUserId());
67   - memberVehicleBizService.saveVehicle(dto);
68   - return success();
69   - }
70   -
71 54 }
... ...
fw-valhalla-service/pom.xml
... ... @@ -124,6 +124,10 @@
124 124 <groupId>cn.fw</groupId>
125 125 <artifactId>fw-dfs-sdk</artifactId>
126 126 </dependency>
  127 + <dependency>
  128 + <groupId>cn.fw</groupId>
  129 + <artifactId>fw-identify-sdk</artifactId>
  130 + </dependency>
127 131 </dependencies>
128 132 <build>
129 133 <plugins>
... ...
fw-valhalla-service/src/main/java/cn/fw/valhalla/component/AuthVehicleConsumer.java 0 → 100644
  1 +package cn.fw.valhalla.component;
  2 +
  3 +import cn.fw.identify.sdk.api.mq.AuthDataEvent;
  4 +import cn.fw.valhalla.common.utils.*;
  5 +import cn.fw.valhalla.domain.dto.NewVehicleDTO;
  6 +import cn.fw.valhalla.rpc.member.MemberRpcService;
  7 +import cn.fw.valhalla.rpc.member.dto.MemberUserDTO;
  8 +import cn.fw.valhalla.sdk.enums.CarUseTypeEnum;
  9 +import cn.fw.valhalla.service.bus.cust.MemberVehicleBizService;
  10 +import com.alibaba.fastjson.JSON;
  11 +import lombok.Data;
  12 +import lombok.extern.slf4j.Slf4j;
  13 +import org.apache.rocketmq.spring.annotation.RocketMQMessageListener;
  14 +import org.apache.rocketmq.spring.core.RocketMQListener;
  15 +import org.springframework.stereotype.Component;
  16 +
  17 +import java.util.Date;
  18 +import java.util.Objects;
  19 +
  20 +
  21 +/**
  22 + * 监听认证mq
  23 + * @author xiatian
  24 + */
  25 +@Slf4j
  26 +@Component
  27 +@RocketMQMessageListener(topic = "auth_data_event", consumerGroup = "${spring.application.name}" + "-auth_data_event")
  28 +public class AuthVehicleConsumer implements RocketMQListener<AuthDataEvent> {
  29 +
  30 + private MemberRpcService memberRpcService;
  31 +
  32 + private MemberVehicleBizService memberVehicleBizService;
  33 +
  34 + public AuthVehicleConsumer(final MemberRpcService memberRpcService, final MemberVehicleBizService memberVehicleBizService) {
  35 + this.memberRpcService = memberRpcService;
  36 + this.memberVehicleBizService = memberVehicleBizService;
  37 + }
  38 +
  39 + @Override
  40 + public void onMessage(AuthDataEvent t) {
  41 + log.info("监听认证mq: AuthDataEvent=[{}]", t);
  42 + try {
  43 + String identifyCode = "NS9k";
  44 + if(identifyCode.equals(t.getIdentifyCode())){
  45 + return;
  46 + }
  47 + if(StringUtils.isEmpty(t.getVin())){
  48 + log.error("认证mq的vin为空");
  49 + }
  50 + //保存车辆认证信息
  51 + memberVehicleBizService.saveVehicle(with(JSON.parseObject(t.getExtraData(),VehicleData.class),t));
  52 + } catch (Exception ex) {
  53 + log.error("消费关注公众号mq失败,原因:{}", JSON.toJSONString(ex));
  54 + }
  55 + }
  56 +
  57 + @Data
  58 + private static class VehicleData{
  59 + private String plateNum;
  60 +
  61 + private String vehicleType;
  62 +
  63 + private String owner;
  64 +
  65 + private String addr;
  66 +
  67 + private String useCharacter;
  68 +
  69 + private String model;
  70 +
  71 + private String vin;
  72 +
  73 + private String engineNum;
  74 +
  75 + private String registerDate;
  76 +
  77 + private String issueDate;
  78 +
  79 + private String fileNo;
  80 +
  81 + private String approvedPassengerCapacity;
  82 +
  83 + private String grossMass;
  84 +
  85 + private String unladenMass;
  86 +
  87 + private String approvedLoad;
  88 +
  89 + private String overallDimension;
  90 +
  91 + private String tractionMass;
  92 +
  93 + private String inspectionRecord;
  94 + }
  95 +
  96 + private NewVehicleDTO with(VehicleData vehicleData,AuthDataEvent t){
  97 + MemberUserDTO member = memberRpcService.user(t.getMemberId());
  98 + String brandName = StringUtils.matchFirst(vehicleData.getModel(),"[\\u4e00-\\u9fa5]+",0);
  99 + if(Objects.isNull(brandName)){
  100 + log.error("未匹配行驶证品牌");
  101 + return null;
  102 + }
  103 + CarUseTypeEnum useType = CarUseTypeEnum.ofName(vehicleData.getUseCharacter());
  104 + if(Objects.isNull(useType)){
  105 + log.error("未匹配行驶证使用性质");
  106 + return null;
  107 + }
  108 + Date regDate = DateUtil.parse1(vehicleData.registerDate);
  109 + NewVehicleDTO newVehicle = new NewVehicleDTO();
  110 + newVehicle.setMemberId(t.getMemberId());
  111 + newVehicle.setMemberName(Objects.nonNull(member) ? member.getRealName() : null);
  112 + newVehicle.setUseType(useType.getValue());
  113 + newVehicle.setCusType(t.getVehicleType());
  114 + newVehicle.setBrandName(brandName);
  115 + newVehicle.setEngineNo(vehicleData.getEngineNum());
  116 + newVehicle.setPlateNo(vehicleData.getPlateNum());
  117 + newVehicle.setFrameNo(vehicleData.getVin());
  118 + newVehicle.setName(vehicleData.getOwner());
  119 + newVehicle.setRegDate(regDate);
  120 + newVehicle.setSpecCode(vehicleData.getModel().replace(brandName,""));
  121 + return newVehicle;
  122 + }
  123 +}
0 124 \ No newline at end of file
... ...
... ... @@ -62,6 +62,7 @@
62 62 <fw.hestia.sdk>1.0.0</fw.hestia.sdk>
63 63 <fw.backlog.sdk>1.0.0</fw.backlog.sdk>
64 64 <fw.shirasawa.sdk>1.0.2</fw.shirasawa.sdk>
  65 + <fw-identify-sdk.version>1.0.0</fw-identify-sdk.version>
65 66 </properties>
66 67  
67 68 <dependencyManagement>
... ... @@ -274,6 +275,11 @@
274 275 <artifactId>fw-backlog-sdk</artifactId>
275 276 <version>${fw.backlog.sdk}</version>
276 277 </dependency>
  278 + <dependency>
  279 + <groupId>cn.fw</groupId>
  280 + <artifactId>fw-identify-sdk</artifactId>
  281 + <version>${fw-identify-sdk.version}</version>
  282 + </dependency>
277 283 </dependencies>
278 284 </dependencyManagement>
279 285  
... ...