Procházet zdrojové kódy

协议修改接口查询

785834757 před 2 roky
rodič
revize
03bb42d57c

+ 31 - 0
src/main/java/com/ydtech/modules/order/constants/OrderCacheConstant.java

@@ -32,6 +32,37 @@ public class OrderCacheConstant {
      */
     public static final long QUOTE_RULES_KEY_TIME = 1L;
 
+    /**
+     * VIN查询Key
+     */
+    public static final String VIN_SEARCH_KEY = "vin:search:";
+
+    /**
+     * 品牌型号查询Key
+     */
+    public static final String BRAND_MODEL_KEY = "brand:model:";
+
+    /**
+     * VIN查询Key存储时间 单位(小时)
+     */
+    public static final long VIN_SEARCH_KEY_TIME = 1L;
+
+    /**
+     * 永城意外险存储时间
+     */
+    public static final long YC_ACCIDENTAL_DRIVING_TIME = 1L;
+
+
+    /**
+     * 永城协议存储key
+     */
+    public static final String YC_AGREEMENT_KEY = "yc:agreement:";
+
+    /**
+     * 永城协议详情存储key
+     */
+    public static final String YC_AGREEMENT_INFO_KEY = "yc:agreement:info:";
+
 
     /**
      * 紫金财险 为接入方提供获取token

+ 11 - 10
src/main/java/com/ydtech/modules/order/controller/YongChengOrderApiController.java

@@ -114,11 +114,11 @@ public class YongChengOrderApiController {
     @ApiOperation(value = "永诚API方式 -意外险列表")
     @PostMapping("/gainAccidentList")
     public HttpResult<List<EsmInsAttachInsure>> gainAccidentList(@RequestBody @Valid AccidentalDrivingQueryVo accidentalDrivingVo) {
-        LambdaQueryWrapper<EsmInsAttachInsure> lqw = new LambdaQueryWrapper<EsmInsAttachInsure>();
-        lqw.eq(EsmInsAttachInsure::getCompanyId, accidentalDrivingVo.getCompanyCode());
-        lqw.eq(accidentalDrivingVo.getSeatNum() > 0, EsmInsAttachInsure::getSeating, accidentalDrivingVo.getSeatNum());
-        List<EsmInsAttachInsure> eiaiList = esmInsAttachInsureMapper.selectList(lqw);
-        return HttpResult.ok(eiaiList);
+//        LambdaQueryWrapper<EsmInsAttachInsure> lqw = new LambdaQueryWrapper<EsmInsAttachInsure>();
+//        lqw.eq(EsmInsAttachInsure::getCompanyId, accidentalDrivingVo.getCompanyCode());
+//        lqw.eq(accidentalDrivingVo.getSeatNum() > 0, EsmInsAttachInsure::getSeating, accidentalDrivingVo.getSeatNum());
+//        List<EsmInsAttachInsure> eiaiList = esmInsAttachInsureMapper.selectList(lqw);
+        return yongchengOrderApiService.accidentQuery(accidentalDrivingVo);
     }
 
     /**
@@ -129,11 +129,12 @@ public class YongChengOrderApiController {
     @ApiImplicitParams({
             @ApiImplicitParam(name = "accidentId", value = "意外险ID", required = true, paramType = "body")
     })
-    public HttpResult<List<EsmInsAttachInsureDetails>> gainAccidentSchemeList(@RequestSingleParam(value = "accidentId") String accidentId) {
-        LambdaQueryWrapper<EsmInsAttachInsureDetails> lqw = new LambdaQueryWrapper<>();
-        lqw.eq(EsmInsAttachInsureDetails::getAttachInsureId, accidentId);
-        List<EsmInsAttachInsureDetails> list = esmInsAttachInsureDetailsMapper.selectList(lqw);
-        return HttpResult.ok(list);
+    public HttpResult<List<EsmInsAttachInsureDetails>> gainAccidentSchemeList(@RequestBody @Valid AccidentalDrivingQueryVo accidentalDrivingVo) {
+//        LambdaQueryWrapper<EsmInsAttachInsureDetails> lqw = new LambdaQueryWrapper<>();
+//        lqw.eq(EsmInsAttachInsureDetails::getAttachInsureId, accidentId);
+//        List<EsmInsAttachInsureDetails> list = esmInsAttachInsureDetailsMapper.selectList(lqw);
+
+        return yongchengOrderApiService.accidentSchemeList(accidentalDrivingVo);
     }
 
 

+ 4 - 0
src/main/java/com/ydtech/modules/order/entity/vo/AccidentalDrivingQueryVo.java

@@ -4,6 +4,7 @@ import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
 
+import javax.validation.constraints.Min;
 import javax.validation.constraints.NotEmpty;
 import javax.validation.constraints.NotNull;
 import java.io.Serializable;
@@ -27,5 +28,8 @@ public class AccidentalDrivingQueryVo implements Serializable {
     @ApiModelProperty(value = "协议ID")
     private String agreementId;
 
+    @ApiModelProperty(value = "方案号")
+    private String code;
+
 
 }

+ 13 - 0
src/main/java/com/ydtech/modules/order/service/YongchengOrderApiService.java

@@ -2,7 +2,9 @@ package com.ydtech.modules.order.service;
 
 import com.fasterxml.jackson.core.JsonProcessingException;
 import com.ydtech.core.page.HttpResult;
+import com.ydtech.modules.esm.model.EsmInsAttachInsure;
 import com.ydtech.modules.ins.model.yc.CallBackRequest;
+import com.ydtech.modules.ins.model.yc.accident.response.ResponseYwCvrg;
 import com.ydtech.modules.ins.model.yc.pay.response.AccidentResponse;
 import com.ydtech.modules.order.entity.InsAreaCompany;
 import com.ydtech.modules.order.entity.vo.AccidentalDrivingQueryVo;
@@ -10,6 +12,7 @@ import com.ydtech.modules.order.entity.vo.AccidentalDrivingVo;
 import com.ydtech.modules.order.entity.vo.BaseQuoteVo;
 import com.ydtech.modules.order.entity.vo.PolicyPrintVo;
 
+import java.util.List;
 import java.util.Map;
 
 public interface YongchengOrderApiService {
@@ -55,6 +58,16 @@ public interface YongchengOrderApiService {
      */
     HttpResult gainAccidentList(AccidentalDrivingQueryVo accidentalDrivingVo);
 
+    /**
+     * 驾意险查询接口
+     */
+    HttpResult accidentQuery(AccidentalDrivingQueryVo accidentalDrivingVo);
+
+    /**
+     * 驾意险查询详情接口
+     */
+    HttpResult accidentSchemeList(AccidentalDrivingQueryVo accidentalDrivingVo);
+
     /**
      * (驾意险)同步驾意险
      */

+ 11 - 4
src/main/java/com/ydtech/modules/order/service/impl/CarModelServiceImpl.java

@@ -17,6 +17,9 @@ import java.util.List;
 import java.util.Objects;
 import java.util.concurrent.TimeUnit;
 
+import static com.ydtech.modules.order.constants.OrderCacheConstant.VIN_SEARCH_KEY;
+import static com.ydtech.modules.order.constants.OrderCacheConstant.VIN_SEARCH_KEY_TIME;
+
 @Service
 public class CarModelServiceImpl implements CarModelService {
 
@@ -37,9 +40,13 @@ public class CarModelServiceImpl implements CarModelService {
 
     @Override
     public HttpResult<List<CarModelDTO>> vinSearch(String frameNo) {
+        //初始Key
+        StringBuilder redisKey = new StringBuilder();
+        redisKey.append(VIN_SEARCH_KEY);
+        redisKey.append(frameNo);
         //从缓存中查数据
-        if(!Objects.isNull(redisTemplate.opsForValue().get(frameNo))){
-            String carModeStr = redisTemplate.opsForValue().get(frameNo);
+        if(!Objects.isNull(redisTemplate.opsForValue().get(redisKey.toString()))){
+            String carModeStr = redisTemplate.opsForValue().get(redisKey.toString());
             List<CarModelDTO> carModelDTOS = JSON.parseArray(carModeStr, CarModelDTO.class);
             return HttpResult.ok(carModelDTOS);
         }
@@ -48,14 +55,14 @@ public class CarModelServiceImpl implements CarModelService {
         List<CarModelDTO> carModelDTOS = insOrdersService.vinSearch(frameNo);
         if (!carModelDTOS.isEmpty()) {
             //进行缓存存储
-            redisTemplate.opsForValue().set(frameNo,JSON.toJSONString(carModelDTOS),1, TimeUnit.HOURS);
+            redisTemplate.opsForValue().set(redisKey.toString(),JSON.toJSONString(carModelDTOS),VIN_SEARCH_KEY_TIME, TimeUnit.HOURS);
             return HttpResult.ok(carModelDTOS);
         }
 
         List<CarModelDTO> carModelDTOS1 = zhongMeiOrderService.vinSearch(frameNo);
         if (!carModelDTOS1.isEmpty()) {
             //进行缓存存储
-            redisTemplate.opsForValue().set(frameNo,JSON.toJSONString(carModelDTOS1),1, TimeUnit.HOURS);
+            redisTemplate.opsForValue().set(redisKey.toString(),JSON.toJSONString(carModelDTOS1),1, TimeUnit.HOURS);
             return HttpResult.ok(carModelDTOS1);
         }
 //        List<CarModelDTO> carModelDTOS2 = yongAnOrderService.vinSearch(frameNo);

+ 100 - 0
src/main/java/com/ydtech/modules/order/service/impl/YongchengOrderApiServiceImpl.java

@@ -75,6 +75,7 @@ import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Value;
+import org.springframework.data.redis.core.RedisTemplate;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
@@ -83,9 +84,12 @@ import java.math.BigDecimal;
 import java.time.LocalDate;
 import java.time.LocalDateTime;
 import java.util.*;
+import java.util.concurrent.TimeUnit;
 import java.util.concurrent.atomic.AtomicInteger;
 import java.util.stream.Collectors;
 
+import static com.ydtech.modules.order.constants.OrderCacheConstant.*;
+
 
 @Service
 public class YongchengOrderApiServiceImpl implements YongchengOrderApiService {
@@ -101,6 +105,9 @@ public class YongchengOrderApiServiceImpl implements YongchengOrderApiService {
     @Autowired
     private InsOrdersComponents insOrdersComponents;
 
+    @Autowired
+    private RedisTemplate redisTemplate;
+
     //请求信息列表
     List<String> requestInfoList = new ArrayList<>();
 
@@ -851,6 +858,98 @@ public class YongchengOrderApiServiceImpl implements YongchengOrderApiService {
         return httpResult;
     }
 
+    /**
+     * 驾意外险 查询
+     */
+    @Override
+    public HttpResult accidentQuery(AccidentalDrivingQueryVo accidentalDrivingVo){
+        //初始化redisKey
+        StringBuilder redisKey = new StringBuilder();
+        redisKey.append(YC_AGREEMENT_KEY);
+        redisKey.append(accidentalDrivingVo.getCompanyCode());
+        redisKey.append(accidentalDrivingVo.getSeatNum());
+
+        //查询redis
+        if(!Objects.isNull(redisTemplate.opsForValue().get(redisKey.toString()))){
+            String redisValue = String.valueOf(redisTemplate.opsForValue().get(redisKey.toString()));
+            if(StringUtils.isNotEmpty(redisValue)){
+                List<EsmInsAttachInsure> esmInsAttachInsureList = JSON.parseArray(redisValue,EsmInsAttachInsure.class);
+                return HttpResult.ok(esmInsAttachInsureList);
+            }
+        }
+
+
+
+        //查询接口
+        List<EsmInsAttachInsure> insAttachInsureList = new ArrayList<>();
+        AccidentResponse ar = gainAccidentInsure(accidentalDrivingVo, null);
+        if(ar.getHead().getResponseCompleteMessageStatus().getMessageStatusCode().equals("E0000")){
+            List<ResponseYwCvrg.CvrgList> cList = ar.getResponseYwCvrg().getCvrgList();
+            cList.forEach(item->{
+                EsmInsAttachInsure ati = new EsmInsAttachInsure();
+                ati.setCode(item.getCInsuranceTypeCode());
+                ati.setName(item.getCInsuranceType());
+                ati.setSeating(accidentalDrivingVo.getSeatNum() + "");
+                ati.setCompanyId(accidentalDrivingVo.getCompanyCode());
+                ati.setType(AttachInsureEnum.AI001.getCode());
+                ati.setEnable(WhetherEnum.YES.getCode());
+                ati.setRestrictNum(StringUtils.toInt(item.getNPurchaseLimitsNum()));
+                insAttachInsureList.add(ati);
+            });
+        }
+
+        //将insAttachInsureList存入redis
+        if(!insAttachInsureList.isEmpty()){
+            redisTemplate.opsForValue().set(redisKey.toString(),JSON.toJSONString(insAttachInsureList),YC_ACCIDENTAL_DRIVING_TIME, TimeUnit.DAYS);
+        }
+
+        return HttpResult.ok(insAttachInsureList);
+    }
+
+    /**
+     * 驾意外险详情 查询
+     */
+    @Override
+    public HttpResult accidentSchemeList(AccidentalDrivingQueryVo accidentalDrivingVo){
+        //初始化redisKey
+        StringBuilder redisKey = new StringBuilder();
+        redisKey.append(YC_AGREEMENT_INFO_KEY);
+        redisKey.append(accidentalDrivingVo.getCompanyCode());
+        redisKey.append(accidentalDrivingVo.getSeatNum());
+        redisKey.append(accidentalDrivingVo.getCompanyCode());
+
+        //查询redis
+        if(!Objects.isNull(redisTemplate.opsForValue().get(redisKey.toString()))){
+            String redisValue = String.valueOf(redisTemplate.opsForValue().get(redisKey.toString()));
+            if(StringUtils.isNotEmpty(redisValue)){
+                List<EsmInsAttachInsureDetails> esmInsAttachInsureDetails = JSON.parseArray(redisValue,EsmInsAttachInsureDetails.class);
+                return HttpResult.ok(esmInsAttachInsureDetails);
+            }
+        }
+
+        //查询接口
+        AccidentResponse arCode = gainAccidentInsure(accidentalDrivingVo, accidentalDrivingVo.getCode());
+        List<EsmInsAttachInsureDetails> esmInsAttachInsureDetails = new ArrayList<>();
+        if (arCode.getHead().getResponseCompleteMessageStatus().getMessageStatusCode().equals("E0000")) {
+            List<ResponseYwCvrg.CvrgList> cListDetails = arCode.getResponseYwCvrg().getCvrgList();
+            cListDetails.stream().forEach(d -> {
+
+                EsmInsAttachInsureDetails atiDetails = new EsmInsAttachInsureDetails();
+                atiDetails.setName(d.getCInsuranceLiability());
+                atiDetails.setCarSum(d.getNInsuranceAmountCar());
+                atiDetails.setSeatSum(d.getNInsuranceAmountSeat());
+                atiDetails.setPremium(d.getNLiabilityPremium());
+                esmInsAttachInsureDetails.add(atiDetails);
+            });
+        }
+
+        //将esmInsAttachInsureDetails存入redis
+        if(!esmInsAttachInsureDetails.isEmpty()){
+            redisTemplate.opsForValue().set(redisKey.toString(),JSON.toJSONString(esmInsAttachInsureDetails),YC_ACCIDENTAL_DRIVING_TIME, TimeUnit.DAYS);
+        }
+        return HttpResult.ok(esmInsAttachInsureDetails);
+    }
+
 
     /**
      * 驾意外险  同步
@@ -1333,6 +1432,7 @@ public class YongchengOrderApiServiceImpl implements YongchengOrderApiService {
         return ycConfigureParameters;
     }
 
+
     /**
      * 获取车险保单
      *

+ 9 - 3
src/main/java/com/ydtech/modules/order/service/impl/ZhongMeiOrderApiServiceImpl.java

@@ -54,6 +54,8 @@ import java.util.*;
 import java.util.concurrent.TimeUnit;
 import java.util.stream.Collectors;
 
+import static com.ydtech.modules.order.constants.OrderCacheConstant.*;
+
 @Service
 @Slf4j
 public class ZhongMeiOrderApiServiceImpl implements ZhongMeiOrderApiService {
@@ -136,9 +138,13 @@ public class ZhongMeiOrderApiServiceImpl implements ZhongMeiOrderApiService {
 
     @Override
     public HttpResult<List<CarModelDTO>> modelsQuery(String modelName) {
+        //初始Key
+        StringBuilder redisKey = new StringBuilder();
+        redisKey.append(BRAND_MODEL_KEY);
+        redisKey.append(modelName);
         //从缓存中查数据
-        if(!Objects.isNull(redisTemplate.opsForValue().get(modelName))){
-            String carModeStr = redisTemplate.opsForValue().get(modelName);
+        if(!Objects.isNull(redisTemplate.opsForValue().get(modelName.toString()))){
+            String carModeStr = redisTemplate.opsForValue().get(modelName.toString());
             List<CarModelDTO> carModelDTOS = JSON.parseArray(carModeStr, CarModelDTO.class);
             return HttpResult.ok(carModelDTOS);
         }
@@ -151,7 +157,7 @@ public class ZhongMeiOrderApiServiceImpl implements ZhongMeiOrderApiService {
         List<CarModelDTO> map = SimpleStadarCarDTOConvert.INSTANCE.map(car);
         //数据存储到缓存中
         if(map.size() > 0){
-            redisTemplate.opsForValue().set(modelName,JSON.toJSONString(map),1, TimeUnit.HOURS);
+            redisTemplate.opsForValue().set(modelName.toString(),JSON.toJSONString(map),VIN_SEARCH_KEY_TIME, TimeUnit.HOURS);
         }
         return HttpResult.ok(map);
     }