Просмотр исходного кода

添加泰康 添加 TKLoginSession

wlq 1 год назад
Родитель
Сommit
e716664c31

+ 5 - 1
tenant/insurance/quotation-taikang/src/main/java/com/jzg/quotation/taikang/client/HttpService.java

@@ -193,7 +193,11 @@ public class HttpService {
     }
 
     /**
-     * 03 包含投保地区、车牌号码前缀、证件类型
+     * 03 获取省区市区数据
+     *
+     * 包含投保地区、车牌号码前缀、证件类型
+     *
+     * 可以当前 token 校验的功能,当 token 过期时返回 status 为 0 message 为 您的登录状态已过期,请重新登录!
      *
      * @param tplatformId
      * @param orderId

+ 3 - 0
tenant/insurance/quotation-taikang/src/main/java/com/jzg/quotation/taikang/client/HttpURL.java

@@ -8,6 +8,9 @@ public interface HttpURL {
     String initBasicData = host + "/carSelfService/rest/init/basicData";
     String initQuote = host + "/carSelfService/rest/init/quote";
 
+    /**
+     * 获取省区市区数据
+     */
     String basicInfo = host + "/carSelfService/rest/init/basicInfo";
 
     /**

+ 17 - 0
tenant/insurance/quotation-taikang/src/main/java/com/jzg/quotation/taikang/model/TKLoginSession.java

@@ -0,0 +1,17 @@
+package com.jzg.quotation.taikang.model;
+
+import com.jzg.quotation.taikang.model.api.LoginResult;
+import lombok.Data;
+
+@Data
+public class TKLoginSession {
+    private String username;
+
+    private String token;
+    private String tplatformId;
+    private String tplatLoginKey;
+    private String fromid;
+
+    private LoginResult loginResult;
+
+}

+ 12 - 0
tenant/insurance/quotation-taikang/src/main/java/com/jzg/quotation/taikang/repository/TKLoginSessionRepository.java

@@ -0,0 +1,12 @@
+package com.jzg.quotation.taikang.repository;
+
+import com.jzg.quotation.taikang.model.TKLoginSession;
+import org.springframework.data.mongodb.repository.Query;
+import org.springframework.data.repository.CrudRepository;
+
+
+public interface TKLoginSessionRepository extends CrudRepository<TKLoginSession, String> {
+
+    @Query("{'username' : ?0}")
+    TKLoginSession findByUsername(String username);
+}

+ 19 - 14
tenant/insurance/quotation-taikang/src/main/java/com/jzg/quotation/taikang/service/TKQuotationBaseServiceImpl.java

@@ -11,8 +11,10 @@ import com.jzg.quotation.commons.entity.vo.quote.KindInfoVo;
 import com.jzg.quotation.commons.entity.vo.quote.RiskInfoVo;
 import com.jzg.quotation.commons.service.QuotationBaseService;
 import com.jzg.quotation.taikang.client.HttpService;
+import com.jzg.quotation.taikang.model.TKLoginSession;
 import com.jzg.quotation.taikang.model.api.*;
 import com.jzg.quotation.taikang.model.entity.*;
+import com.jzg.quotation.taikang.repository.TKLoginSessionRepository;
 import com.jzg.quotation.taikang.repository.TKPreciseInitResultRepository;
 import jakarta.annotation.Resource;
 import org.springframework.stereotype.Service;
@@ -31,6 +33,9 @@ public class TKQuotationBaseServiceImpl implements QuotationBaseService {
     @Resource
     private TKPreciseInitResultRepository preciseInitResultRepository;
 
+    @Resource
+    private TKLoginSessionRepository loginSessionRepository;
+
     private final String agentCode = "R35016546";
     private final String intermediaryName = "泰康人寿(个险)(64827)";
 
@@ -38,23 +43,23 @@ public class TKQuotationBaseServiceImpl implements QuotationBaseService {
     public QuoteResultsVo quote(QuoteVo commonQuoteVo) {
         CarInfoVo commonCarInfoVo = commonQuoteVo.getCarInfoVo();
 
-        IdentityTokenResult result1 = httpService.identityToken(null);
-
-        // 登录
-        // 先获取到一个匿名登录的 `临时token`
-        String firstToken = result1.getTkCarRequestToken();
+        String username = "Tgengchenjie";
+        String password = "Gcj123456";
 
-        LoginResult loginInfo = httpService.login("Tgengchenjie", "Gcj123456#", firstToken);
+        TKLoginSession session = tkSimpleService.login(username, password);
 
         // 全局固定参数
-        String tplatformId = loginInfo.getTplatformId();
-        String tplatLoginKey = loginInfo.getTplatLoginKey();
-        String fromId = loginInfo.getWebsysUserVo().getFromid();
+        String tplatformId = session.getTplatformId();
+        String tplatLoginKey = session.getTplatLoginKey();
+        String fromId = session.getFromid();
+
+        loginSessionRepository.save(session);
 
 
         // # 申请获取到保单唯一id,后续的所有请求都是对此保单id进行的请求
         String mainOrderId = tkSimpleService.newOrderId();
 
+
         // # 查询代理机构
         List<AgentFuzzyResult> agentFuzzyResults = httpService.agentFuzzy(tplatformId, fromId, mainOrderId, intermediaryName);
         AgentFuzzyResult agentFuzzyResult = agentFuzzyResults.get(0);
@@ -72,19 +77,19 @@ public class TKQuotationBaseServiceImpl implements QuotationBaseService {
         AreaUserResult province = areaUserResults.get(0);
 
         // # 查询车型
-        TKAreaInfoVo tkAreaInfoVo = tkSimpleService.dataCreateArea(loginInfo, mainOrderId, agentFuzzyResult, agentCode, agentQueryResult, province, commonCarInfoVo);
-        TKCarModel tkCarModel = tkSimpleService.queryCarModel(loginInfo, mainOrderId, commonCarInfoVo, tkAreaInfoVo);
+        TKAreaInfoVo tkAreaInfoVo = tkSimpleService.dataCreateArea(session, mainOrderId, agentFuzzyResult, agentCode, agentQueryResult, province, commonCarInfoVo);
+        TKCarModel tkCarModel = tkSimpleService.queryCarModel(session, mainOrderId, commonCarInfoVo, tkAreaInfoVo);
 
         // todo 暂时不知道是否需要执行 /car/modelinfo/checkVehicleType 接口
 
         // # 创建车险投保单
-        tkSimpleService.orderCreate(loginInfo, mainOrderId, tkCarModel, tkAreaInfoVo, commonCarInfoVo);
+        tkSimpleService.orderCreate(session, mainOrderId, tkCarModel, tkAreaInfoVo, commonCarInfoVo);
 
         // # 初始化车险投保单
-        PreciseInitResult preciseInitResult = tkSimpleService.orderInit(loginInfo, mainOrderId);
+        PreciseInitResult preciseInitResult = tkSimpleService.orderInit(session, mainOrderId);
 
         // # 车险投保单报价
-        preciseInitResult = tkSimpleService.orderQuote(loginInfo, mainOrderId, preciseInitResult, commonQuoteVo);
+        preciseInitResult = tkSimpleService.orderQuote(session, mainOrderId, preciseInitResult, commonQuoteVo);
 
         // 保存
         preciseInitResult.setMainOrderId(mainOrderId);

+ 54 - 29
tenant/insurance/quotation-taikang/src/main/java/com/jzg/quotation/taikang/service/TKSimpleService.java

@@ -7,6 +7,7 @@ import com.jzg.quotation.commons.entity.vo.quote.RiskInfoVo;
 import com.jzg.quotation.commons.entity.vo.quote.VehicleAndVesselTaxVo;
 import com.jzg.quotation.commons.filter.CarModelsFilterUtils;
 import com.jzg.quotation.taikang.client.HttpService;
+import com.jzg.quotation.taikang.model.TKLoginSession;
 import com.jzg.quotation.taikang.model.api.*;
 import com.jzg.quotation.taikang.model.entity.*;
 import org.apache.commons.lang3.StringUtils;
@@ -21,6 +22,30 @@ public class TKSimpleService {
 
     private HttpService httpService;
 
+    public TKLoginSession login(String username, String password) {
+        IdentityTokenResult identityTokenResult = httpService.identityToken(null);
+
+        // 登录
+        // 先获取到一个匿名登录的 `临时token`
+        String token = identityTokenResult.getTkCarRequestToken();
+
+        LoginResult loginInfo = httpService.login(username, password, token);
+
+        String tplatformId = loginInfo.getTplatformId();
+
+        identityTokenResult = httpService.identityToken(tplatformId);
+
+        token = identityTokenResult.getTkCarRequestToken();
+
+        TKLoginSession session = new TKLoginSession();
+        session.setUsername(loginInfo.getWebsysUserVo().getUsername());
+        session.setTplatformId(tplatformId);
+        session.setTplatLoginKey(loginInfo.getTplatLoginKey());
+        session.setToken(token);
+
+        return session;
+    }
+
 
     /**
      * 参考自以下 JS 代码:
@@ -208,13 +233,13 @@ public class TKSimpleService {
      * <p>
      * 注意,此逻辑仅能处理车是非上海、非验证码、非蚂蚁渠道的查询
      *
-     * @param result
+     * @param session
      * @param mainOrderId
      * @param commonCarInfoVo
      * @param area
      * @return
      */
