From cfe24a40c73e5d7555f22536aa287adf9fb578c2 Mon Sep 17 00:00:00 2001 From: xiatian Date: Wed, 15 Feb 2023 11:03:43 +0800 Subject: [PATCH] 调整车辆认证逻辑 --- fw-valhalla-common/src/main/java/cn/fw/valhalla/common/utils/DateUtil.java | 13 +++++++++++++ fw-valhalla-domain/src/main/java/cn/fw/valhalla/domain/dto/NewVehicleDTO.java | 3 ++- fw-valhalla-sdk/src/main/java/cn/fw/valhalla/sdk/enums/CarUseTypeEnum.java | 16 ++++++++++++++++ fw-valhalla-server/src/main/java/cn/fw/valhalla/controller/wx/VehicleWxController.java | 17 ----------------- fw-valhalla-service/pom.xml | 4 ++++ fw-valhalla-service/src/main/java/cn/fw/valhalla/component/AuthVehicleConsumer.java | 123 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ pom.xml | 6 ++++++ 7 files changed, 164 insertions(+), 18 deletions(-) create mode 100644 fw-valhalla-service/src/main/java/cn/fw/valhalla/component/AuthVehicleConsumer.java diff --git a/fw-valhalla-common/src/main/java/cn/fw/valhalla/common/utils/DateUtil.java b/fw-valhalla-common/src/main/java/cn/fw/valhalla/common/utils/DateUtil.java index 10b99fd..edbc350 100644 --- a/fw-valhalla-common/src/main/java/cn/fw/valhalla/common/utils/DateUtil.java +++ b/fw-valhalla-common/src/main/java/cn/fw/valhalla/common/utils/DateUtil.java @@ -22,6 +22,8 @@ public final class DateUtil { static SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); + static SimpleDateFormat sdf1 = new SimpleDateFormat("yyyyMMdd"); + /** * 默认构造器 */ @@ -39,6 +41,17 @@ public final class DateUtil { return null; } + + public static Date parse1(String date){ + try { + return sdf1.parse(date); + } catch (Exception e) { + e.printStackTrace(); + } + return null; + } + + /** * 开始日期处理 */ diff --git a/fw-valhalla-domain/src/main/java/cn/fw/valhalla/domain/dto/NewVehicleDTO.java b/fw-valhalla-domain/src/main/java/cn/fw/valhalla/domain/dto/NewVehicleDTO.java index 2836de9..8c0f18a 100644 --- a/fw-valhalla-domain/src/main/java/cn/fw/valhalla/domain/dto/NewVehicleDTO.java +++ b/fw-valhalla-domain/src/main/java/cn/fw/valhalla/domain/dto/NewVehicleDTO.java @@ -1,6 +1,7 @@ package cn.fw.valhalla.domain.dto; import cn.fw.common.validator.Vin; +import cn.fw.valhalla.domain.vo.customer.VehicleRecordVO; import lombok.Data; import lombok.ToString; @@ -72,7 +73,7 @@ public class NewVehicleDTO { */ private Long memberId; /** - * + * 会员名称 */ private String memberName; } diff --git a/fw-valhalla-sdk/src/main/java/cn/fw/valhalla/sdk/enums/CarUseTypeEnum.java b/fw-valhalla-sdk/src/main/java/cn/fw/valhalla/sdk/enums/CarUseTypeEnum.java index 5efbb15..885391f 100644 --- a/fw-valhalla-sdk/src/main/java/cn/fw/valhalla/sdk/enums/CarUseTypeEnum.java +++ b/fw-valhalla-sdk/src/main/java/cn/fw/valhalla/sdk/enums/CarUseTypeEnum.java @@ -49,6 +49,22 @@ public enum CarUseTypeEnum implements IEnum { return null; } + /** + * 根据枚举中文名字获取枚举对象 + * + * @param name 名字 + * @return 枚举对象 + */ + public static CarUseTypeEnum ofName(final String name) { + for (final CarUseTypeEnum typeEnum : CarUseTypeEnum.values()) { + if (typeEnum.value.equals(name)) { + return typeEnum; + } + } + return null; + } + + @Override @JsonValue public Integer getValue() { diff --git a/fw-valhalla-server/src/main/java/cn/fw/valhalla/controller/wx/VehicleWxController.java b/fw-valhalla-server/src/main/java/cn/fw/valhalla/controller/wx/VehicleWxController.java index 9f27b7a..2057180 100644 --- a/fw-valhalla-server/src/main/java/cn/fw/valhalla/controller/wx/VehicleWxController.java +++ b/fw-valhalla-server/src/main/java/cn/fw/valhalla/controller/wx/VehicleWxController.java @@ -51,21 +51,4 @@ public class VehicleWxController { return success(memberVehicleBizService.getVehicleList(user.getUserId())); } - /** - * 新增变更档案 - * - * @param user - * @param dto - * @return - */ - @RepeatSubmit - @PostMapping("/save") - @ControllerMethod("新增认证车辆") - public Message saveVehicle(@CurrentUser PassportAuthBean user, - @Validated @RequestBody final NewVehicleDTO dto) { - dto.setMemberId(user.getUserId()); - memberVehicleBizService.saveVehicle(dto); - return success(); - } - } diff --git a/fw-valhalla-service/pom.xml b/fw-valhalla-service/pom.xml index 698b9b7..972e29a 100644 --- a/fw-valhalla-service/pom.xml +++ b/fw-valhalla-service/pom.xml @@ -124,6 +124,10 @@ cn.fw fw-dfs-sdk + + cn.fw + fw-identify-sdk + diff --git a/fw-valhalla-service/src/main/java/cn/fw/valhalla/component/AuthVehicleConsumer.java b/fw-valhalla-service/src/main/java/cn/fw/valhalla/component/AuthVehicleConsumer.java new file mode 100644 index 0000000..fd21cb3 --- /dev/null +++ b/fw-valhalla-service/src/main/java/cn/fw/valhalla/component/AuthVehicleConsumer.java @@ -0,0 +1,123 @@ +package cn.fw.valhalla.component; + +import cn.fw.identify.sdk.api.mq.AuthDataEvent; +import cn.fw.valhalla.common.utils.*; +import cn.fw.valhalla.domain.dto.NewVehicleDTO; +import cn.fw.valhalla.rpc.member.MemberRpcService; +import cn.fw.valhalla.rpc.member.dto.MemberUserDTO; +import cn.fw.valhalla.sdk.enums.CarUseTypeEnum; +import cn.fw.valhalla.service.bus.cust.MemberVehicleBizService; +import com.alibaba.fastjson.JSON; +import lombok.Data; +import lombok.extern.slf4j.Slf4j; +import org.apache.rocketmq.spring.annotation.RocketMQMessageListener; +import org.apache.rocketmq.spring.core.RocketMQListener; +import org.springframework.stereotype.Component; + +import java.util.Date; +import java.util.Objects; + + +/** + * 监听认证mq + * @author xiatian + */ +@Slf4j +@Component +@RocketMQMessageListener(topic = "auth_data_event", consumerGroup = "${spring.application.name}" + "-auth_data_event") +public class AuthVehicleConsumer implements RocketMQListener { + + private MemberRpcService memberRpcService; + + private MemberVehicleBizService memberVehicleBizService; + + public AuthVehicleConsumer(final MemberRpcService memberRpcService, final MemberVehicleBizService memberVehicleBizService) { + this.memberRpcService = memberRpcService; + this.memberVehicleBizService = memberVehicleBizService; + } + + @Override + public void onMessage(AuthDataEvent t) { + log.info("监听认证mq: AuthDataEvent=[{}]", t); + try { + String identifyCode = "NS9k"; + if(identifyCode.equals(t.getIdentifyCode())){ + return; + } + if(StringUtils.isEmpty(t.getVin())){ + log.error("认证mq的vin为空"); + } + //保存车辆认证信息 + memberVehicleBizService.saveVehicle(with(JSON.parseObject(t.getExtraData(),VehicleData.class),t)); + } catch (Exception ex) { + log.error("消费关注公众号mq失败,原因:{}", JSON.toJSONString(ex)); + } + } + + @Data + private static class VehicleData{ + private String plateNum; + + private String vehicleType; + + private String owner; + + private String addr; + + private String useCharacter; + + private String model; + + private String vin; + + private String engineNum; + + private String registerDate; + + private String issueDate; + + private String fileNo; + + private String approvedPassengerCapacity; + + private String grossMass; + + private String unladenMass; + + private String approvedLoad; + + private String overallDimension; + + private String tractionMass; + + private String inspectionRecord; + } + + private NewVehicleDTO with(VehicleData vehicleData,AuthDataEvent t){ + MemberUserDTO member = memberRpcService.user(t.getMemberId()); + String brandName = StringUtils.matchFirst(vehicleData.getModel(),"[\\u4e00-\\u9fa5]+",0); + if(Objects.isNull(brandName)){ + log.error("未匹配行驶证品牌"); + return null; + } + CarUseTypeEnum useType = CarUseTypeEnum.ofName(vehicleData.getUseCharacter()); + if(Objects.isNull(useType)){ + log.error("未匹配行驶证使用性质"); + return null; + } + Date regDate = DateUtil.parse1(vehicleData.registerDate); + NewVehicleDTO newVehicle = new NewVehicleDTO(); + newVehicle.setMemberId(t.getMemberId()); + newVehicle.setMemberName(Objects.nonNull(member) ? member.getRealName() : null); + newVehicle.setUseType(useType.getValue()); + newVehicle.setCusType(t.getVehicleType()); + newVehicle.setBrandName(brandName); + newVehicle.setEngineNo(vehicleData.getEngineNum()); + newVehicle.setPlateNo(vehicleData.getPlateNum()); + newVehicle.setFrameNo(vehicleData.getVin()); + newVehicle.setName(vehicleData.getOwner()); + newVehicle.setRegDate(regDate); + newVehicle.setSpecCode(vehicleData.getModel().replace(brandName,"")); + return newVehicle; + } +} \ No newline at end of file diff --git a/pom.xml b/pom.xml index 32671a9..7e08b8b 100644 --- a/pom.xml +++ b/pom.xml @@ -62,6 +62,7 @@ 1.0.0 1.0.0 1.0.2 + 1.0.0 @@ -274,6 +275,11 @@ fw-backlog-sdk ${fw.backlog.sdk} + + cn.fw + fw-identify-sdk + ${fw-identify-sdk.version} + -- libgit2 0.22.2