-    public List<TKCarModel> queryCarModelsByLicenseNo(LoginResult result, String mainOrderId, CarInfoVo commonCarInfoVo, TKAreaInfoVo area) {
+    public List<TKCarModel> queryCarModelsByLicenseNo(TKLoginSession session, String mainOrderId, CarInfoVo commonCarInfoVo, TKAreaInfoVo area) {
         if (StringUtils.isBlank(commonCarInfoVo.getLicenseNo())) {
             return null;
         }
@@ -231,8 +256,8 @@ public class TKSimpleService {
         String tempOrderId = newOrderId();
 
         CarModelinfoQueryParam carModelinfoQueryParam = new CarModelinfoQueryParam();
-        carModelinfoQueryParam.setTplatformId(result.getTplatformId());
-        carModelinfoQueryParam.setFromId(result.getWebsysUserVo().getFromid());
+        carModelinfoQueryParam.setTplatformId(session.getTplatformId());
+        carModelinfoQueryParam.setFromId(session.getFromid());
         // 不知道为什么,抓包观察到每次查车型前,都要获取一个新的订单id
         carModelinfoQueryParam.setOrderID(tempOrderId);
         carModelinfoQueryParam.setOrderOldID(mainOrderId);
@@ -255,13 +280,13 @@ public class TKSimpleService {
      * <p>
      * 注意,此逻辑仅能处理车是非上海、非验证码、非蚂蚁渠道的查询
      *
-     * @param result
+     * @param session
      * @param mainOrderId
      * @param commonCarInfoVo
      * @param area
      * @return
      */
-    public List<TKCarModel> queryCarModelsByVinNo(LoginResult result, String mainOrderId, CarInfoVo commonCarInfoVo, TKAreaInfoVo area) {
+    public List<TKCarModel> queryCarModelsByVinNo(TKLoginSession session, String mainOrderId, CarInfoVo commonCarInfoVo, TKAreaInfoVo area) {
         if (StringUtils.isBlank(commonCarInfoVo.getLicenseNo())) {
             return null;
         }
@@ -274,8 +299,8 @@ public class TKSimpleService {
         carInfoVo.setVinNo(commonCarInfoVo.getVinNo());
 
         CarModelinfoQueryParam carModelinfoQueryParam = new CarModelinfoQueryParam();
-        carModelinfoQueryParam.setTplatformId(result.getTplatformId());
-        carModelinfoQueryParam.setFromId(result.getWebsysUserVo().getFromid());
+        carModelinfoQueryParam.setTplatformId(session.getTplatformId());
+        carModelinfoQueryParam.setFromId(session.getFromid());
         carModelinfoQueryParam.setOrderID(mainOrderId);
         carModelinfoQueryParam.setChannelCode("OffWeb");
         carModelinfoQueryParam.setAreaInfoVo(area);
@@ -292,19 +317,19 @@ public class TKSimpleService {
     /**
      * 查车型
      *
-     * @param result
+     * @param session
      * @param mainOrderId
      * @param commonCarInfoVo
      * @param area
      * @return
      */
-    public TKCarModel queryCarModel(LoginResult result, String mainOrderId, CarInfoVo commonCarInfoVo, TKAreaInfoVo area) {
+    public TKCarModel queryCarModel(TKLoginSession session, String mainOrderId, CarInfoVo commonCarInfoVo, TKAreaInfoVo area) {
         // 第一次查车型,使用车牌号的方式
-        List<TKCarModel> TKCarModels = queryCarModelsByLicenseNo(result, mainOrderId, commonCarInfoVo, area);
+        List<TKCarModel> TKCarModels = queryCarModelsByLicenseNo(session, mainOrderId, commonCarInfoVo, area);
 
         if (TKCarModels == null) {
             // 第二次查车型,如果第一次没查到,使用车架号的方式
-            TKCarModels = queryCarModelsByVinNo(result, mainOrderId, commonCarInfoVo, area);
+            TKCarModels = queryCarModelsByVinNo(session, mainOrderId, commonCarInfoVo, area);
         }
 
         if (TKCarModels == null) {
@@ -317,12 +342,12 @@ public class TKSimpleService {
         return TKCarModel;
     }
 
-    public TKAreaInfoVo dataCreateArea(LoginResult result, String mainOrderId,
+    public TKAreaInfoVo dataCreateArea(TKLoginSession session, String mainOrderId,
                                        TKAgentFuzzy agentFuzzy,
                                        String agentCode, TKAgentQueryResult agentQueryResult,
                                        AreaUserResult province, CarInfoVo commonCarInfoVo) {
-        String tplatformId = result.getTplatformId();
-        String fromId = result.getWebsysUserVo().getFromid();
+        String tplatformId = session.getTplatformId();
+        String fromId = session.getFromid();
 
         AreaUserResult.CityInfo city = province.getCityList().get(0);
 
@@ -465,21 +490,21 @@ public class TKSimpleService {
     /**
      * 保存车险投保单
      *
-     * @param result
+     * @param session
      * @param mainOrderId
      * @param tkCarModel
      * @param tkAreaInfoVo
      * @param commonCarInfoVo
      */
-    public void orderCreate(LoginResult result,
+    public void orderCreate(TKLoginSession session,
                             String mainOrderId,
                             TKCarModel tkCarModel,
                             TKAreaInfoVo tkAreaInfoVo,
                             CarInfoVo commonCarInfoVo) {
         // 全局固定参数
-        String tplatformId = result.getTplatformId();
-        String tplatLoginKey = result.getTplatLoginKey();
-        String fromId = result.getWebsysUserVo().getFromid();
+        String tplatformId = session.getTplatformId();
+        String tplatLoginKey = session.getTplatLoginKey();
+        String fromId = session.getFromid();
 
 
         String passengerSeat = "";
@@ -677,14 +702,14 @@ public class TKSimpleService {
     /**
      * 初始化车险投保单
      *
-     * @param result
+     * @param session
      * @param mainOrderId
      */
-    public PreciseInitResult orderInit(LoginResult result,
+    public PreciseInitResult orderInit(TKLoginSession session,
                                        String mainOrderId) {
         // 全局固定参数
-        String tplatformId = result.getTplatformId();
-        String tplatLoginKey = result.getTplatLoginKey();
+        String tplatformId = session.getTplatformId();
+        String tplatLoginKey = session.getTplatLoginKey();
 
         PreciseInitResult preciseInitResult = httpService.preciseInitToInit(tplatformId, tplatLoginKey, mainOrderId);
 
@@ -698,21 +723,21 @@ public class TKSimpleService {
     /**
      * 车险投保单报价
      *
-     * @param result
+     * @param session
      * @param mainOrderId
      * @param preciseInitResult
      * @param commonQuoteVo
      */
-    public PreciseInitResult orderQuote(LoginResult result,
+    public PreciseInitResult orderQuote(TKLoginSession session,
                                         String mainOrderId,
                                         PreciseInitResult preciseInitResult,
                                         QuoteVo commonQuoteVo) {
         PreciseInitParam preciseInitParam = Converter.Instance.convertToParam(preciseInitResult);
 
         // 全局固定参数
-        String tplatformId = result.getTplatformId();
-        String tplatLoginKey = result.getTplatLoginKey();
-        String fromId = result.getWebsysUserVo().getFromid();
+        String tplatformId = session.getTplatformId();
+        String tplatLoginKey = session.getTplatLoginKey();
+        String fromId = session.getFromid();
 
         {
             TKFlag flag = preciseInitParam.getFlag();

Разница между файлами не показана из-за своего большого размера
+ 0 - 0
tenant/insurance/quotation-taikang/src/test/java/com/jzg/quotation/taikang/AESDecryptorTest.java


Некоторые файлы не были показаны из-за большого количества измененных файлов