Procházet zdrojové kódy

app个人中心和中煤python报价

dongxin před 1 rokem
rodič
revize
21576d8689
35 změnil soubory, kde provedl 706 přidání a 276 odebrání
  1. 141 37
      authentication/src/main/java/com/jzg/config/JzgAuthenticationProvider.java
  2. 21 0
      authentication/src/main/java/com/jzg/config/JzgUsernamePasswordAuthenticationToken.java
  3. 7 1
      authentication/src/main/java/com/jzg/config/SecurityConfig.java
  4. 17 28
      authentication/src/main/java/com/jzg/controller/AuthController.java
  5. 0 6
      authentication/src/main/java/com/jzg/entity/vo/AppRegisterFormVo.java
  6. 0 2
      authentication/src/main/java/com/jzg/service/impl/SysUserServiceImpl.java
  7. 3 0
      commons/src/main/java/com/jzg/commons/constants/RedisKeyConstants.java
  8. 2 2
      commons/src/main/java/com/jzg/commons/entity/dto/BusinessInfoAddParam.java
  9. 3 0
      commons/src/main/java/com/jzg/commons/entity/dto/InvitationAddParam.java
  10. 1 1
      commons/src/main/java/com/jzg/commons/entity/dto/UserInfoEditParam.java
  11. 3 0
      commons/src/main/java/com/jzg/commons/entity/dto/ValidateCodeParam.java
  12. 6 2
      commons/src/main/java/com/jzg/commons/entity/po/SysUser.java
  13. 10 0
      commons/src/main/java/com/jzg/commons/entity/po/SysUserJzgInfo.java
  14. 3 0
      commons/src/main/java/com/jzg/commons/entity/vo/AuthInfoVo.java
  15. 23 0
      commons/src/main/java/com/jzg/commons/entity/vo/InvitationVo.java
  16. 4 0
      commons/src/main/java/com/jzg/commons/entity/vo/UserInfoVo.java
  17. 9 1
      tenant/insurance/quotation-summary/src/main/java/com/jzg/quotation/summary/controller/UnifyOrderManager.java
  18. 3 0
      tenant/insurance/quotation-summary/src/main/java/com/jzg/quotation/summary/service/InsOrdersService.java
  19. 10 0
      tenant/insurance/quotation-summary/src/main/java/com/jzg/quotation/summary/service/impl/InsOrdersServiceImpl.java
  20. 7 7
      tenant/insurance/quotation-zhongmei/src/main/java/com/jzg/quotation/zhongmei/api/service/impl/ZhongMeiApiRequestImpl.java
  21. 15 3
      tenant/insurance/quotation-zhongmei/src/main/java/com/jzg/quotation/zhongmei/crawler/component/ZmCrawlerRequestComponent.java
  22. 1 1
      tenant/insurance/quotation-zhongmei/src/main/java/com/jzg/quotation/zhongmei/crawler/entity/Request/ZmCrawlerActualValueRequest.java
  23. 240 106
      tenant/insurance/quotation-zhongmei/src/main/java/com/jzg/quotation/zhongmei/crawler/entity/Request/ZmCrawlerQuotedPriceRequest.java
  24. 14 14
      tenant/insurance/quotation-zhongmei/src/main/java/com/jzg/quotation/zhongmei/crawler/entity/Response/ZmCrawlerModelQueryResponse.java
  25. 7 7
      tenant/insurance/quotation-zhongmei/src/main/java/com/jzg/quotation/zhongmei/crawler/entity/ZmCrawlerConfigureParameters.java
  26. 7 3
      tenant/insurance/quotation-zhongmei/src/main/java/com/jzg/quotation/zhongmei/crawler/entity/dto/SaleInfoDTO.java
  27. 29 0
      tenant/insurance/quotation-zhongmei/src/main/java/com/jzg/quotation/zhongmei/crawler/util/Base64Tool.java
  28. 12 11
      tenant/organization/src/main/java/com/jzg/organization/controller/AppUserController.java
  29. 2 2
      tenant/organization/src/main/java/com/jzg/organization/mapper/SysUserJzgAppMapper.java
  30. 4 3
      tenant/organization/src/main/java/com/jzg/organization/service/SysUserJzgAppService.java
  31. 8 0
      tenant/organization/src/main/java/com/jzg/organization/service/SysUserService.java
  32. 71 32
      tenant/organization/src/main/java/com/jzg/organization/service/impl/SysUserJzgAppServiceImpl.java
  33. 13 0
      tenant/organization/src/main/java/com/jzg/organization/service/impl/SysUserServiceImpl.java
  34. 1 0
      tenant/organization/src/main/resources/application.yml
  35. 9 7
      tenant/organization/src/main/resources/mapper/SysUserJzgAppMapper.xml

+ 141 - 37
authentication/src/main/java/com/jzg/config/JzgAuthenticationProvider.java

@@ -1,6 +1,11 @@
 package com.jzg.config;
 
-import cn.hutool.core.date.DateTime;
+import com.alipay.api.AlipayApiException;
+import com.alipay.api.AlipayClient;
+import com.alipay.api.AlipayConfig;
+import com.alipay.api.DefaultAlipayClient;
+import com.alipay.api.request.AlipaySystemOauthTokenRequest;
+import com.alipay.api.response.AlipaySystemOauthTokenResponse;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.jzg.commons.constants.RedisKeyConstants;
 import com.jzg.commons.constants.SystemConstants;
@@ -22,6 +27,10 @@ import com.jzg.service.SysSystemService;
 import com.jzg.service.SysUserRoleService;
 import com.jzg.service.SysUserService;
 import com.jzg.commons.util.PasswordUtils;
+import me.chanjar.weixin.common.bean.oauth2.WxOAuth2AccessToken;
+import me.chanjar.weixin.common.error.WxErrorException;
+import me.chanjar.weixin.mp.api.WxMpService;
+import org.apache.juli.logging.Log;
 import org.redisson.api.RedissonClient;
 import org.springframework.security.authentication.AuthenticationProvider;
 import org.springframework.security.authentication.UsernamePasswordAuthenticationToken;
@@ -33,6 +42,7 @@ import org.springframework.util.CollectionUtils;
 import java.time.LocalDateTime;
 import java.util.ArrayList;
 import java.util.List;
+import java.util.Map;
 import java.util.Objects;
 import java.util.stream.Collectors;
 
@@ -54,9 +64,11 @@ public class JzgAuthenticationProvider implements AuthenticationProvider {
 
     private SysUserJzgAppMapper sysUserJzgAppMapper;
 
+    private Map<String, WxMpService> wxMpService;
+
     public JzgAuthenticationProvider(UserDetailsService userDetailsService, SysUserService sysUserService, SysUserRoleService sysUserRoleService,
                                      RedissonClient redissonClient, SysRoleDataScopeMapper sysRoleDataScopeMapper, SysRoleDataScopeLinkMapper sysRoleDataScopeLinkMapper,
-                                     SysSystemService sysSystemService, SysUserJzgAppMapper sysUserJzgAppMapper) {
+                                     SysSystemService sysSystemService, SysUserJzgAppMapper sysUserJzgAppMapper,Map<String, WxMpService> wxMpService) {
         this.userDetailsService = userDetailsService;
         this.sysUserService = sysUserService;
         this.sysUserRoleService = sysUserRoleService;
@@ -65,6 +77,7 @@ public class JzgAuthenticationProvider implements AuthenticationProvider {
         this.sysRoleDataScopeLinkMapper = sysRoleDataScopeLinkMapper;
         this.sysSystemService = sysSystemService;
         this.sysUserJzgAppMapper = sysUserJzgAppMapper;
+        this.wxMpService = wxMpService;
     }
 
 
@@ -78,6 +91,9 @@ public class JzgAuthenticationProvider implements AuthenticationProvider {
         String captchaId = ((JzgUsernamePasswordAuthenticationToken)authentication).getCaptchaId();
         String captcha = ((JzgUsernamePasswordAuthenticationToken)authentication).getCaptcha();
         String smsCode = ((JzgUsernamePasswordAuthenticationToken)authentication).getSmsCode();
+        String type = ((JzgUsernamePasswordAuthenticationToken)authentication).getType();
+        String code = ((JzgUsernamePasswordAuthenticationToken)authentication).getCode();
+
         boolean isFirst = false;
         //调试时注销验证码
         //验证码校验
@@ -90,17 +106,21 @@ public class JzgAuthenticationProvider implements AuthenticationProvider {
                 throw new SystemException("验证码错误,请重新输入");
             }
         }
-
-        SysUser byId = sysUserService.getByUserName(username);
-        if(Objects.isNull(byId)){
-            throw new SystemException("用户名不存在");
+        SysUser byId = new SysUser();
+        String salt = null;
+        if(StringUtils.isNotBlank(username)){
+            byId = sysUserService.getByUserName(username);
+            if(Objects.isNull(byId)){
+                throw new SystemException("用户名不存在");
+            }
+            salt = byId.getSalt();
         }
-        String salt = byId.getSalt();
+
 
         //检验短信验证码
-        if(Objects.nonNull(smsCode)){
+        if(Objects.nonNull(code)){
             String systemSmsCode = redissonClient.getBucket(RedisKeyConstants.SMS_CODE + username).get().toString();
-            if(!smsCode.equals(systemSmsCode)){
+            if(!code.equals(systemSmsCode)){
                 throw new SystemException("短信验证码错误,请重新输入");
             }
         }else{
@@ -117,39 +137,109 @@ public class JzgAuthenticationProvider implements AuthenticationProvider {
             }
         }
 
-        SysSystem sysSystem = sysSystemService.getBySystemCode(system);
-        if(StringUtils.isNull(sysSystem)){
-            throw new SystemException("该租户已经禁用或者删除,请联系运营平台!");
-        }
-
-
-
-
+        // 授权登录
         String name = "",workNumber = "",headSculpture = "";
-        if(system.equals(SystemConstants.SYSTEM_JZG_APP.getCode())){
-            SysUserJzgApp jzgUserApp = sysUserJzgAppMapper.selectOne(new LambdaQueryWrapper<SysUserJzgApp>().eq(SysUserJzgApp::getUserId, byId.getId()));
-            // 如果用户存在,app信息为空,则创建app信息
-            if(Objects.isNull(jzgUserApp)){
-                jzgUserApp = new SysUserJzgApp();
-                jzgUserApp.setUserId(byId.getId());
-                jzgUserApp.setSystemCode("APP");
-                jzgUserApp.setCreateTime(LocalDateTime.now());
-                sysUserJzgAppMapper.insert(jzgUserApp);
+        if(StringUtils.isNotBlank(type)){
+            String openId = null;
+            String aliPayId = null;
+            if(type.equals("0")){
+                WxOAuth2AccessToken accessToken = null;
+                try{
+                    accessToken = wxMpService.get("app").getOAuth2Service().getAccessToken(code);
+                }catch (WxErrorException e){
+                    throw new SystemException("微信授权失败");
+                }
+                openId = accessToken.getOpenId();
+            }else{
+                AlipayClient alipayClient = null;
+                try {
+                    alipayClient = new DefaultAlipayClient(getAlipayConfig());
+                    // 构造请求参数以调用接口
+                    AlipaySystemOauthTokenRequest request = new AlipaySystemOauthTokenRequest();
+                    // 设置授权码
+                    request.setCode(code);
+                    // 设置授权方式
+                    request.setGrantType("authorization_code");
+
+                    AlipaySystemOauthTokenResponse response = alipayClient.execute(request);
+                    aliPayId = response.getUserId();
+                } catch (AlipayApiException e) {
+                    throw new RuntimeException(e);
+                }
             }
-            if(Objects.isNull(jzgUserApp.getLastLoginTime())){
-                isFirst = true;
+            if(StringUtils.isNotBlank(username)){  // 未绑定手机登录
+                SysUserJzgApp jzgUserApp = sysUserJzgAppMapper.selectOne(new LambdaQueryWrapper<SysUserJzgApp>()
+                        .eq(SysUserJzgApp::getUserId, byId.getId())
+                        .eq(SysUserJzgApp::getIsDelete,0));
+                // 如果用户存在,app信息为空,则创建app信息
+                if(Objects.isNull(jzgUserApp)){
+                    jzgUserApp = new SysUserJzgApp();
+                    jzgUserApp.setUserId(byId.getId());
+                    jzgUserApp.setSystemCode("APP");
+                    if(type.equals(0)){
+                        jzgUserApp.setOpenId(openId);
+                    }else{
+                        jzgUserApp.setAlipay(aliPayId);
+                    }
+                    sysUserJzgAppMapper.insert(jzgUserApp);
+                }
+                if(Objects.isNull(jzgUserApp.getLastLoginTime())){
+                    isFirst = true;
+                }
+                //更新用户登录时间
+                jzgUserApp.setLastLoginTime(LocalDateTime.now());
+                sysUserJzgAppMapper.updateById(jzgUserApp);
+            }else{ // 已经绑定手机登录
+                LambdaQueryWrapper<SysUserJzgApp> wrapper = new LambdaQueryWrapper<>();
+                if(type.equals("0")){
+                    wrapper.eq(SysUserJzgApp::getOpenId, openId);
+                }else{
+                    wrapper.eq(SysUserJzgApp::getAlipay, aliPayId);
+                }
+                SysUserJzgApp userJzgApp = sysUserJzgAppMapper.selectOne(wrapper);
+                if (userJzgApp == null) {
+                    throw new SystemException("未绑定用户手机号");
+                }
+                SysSystem sysSystem = sysSystemService.getBySystemCode(userJzgApp.getSystemCode());
+                if(StringUtils.isNull(sysSystem)){
+                    throw new SystemException("该租户已经禁用或者删除,请联系运营平台!");
+                }
+                byId = sysUserService.getById(userJzgApp.getUserId());
+                if(Objects.isNull(byId)){
+                    throw new SystemException("用户名不存在");
+                }
             }
-            //更新用户登录时间
-            jzgUserApp.setLastLoginTime(LocalDateTime.now());
-            sysUserJzgAppMapper.updateById(jzgUserApp);
-        }else if(!system.equals(SystemConstants.SYSTEM_PLATFORM.getCode())){
-            SysUserJzgVo jzgUserInfo = sysUserService.getJzgUserInfo(byId.getId(),system);
-            name = jzgUserInfo.getName();
-            workNumber = jzgUserInfo.getWorkNumber();
         }else{
-            name = byId.getUsername();
-        }
+            SysSystem sysSystem = sysSystemService.getBySystemCode(system);
+            if(StringUtils.isNull(sysSystem)){
+                throw new SystemException("该租户已经禁用或者删除,请联系运营平台!");
+            }
 
+            if(system.equals(SystemConstants.SYSTEM_JZG_APP.getCode())){
+                SysUserJzgApp jzgUserApp = sysUserJzgAppMapper.selectOne(new LambdaQueryWrapper<SysUserJzgApp>()
+                        .eq(SysUserJzgApp::getUserId, byId.getId())
+                        .eq(SysUserJzgApp::getIsDelete,0));
+                // 如果用户存在,app信息为空,则创建app信息
+                if(Objects.isNull(jzgUserApp)){
+                    jzgUserApp = new SysUserJzgApp();
+                    jzgUserApp.setUserId(byId.getId());
+                    jzgUserApp.setSystemCode("APP");
+                    sysUserJzgAppMapper.insert(jzgUserApp);
+                }
+                if(Objects.isNull(jzgUserApp.getLastLoginTime())){
+                    isFirst = true;
+                }
+                //更新用户登录时间
+                jzgUserApp.setLastLoginTime(LocalDateTime.now());
+                sysUserJzgAppMapper.updateById(jzgUserApp);
+            }else if(!system.equals(SystemConstants.SYSTEM_PLATFORM.getCode())){
+                SysUserJzgVo jzgUserInfo = sysUserService.getJzgUserInfo(byId.getId(),system);
+                name = jzgUserInfo.getName();
+                workNumber = jzgUserInfo.getWorkNumber();
+            }else{
+                name = byId.getUsername();
+            }
+        }
 
         //获取用户角色权限标识
         List<SysRolePerms> userPerms = sysUserRoleService.getUserPerms(byId.getId(), system);
@@ -238,4 +328,18 @@ public class JzgAuthenticationProvider implements AuthenticationProvider {
     public boolean supports(Class<?> authentication) {
         return UsernamePasswordAuthenticationToken.class.isAssignableFrom(authentication);
     }
+
+    private static AlipayConfig getAlipayConfig() {
+        String privateKey  = "MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQCmb0GfNv7ex5SmUiBnMn3szFP4XM5c8KnYll6HGoFCQTxwMSVYq652ELBtGAScqV9QOVcF/1Z1NF+a0AabGd0qSKKsPOhHNg3vG4yHHs4gwOdqFxwjATXqgHaZXSIQGnoPUJ3J05AlYLlinm9oOoTAY68880pM9h9d7t4Aq4WqVfnGteNaV5+oaV/KgX2OGo7m3WPR+e5Yjl9xxYXjVF1Uv7hznNER74KuYhRP44759lgfo0RlncGXuaygKHoxCpKTozGmvedP0hTO/WJTEi5l11Gp4mfMN9Gb/VtjsRDJaCFMmXU19UcHOFxyFOrKoyNYxdj3ue07/l51l4+8TVyJAgMBAAECggEBAJGR09qW9nsSIxEJ2e+I+RzpZjRfr9sYX+XhN1KBuzag6mTSh3Cz0IbReA4jKL2BYq0/Sb8kIpGmukwk0PJNv+Rg3W86YosOW0ecV+BC8FUzg/SFvAVd5LNzosfm7okZL1M/1pKVaYlXvS3ll1mZfUzso3Py8zS3PJ4i86ewXdupp2HcQt8c5O57lkzdhi35a38k9RrrSsYgnUClAMFWvmN4x1v7vuddzW0/q5Ztg1k9Ukz209dMOIc5cZ8+zyX5PO0rEofUETMtF5D5N2qtsMsMlDxvYq7aQoNq5I1p8e2mjZv5U7EvkLENTZmPRtAdddut1LGACU0AAlvvOOgu9wECgYEA27Q/EuQPfFh/aOYyi6zq0AWFN2U+tN/y3/nAvGymisdp6c2q1s6ESvENJep7v9PR/cownHKIllTJbzh03DKrQd0LYJrh4CFr6xv5DSUXMft5+6Te+t1FpULqhtkVLcqqTSqMRo8Yl/QMDxI6mRd4pmEFscOIEW+5lzyofxfL7mECgYEAwe4hNIyz2b/uBCCUMPA8CL8kJILqw0ZHB4EekoLugqYHAi3LPCDpJzFJ3pcZXjUdH9TUKQp67eizk+xedfFdicm0ENzPqCoUPidT88QZImaP8uP2LblTlxNCDf8D15BQzBHDlTDN+2tzFi7qAb3v2mgK5U9WGOOkicmMGzv8jykCgYARP3hIKmFQ2L2/5XqIXp3ckOJhc/BVUNOHY9sOr9TvRjJ5aW0FChd2rq/ijyMB70YoD2x7i75PVv6tXZhHBS9Or2TKQ76B0v3e6kZGEuhcQyrTZ6EdvqtOCw/QYFB6VNPD1RhIHcnHfCBKOpshE6ekIC/LQdd3zvaZ+egceijHYQKBgDgN250z2jxjZKnevNbUaZXhodHH4ZGl+5vor2yL2eL7mGUB1Y/At4OzlHV5WUTIt21e+CAQvm2L6HQmSztuE6pjGeAR4xfpacZ5WaPJF7bAzHTZfWvD+KxfTaV8A6FIPoJt1AmIfNFiQna0AsGUJAMONbAIWYuCKSoGjq/EjADZAoGAS0ZaZdPKKQnd4g/lqM8CnHTfhW11ANP/rPZDU+NvjW2jQ6SIdJhwJaKMEQCcDp63j0SADlghzrvm+KMbnTrFqTHlAizcFxnOOOxO1pKXKuOJWWsyNBN33suB3XPFrsobEtmtnWyvph1GoAZOX457RN5LSmBTbqpbyEsjKg/W1zc=";
+        String alipayPublicKey = "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEArP+St5P9dLhPmm/ggf3jPDc2552wu/+91QSAzlEqRSrdWAIwrHcntM0VY/4/+39Z8h44/0TBNTb0j1gdWrCyb+1ENxwwgCqs7f8C/5gClTQCcoNys4MtGAAM7BbNp/LzmswOuPTOMtjlUBArWFvJDgDoSQJ8vGwGHgRcLsSLPwlhwVdnqVbq60CI185U/yZgNITTCGpDXv5bnQQ26GrUbH+5Qm4fYmT2B/2ijAVJUYq+EaBMOyv+AD8C1+CtXcgH86+g13MdD1T8cw5nkV9/4fcPIWD8R1aj20C1+kCMujaydB4yDpHiqQcQEtJoVbZJk5MYp8JcctqDT01brVct5wIDAQAB";
+        AlipayConfig alipayConfig = new AlipayConfig();
+        alipayConfig.setServerUrl("https://openapi.alipay.com/gateway.do");
+        alipayConfig.setAppId("2021004153668213");
+        alipayConfig.setPrivateKey(privateKey);
+        alipayConfig.setFormat("json");
+        alipayConfig.setAlipayPublicKey(alipayPublicKey);
+        alipayConfig.setCharset("UTF-8");
+        alipayConfig.setSignType("RSA2");
+        return alipayConfig;
+    }
 }

+ 21 - 0
authentication/src/main/java/com/jzg/config/JzgUsernamePasswordAuthenticationToken.java

@@ -2,6 +2,7 @@ package com.jzg.config;
 
 import com.jzg.entity.vo.AppLoginFormVo;
 import com.jzg.entity.vo.LoginFormVo;
+import io.swagger.v3.oas.annotations.media.Schema;
 import org.springframework.security.authentication.UsernamePasswordAuthenticationToken;
 
 public class JzgUsernamePasswordAuthenticationToken extends UsernamePasswordAuthenticationToken {
@@ -26,6 +27,16 @@ public class JzgUsernamePasswordAuthenticationToken extends UsernamePasswordAuth
      */
     private String smsCode;
 
+    /**
+     * 授权code
+     */
+    private String code;
+
+    /**
+     * 授权类型 0.微信 1.支付宝
+     */
+    private String type;
+
     public JzgUsernamePasswordAuthenticationToken(Object principal, Object credentials,String system,String captchaId,String captcha,String smsCode) {
         super(principal, credentials);
         this.system = system;
@@ -47,11 +58,21 @@ public class JzgUsernamePasswordAuthenticationToken extends UsernamePasswordAuth
         this.captchaId = loginFormVo.getCaptchaId();
         this.captcha = loginFormVo.getCaptcha();
         this.smsCode = loginFormVo.getSmsCode();
+        this.type = loginFormVo.getType();
+        this.code = loginFormVo.getCode();
     }
     public void setSystem(String s){
         this.system = s;
     }
 
+    public String getCode() {
+        return code;
+    }
+
+    public String getType() {
+        return type;
+    }
+
     public String getSystem(){
         return this.system;
     }

+ 7 - 1
authentication/src/main/java/com/jzg/config/SecurityConfig.java

@@ -8,6 +8,7 @@ import com.jzg.mapper.SysUserJzgAppMapper;
 import com.jzg.service.SysSystemService;
 import com.jzg.service.SysUserRoleService;
 import com.jzg.service.SysUserService;
+import me.chanjar.weixin.mp.api.WxMpService;
 import org.redisson.api.RedissonClient;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.context.annotation.Bean;
@@ -23,6 +24,8 @@ import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
 import org.springframework.security.web.SecurityFilterChain;
 import org.springframework.security.web.authentication.UsernamePasswordAuthenticationFilter;
 
+import java.util.Map;
+
 
 @Configuration
 @EnableWebSecurity
@@ -53,6 +56,9 @@ public class SecurityConfig {
     @Autowired
     SysUserJzgAppMapper sysUserJzgAppMapper;
 
+    @Autowired
+    Map<String, WxMpService> wxMpService;
+
     @Bean
     public AuthenticationManager authenticationManager(AuthenticationConfiguration authenticationConfiguration) throws Exception {
         return authenticationConfiguration.getAuthenticationManager();
@@ -61,7 +67,7 @@ public class SecurityConfig {
     @Bean
     public AuthenticationProvider authenticationProvider(UserDetailsService userDetailsService) {
         return new JzgAuthenticationProvider(userDetailsService,sysUserService,sysRoleService,redissonClient,sysRoleDataScopeMapper,
-                sysRoleDataScopeLinkMapper,sysSystemService,sysUserJzgAppMapper);
+                sysRoleDataScopeLinkMapper,sysSystemService,sysUserJzgAppMapper,wxMpService);
     }
 
     @Bean

+ 17 - 28
authentication/src/main/java/com/jzg/controller/AuthController.java

@@ -43,6 +43,7 @@ import jakarta.servlet.ServletException;
 import jakarta.servlet.ServletOutputStream;
 import jakarta.servlet.http.HttpServletRequest;
 import jakarta.servlet.http.HttpServletResponse;
+import jodd.util.StringUtil;
 import lombok.extern.slf4j.Slf4j;
 import me.chanjar.weixin.common.bean.oauth2.WxOAuth2AccessToken;
 import me.chanjar.weixin.common.error.WxErrorException;
@@ -133,33 +134,6 @@ public class AuthController extends BaseController {
     public void login(@RequestBody LoginFormVo loginFormVo) throws ServletException, IOException {
         HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest();
         HttpServletResponse response = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getResponse();
-        if(loginFormVo.getSystem().equals("APP")){
-
-            String weOpenId = null;
-            String aliOpenId = null;
-            if("0".equals(loginFormVo.getType())){
-                weOpenId = wechatService.auth(loginFormVo);
-            }else if("1".equals(loginFormVo.getType())){
-                aliOpenId = alipayService.auth(loginFormVo);
-            }
-            SysUser userById = sysUserService.getOne(new LambdaQueryWrapper<SysUser>()
-                    .eq(SysUser::getMobile, loginFormVo.getUserName()));
-            if(Objects.isNull(userById)) {
-                //如果不存在用户则自动注册
-                AppRegisterFormVo appRegisterFormVo = new AppRegisterFormVo();
-                appRegisterFormVo.setMobile(loginFormVo.getUserName());
-                appRegisterFormVo.setCaptcha(loginFormVo.getCaptcha());
-                appRegisterFormVo.setCaptchaId(loginFormVo.getCaptchaId());
-                appRegisterFormVo.setSmsCode(loginFormVo.getSmsCode());
-                if(StringUtils.isNotBlank(weOpenId)){
-                    appRegisterFormVo.setOpenId(weOpenId);
-                }
-                if(StringUtils.isNotBlank(aliOpenId)){
-                    appRegisterFormVo.setAlipay(aliOpenId);
-                }
-                register(appRegisterFormVo);
-            }
-        }
         JzgUsernamePasswordAuthenticationToken authentication = new JzgUsernamePasswordAuthenticationToken(loginFormVo);
         Authentication authenticate = authenticationManager.authenticate(authentication);
         SecurityContextHolder.getContext().setAuthentication(authenticate);
@@ -219,6 +193,21 @@ public class AuthController extends BaseController {
         return HttpResult.ok("验证码发送成功");
     }
 
+    @GetMapping("sendSmsCodeMobile")
+    @Operation(summary = "发送更换手机短信验证码")
+    public HttpResult sendSmsCodeMobile(String mobile){
+        if(mobile.isEmpty() && mobile.length() != 11){
+            throw new SystemException("手机号格式错误");
+        }
+        //存储短信验证码
+//        String code = String.format("%06d", new Random().nextInt(1000000));
+        String code = "123456";
+        redissonClient.getBucket(RedisKeyConstants.SMS_REPLACE_MOBILE + mobile).set(code, 120, TimeUnit.SECONDS);
+        //调取三方发送短信接口
+
+        return HttpResult.ok("验证码发送成功");
+    }
+
     @PostMapping("modifyPass")
     @Operation(summary = "修改密码")
     public HttpResult modifyPass(@RequestBody ModifyPassWordFormVo modifyPassWordFormVo){
@@ -252,7 +241,7 @@ public class AuthController extends BaseController {
                 .eq(SysUser::getMobile, appRegisterFormVo.getMobile()));
         AssertionUtils.isFail(Objects.nonNull(userById),"用户已注册,请直接登录");
         sysUserService.validateCode(appRegisterFormVo.getCaptchaId(), appRegisterFormVo.getCaptcha());
-        sysUserService.validateSmsCode(appRegisterFormVo.getMobile(), appRegisterFormVo.getSmsCode());
+//        sysUserService.validateSmsCode(appRegisterFormVo.getMobile(), appRegisterFormVo.getSmsCode());
         boolean register = sysUserService.register(appRegisterFormVo);
 
         return register ? HttpResult.ok("注册成功") : HttpResult.error("注册失败");

+ 0 - 6
authentication/src/main/java/com/jzg/entity/vo/AppRegisterFormVo.java

@@ -23,10 +23,4 @@ public class AppRegisterFormVo {
 
     @Schema(description = "验证码")
     private String captcha;
-
-    @Schema(description = "微信id")
-    private String openId;
-
-    @Schema(description = "支付宝id")
-    private String alipay;
 }

+ 0 - 2
authentication/src/main/java/com/jzg/service/impl/SysUserServiceImpl.java

@@ -48,8 +48,6 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
         sysUserJzgApp.setUserId(sysUser.getId());
         sysUserJzgApp.setIsEnable(0);
         sysUserJzgApp.setStatus(0);
-        sysUserJzgApp.setOpenId(appRegisterFormVo.getOpenId());
-        sysUserJzgApp.setAlipay(appRegisterFormVo.getAlipay());
         sysUserJzgAppMapper.insert(sysUserJzgApp);
         return true;
     }

+ 3 - 0
commons/src/main/java/com/jzg/commons/constants/RedisKeyConstants.java

@@ -11,6 +11,9 @@ public class RedisKeyConstants {
     //短信验证码key
     public static final String SMS_CODE = "SMS_CODE:";
 
+    //短信验证码key
+    public static final String SMS_REPLACE_MOBILE = "SMS_REPLACE_MOBILE:";
+
     public static final String DICT_REDIS_KEY = "DICT:";
 
     /**

+ 2 - 2
commons/src/main/java/com/jzg/commons/entity/dto/BusinessInfoAddParam.java

@@ -17,6 +17,6 @@ public class BusinessInfoAddParam {
     private String userId;
 
     @NotEmpty(message = "展业资格证图片不能为空")
-    @Schema(description = "展业资格证图片数组")
-    private SysUserJzgInfoFile file;
+    @Schema(description = "展业资格证图片")
+    private String fileId;
 }

+ 3 - 0
commons/src/main/java/com/jzg/commons/entity/dto/InvitationAddParam.java

@@ -26,4 +26,7 @@ public class InvitationAddParam {
     @NotBlank(message = "邀请人用户id不能为空")
     private String userId;
 
+    @Schema(description = "租户code")
+    @NotBlank(message = "租户code不能为空")
+    private String systemCode;
 }

+ 1 - 1
commons/src/main/java/com/jzg/commons/entity/dto/UserInfoEditParam.java

@@ -17,7 +17,7 @@ public class UserInfoEditParam {
     private String name;
 
     @Schema(description = "性别")
-    private Integer sex;
+    private String sex;
 
     @Schema(description = "头像")
     private String headSculpture;

+ 3 - 0
commons/src/main/java/com/jzg/commons/entity/dto/ValidateCodeParam.java

@@ -8,6 +8,9 @@ import lombok.Data;
 @Data
 public class ValidateCodeParam {
 
+    @Schema(description = "用户id")
+    private String userId;
+
     @Schema(description = "手机号")
     @NotBlank(message = "请输入手机号")
     private String mobile;

+ 6 - 2
commons/src/main/java/com/jzg/commons/entity/po/SysUser.java

@@ -102,7 +102,11 @@ public class SysUser extends BaseModel{
         }
         this.accountStatus = 1;
         this.identity = identity;
-        this.identityTimeStart = LocalDate.parse(identityTimeStart);
-        this.identityTimeEnd = LocalDate.parse(identityTimeEnd);
+        if(StringUtils.isNotBlank(identityTimeStart)){
+            this.identityTimeStart = LocalDate.parse(identityTimeStart);
+        }
+        if(StringUtils.isNotBlank(identityTimeEnd)){
+            this.identityTimeEnd = LocalDate.parse(identityTimeEnd);
+        }
     }
 }

+ 10 - 0
commons/src/main/java/com/jzg/commons/entity/po/SysUserJzgInfo.java

@@ -326,6 +326,16 @@ public class SysUserJzgInfo extends BaseModel implements Serializable {
         this.typeAttr = "2";
     }
 
+    public SysUserJzgInfo(SysUserJzgInfo yqirInfo, SysUser sysUser){
+        this.userId = sysUser.getId();
+        this.name = sysUser.getUsername();
+        this.status = 0;
+        this.isEnable = 0;
+        this.deptId = yqirInfo.getDeptId();
+        this.typeAttr = yqirInfo.getTypeAttr();
+        this.referrerId = yqirInfo.getId();
+    }
+
     /**
      * 重置人员类型   团队 渠道 电销 转为个代
      * @param typeAttr

+ 3 - 0
commons/src/main/java/com/jzg/commons/entity/vo/AuthInfoVo.java

@@ -39,4 +39,7 @@ public class AuthInfoVo {
     @Schema(description = "证件明细列表")
     private List<SysUserJzgInfoFile> fileList;
 
+    @Schema(description = "实名认证结果")
+    private String authResult;
+
 }

+ 23 - 0
commons/src/main/java/com/jzg/commons/entity/vo/InvitationVo.java

@@ -0,0 +1,23 @@
+package com.jzg.commons.entity.vo;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+
+import java.util.List;
+
+@Data
+@Schema(description = "app注册返回信息VO")
+public class InvitationVo {
+
+    @Schema(description = "是否已经加入 0.新加入 1.已经加入")
+    private Integer isJoined;
+
+    @Schema(description = "机构名称")
+    private String deptName;
+
+    @Schema(description = "手机号")
+    private String mobile;
+
+    @Schema(description = "租户名称")
+    private String systemCode;
+}

+ 4 - 0
commons/src/main/java/com/jzg/commons/entity/vo/UserInfoVo.java

@@ -13,6 +13,10 @@ import java.util.List;
 @NoArgsConstructor
 public class UserInfoVo {
 
+    @Schema(description = "主键id")
+    private String id;
+
+
     @Schema(description = "用户id")
     private String userId;
 

+ 9 - 1
tenant/insurance/quotation-summary/src/main/java/com/jzg/quotation/summary/controller/UnifyOrderManager.java

@@ -18,6 +18,7 @@ import com.jzg.commons.entity.po.PtlAgreement;
 import com.jzg.commons.entity.po.SysUploadFiles;
 import com.jzg.commons.entity.quote.vo.QuoteVo;
 import com.jzg.commons.entity.quote.vo.aggregated.*;
+import com.jzg.commons.entity.quote.vo.base.LoginBase;
 import com.jzg.commons.entity.quote.vo.underwriting.SpecialAppointmentsVo;
 import com.jzg.commons.entity.vo.InsCompanyClauseVo;
 import com.jzg.commons.exception.SystemException;
@@ -165,7 +166,7 @@ public class UnifyOrderManager {
                 .eq(InsOrdersCarInfo::getVinNo, vinNo)
                 .eq(InsOrdersCarInfo::getEngineNo, engineNo));
         if (Objects.nonNull(carInfos) && !carInfos.isEmpty()) {
-            InsOrdersVo insOrders = insOrdersService.selectById(Long.parseLong(carInfos.get(0).getOrderNo()));
+            InsOrdersVo insOrders = insOrdersService.queryById(Long.parseLong(carInfos.get(0).getOrderNo()));
             if (Objects.nonNull(insOrders)) {
                 quoteNo = String.valueOf(insOrders.getQuoteNo());
             }
@@ -521,4 +522,11 @@ public class UnifyOrderManager {
                 baseController.getToken(), MessageCodeEnum.TEMPLATE_7);
         return HttpResult.ok(insOrdersPdfUrl);
     }
+
+    @PostMapping("test")
+    @Operation(summary = "测试")
+    public HttpResult test(@RequestBody LoginBase loginBase) {
+        zhongMeiCrawlerRequest.login(loginBase);
+        return  HttpResult.ok();
+    }
 }

+ 3 - 0
tenant/insurance/quotation-summary/src/main/java/com/jzg/quotation/summary/service/InsOrdersService.java

@@ -35,6 +35,9 @@ public interface InsOrdersService extends IService<InsOrders> {
     IPage<OrdersListVo> pageList(InsOrdersParam insOrdersParam);
 
 
+    InsOrdersVo queryById(Long id);
+
+
     InsOrdersVo selectById(Long id);
 
 

+ 10 - 0
tenant/insurance/quotation-summary/src/main/java/com/jzg/quotation/summary/service/impl/InsOrdersServiceImpl.java

@@ -347,6 +347,16 @@ public class InsOrdersServiceImpl extends ServiceImpl<InsOrdersMapper, InsOrders
         return ordersListVoIPage;
     }
 
+    @Override
+    public InsOrdersVo queryById(Long id) {
+        // 1. 查询订单信息
+        InsOrdersVo insOrdersVo = insOrdersMapper.getById(id);
+        if (insOrdersVo == null) {
+            throw new IllegalArgumentException("查询结果为空,无法处理订单信息");
+        }
+        return insOrdersVo;
+    }
+
     @Override
     public InsOrdersVo selectById(Long id) {
         // 1. 查询订单信息

+ 7 - 7
tenant/insurance/quotation-zhongmei/src/main/java/com/jzg/quotation/zhongmei/api/service/impl/ZhongMeiApiRequestImpl.java

@@ -59,7 +59,7 @@ public class ZhongMeiApiRequestImpl implements ZhongMeiApiRequest {
     public QuoteResultsVo quote(QuoteVo quoteVo) {
         OrderBase order = quoteVo.getOrder();
         AttributionInformationVo attributionInformationVo = order.getAttributionInformationVo();
-        String url = getApiUrl(order.getInsuranceCompanyId());
+        String url = getApiUrl(order.getInsuranceCompanyCode());
         //配置信息
         ZmApiConfigureParameters parameters = ConfigureParametersConversion.conversionEntity(ZmApiConfigureParameters.class, attributionInformationVo.getConfigInfo());
         BaseRequestHead baseRequestHead = new BaseRequestHead(parameters);
@@ -213,7 +213,7 @@ public class ZhongMeiApiRequestImpl implements ZhongMeiApiRequest {
     @Transactional
     public UnderwritingResultsVo underwriting(UnderwritingVo underwritingVo) {
         OrderBase orderBase = underwritingVo.getOrder();
-        String url = getApiUrl(orderBase.getInsuranceCompanyId());
+        String url = getApiUrl(orderBase.getInsuranceCompanyCode());
         //获取配置信息
         ZmApiConfigureParameters parameters = ConfigureParametersConversion.conversionEntity(ZmApiConfigureParameters.class, orderBase.getAttributionInformationVo().getConfigInfo());
 
@@ -273,7 +273,7 @@ public class ZhongMeiApiRequestImpl implements ZhongMeiApiRequest {
     @Override
     public PaymentLinkResultsVo getPaymentLink(PaymentLinkVo paymentLinkVo) throws JsonProcessingException {
         OrderBase orderBase = paymentLinkVo.getOrder();
-        String url = getApiUrl(orderBase.getInsuranceCompanyId());
+        String url = getApiUrl(orderBase.getInsuranceCompanyCode());
         ZmApiOrder zmApiOrder = zhongmeiApiOrderService.findByOrdersNo(orderBase.getOrdersNo());
         String payUrl = zmApiOrder.getPayUrl();
         //如果mongodb中没有支付链接,说明是人工审核,需要调用核保状态查询接口
@@ -298,7 +298,7 @@ public class ZhongMeiApiRequestImpl implements ZhongMeiApiRequest {
     @Override
     public void uploadImage(InsuranceUploadImageVo insuranceUploadImageVo) {
         OrderBase orderBase = insuranceUploadImageVo.getOrder();
-        String url = getApiUrl(orderBase.getInsuranceCompanyId());
+        String url = getApiUrl(orderBase.getInsuranceCompanyCode());
         //获取配置信息
         AttributionInformationVo attributionInformationVo = orderBase.getAttributionInformationVo();
         ZmApiConfigureParameters parameters = ConfigureParametersConversion.conversionEntity(ZmApiConfigureParameters.class, attributionInformationVo.getConfigInfo());
@@ -320,7 +320,7 @@ public class ZhongMeiApiRequestImpl implements ZhongMeiApiRequest {
     public DownloadPolicyResultVo downloadPolicy(DownloadPolicyVo downloadPolicyVo) {
         //获取配置信息
         OrderBase orderBase = downloadPolicyVo.getOrder();
-        String url = getApiUrl(orderBase.getInsuranceCompanyId());
+        String url = getApiUrl(orderBase.getInsuranceCompanyCode());
         AttributionInformationVo attributionInformationVo = orderBase.getAttributionInformationVo();
         ZmApiConfigureParameters parameters = ConfigureParametersConversion.conversionEntity(ZmApiConfigureParameters.class, attributionInformationVo.getConfigInfo());
         DownloadPolicyResultVo downloadPolicyResultVo = new DownloadPolicyResultVo();
@@ -384,7 +384,7 @@ public class ZhongMeiApiRequestImpl implements ZhongMeiApiRequest {
     public OrderStatusResultVo queryOrderState(OrderStatusVo orderStatusVo) {
         //获取配置信息
         OrderBase orderBase = orderStatusVo.getOrder();
-        String url = getApiUrl(orderBase.getInsuranceCompanyId());
+        String url = getApiUrl(orderBase.getInsuranceCompanyCode());
         OrderStatusResultVo orderStatusResultVo = new OrderStatusResultVo();
 
         AttributionInformationVo attributionInformationVo = orderBase.getAttributionInformationVo();
@@ -429,4 +429,4 @@ public class ZhongMeiApiRequestImpl implements ZhongMeiApiRequest {
         }
         return orderStatusResultVo;
     }
-}
+}

+ 15 - 3
tenant/insurance/quotation-zhongmei/src/main/java/com/jzg/quotation/zhongmei/crawler/component/ZmCrawlerRequestComponent.java

@@ -1,8 +1,8 @@
 package com.jzg.quotation.zhongmei.crawler.component;
 
 import cn.hutool.core.util.XmlUtil;
+import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson.JSONObject;
-import com.alibaba.fastjson2.JSON;
 import com.jzg.commons.exception.SystemException;
 import com.jzg.quotation.commons.component.RequestComponent;
 import com.jzg.quotation.commons.constant.CacheConstant;
@@ -196,6 +196,7 @@ public class ZmCrawlerRequestComponent {
      * @param <Response>
      */
     public <Response> Response request(CrawlerRequestUrlStandard standard, BaseRequest request, Class<Response> responseClass) {
+        System.out.println(JSON.toJSON(request));
         String requestStr = Base64Tool.encode(JSONObject.toJSONString(request));
         ResponseEntity<Response> responseResponseEntity = requestComponent.objectPost(standard.getRequestUrl(zmCrawlerProperties.getBaseUrl()), requestStr, responseClass);
         return responseResponseEntity.getBody();
@@ -210,6 +211,7 @@ public class ZmCrawlerRequestComponent {
         Mono<ZmCrawlerModelQueryResponse> responseMono = requestComponent.postGbk(RequestUrl.MODELS_QUERY.getRequestUrl(zmCrawlerProperties.getBaseUrl()),
                 Base64Tool.encode(JSONObject.toJSONString(modelQueryRequest)), ZmCrawlerModelQueryResponse.class,new HttpHeaders());
         ZmCrawlerModelQueryResponse zmCrawlerModelQueryResponseResponse = responseMono.block();
+        System.out.println(JSON.toJSONString(zmCrawlerModelQueryResponseResponse.getCarModel()));
         return zmCrawlerModelQueryResponseResponse.getCarModel();
     }
 
@@ -243,7 +245,7 @@ public class ZmCrawlerRequestComponent {
      * @return
      */
     public ZmCrawlerActualValueResponse getActualValue(ZmCrawlerActualValueRequest actualValueRequest) {
-        System.out.println(JSONObject.toJSONString(actualValueRequest));
+        System.out.println(JSON.toJSONString(actualValueRequest));
         Mono<ZmCrawlerActualValueResponse> responseMono = requestComponent.postGbk(RequestUrl.ACTUAL_VALUE.getRequestUrl(zmCrawlerProperties.getBaseUrl()),
                 Base64Tool.encode(JSONObject.toJSONString(actualValueRequest)), ZmCrawlerActualValueResponse.class,new HttpHeaders());
         ZmCrawlerActualValueResponse response = responseMono.block();
@@ -256,7 +258,17 @@ public class ZmCrawlerRequestComponent {
      * @return
      */
     public ZmCrawlerQuotedPriceResponse quotedPrice(ZmCrawlerQuotedPriceRequest quotedPriceRequest) {
-        return request(RequestUrl.QUOTED_PRICE, quotedPriceRequest, ZmCrawlerQuotedPriceResponse.class);
+        System.out.println(JSON.toJSON(quotedPriceRequest));
+        String aaa = JSON.toJSONString(quotedPriceRequest);
+        JSONObject json =JSON.parseObject(aaa);
+        System.out.println(Base64Tool.sort(json).toJSONString());
+        Mono<ZmCrawlerQuotedPriceResponse> responseMono = requestComponent.postGbk(RequestUrl.QUOTED_PRICE.getRequestUrl(zmCrawlerProperties.getBaseUrl()),
+                Base64Tool.encode(JSON.toJSONString(quotedPriceRequest)), ZmCrawlerQuotedPriceResponse.class,new HttpHeaders());
+        ZmCrawlerQuotedPriceResponse response = responseMono.onErrorResume(ex -> {
+            log.error("Request failed", ex);
+            return Mono.empty();
+        }).block();
+        return response;
     }
 
     /**

+ 1 - 1
tenant/insurance/quotation-zhongmei/src/main/java/com/jzg/quotation/zhongmei/crawler/entity/Request/ZmCrawlerActualValueRequest.java

@@ -90,7 +90,7 @@ public class ZmCrawlerActualValueRequest extends BaseRequest {
         this.motorUsageTypeCode = carInfoVo.getCarNatureCode();
         if(carInfoVo.getEnergyTypeCode().equals("0")){
             this.planCode = "1379";
-            this.riskCode = "'0361'";
+            this.riskCode = "0361";
         }else{
             this.planCode= "1382";
             this.riskCode = "0365";

+ 240 - 106
tenant/insurance/quotation-zhongmei/src/main/java/com/jzg/quotation/zhongmei/crawler/entity/Request/ZmCrawlerQuotedPriceRequest.java

@@ -1,6 +1,7 @@
 package com.jzg.quotation.zhongmei.crawler.entity.Request;
 
 import com.fasterxml.jackson.annotation.JsonProperty;
+import com.jzg.commons.constants.InsuranceRisk;
 import com.jzg.commons.entity.quote.vo.*;
 import com.jzg.commons.constants.quote.enums.quote.PropertyCode;
 import com.jzg.commons.entity.quote.vo.QuoteVo;
@@ -18,15 +19,11 @@ import lombok.Data;
 import lombok.EqualsAndHashCode;
 import lombok.NoArgsConstructor;
 import lombok.RequiredArgsConstructor;
-import org.springframework.beans.BeanUtils;
 
 import java.io.Serial;
 import java.io.Serializable;
 import java.time.LocalDateTime;
-import java.util.ArrayList;
-import java.util.Calendar;
-import java.util.Date;
-import java.util.List;
+import java.util.*;
 
 /**
  * @description: 中煤财险 报价请求 入参
@@ -65,7 +62,7 @@ public class ZmCrawlerQuotedPriceRequest extends BaseRequest {
         @JsonProperty("imageSrcxszzm")
         private String imageSrcxszzm;
 
-        @JsonProperty("imageSrcxszzm")
+        @JsonProperty("imageSrcxszName")
         private String imageSrcxszName;
 
         @JsonProperty("businessMain")
@@ -97,8 +94,12 @@ public class ZmCrawlerQuotedPriceRequest extends BaseRequest {
             String date = DateUtil.getDateFormat(new Date(), DateUtil.FULL_TIME_SPLIT_PATTERN);
             ContractDTO ciContract = buildCiContract(quoteVo, date);
             ContractDTO biContract = buildBiContract(quoteVo, date);
-            contracts.add(ciContract);
-            contracts.add(biContract);
+            if(Objects.nonNull(ciContract)){
+                contracts.add(ciContract);
+            }
+            if(Objects.nonNull(biContract)){
+                contracts.add(biContract);
+            }
             return contracts;
         }
 
@@ -110,13 +111,14 @@ public class ZmCrawlerQuotedPriceRequest extends BaseRequest {
          */
         public ContractDTO buildCiContract(QuoteVo quoteVo, String productionDate) {
             ContractDTO contract = new ContractDTO();
-
             RiskInfoVo ciRiskInfoVo = quoteVo.getCiRiskInfoVo();
-            ContractDTO.ContractMainDTO contractMain = new ContractDTO.ContractMainDTO(ciRiskInfoVo, productionDate);
+            if(Objects.isNull(ciRiskInfoVo)){return null;}
+            ContractDTO.ContractMainDTO contractMain = new ContractDTO.ContractMainDTO(quoteVo,ciRiskInfoVo, productionDate);
             contract.setContractMain(contractMain);
-
+            contract.setCoinsInfoBean(new ArrayList<>());
+            contract.setEngage(new ArrayList<>());
             VehicleAndVesselTaxVo taxVo = quoteVo.getVehicleAndVesselTaxVo();
-            ContractDTO.TaxDTO taxDTO = new ContractDTO.TaxDTO(taxVo);
+            ContractDTO.TaxDTO taxDTO = new ContractDTO.TaxDTO(taxVo,quoteVo.getOwnersInfo());
             contract.setTax(taxDTO);
 
             ContractDTO.CoverageDTO coverageDTO = new ContractDTO.CoverageDTO();
@@ -124,10 +126,22 @@ public class ZmCrawlerQuotedPriceRequest extends BaseRequest {
             coverageDTO.setExpiryDate(ciRiskInfoVo.getEndDate());
             coverageDTO.setKindCode(ContractEnum.C_BZ.getKindCode());
             coverageDTO.setKindName(ContractEnum.C_BZ.getKindName());
+            coverageDTO.setAmount("");
+            coverageDTO.setCommission(0);
+            coverageDTO.setCoverageAdjustRate("");
+            coverageDTO.setCoveragePremium("");
+            coverageDTO.setCoverageRiskPremium("");
+            coverageDTO.setKindNo(0);
+            coverageDTO.setModeCode("");
+            coverageDTO.setModeName("");
+            coverageDTO.setOperateType("");
+            coverageDTO.setQuantity(0);
+            coverageDTO.setUnitAmount(0);
             List<ContractDTO.CoverageDTO> coverageDTOList = new ArrayList<>();
             coverageDTOList.add(coverageDTO);
             contract.setCoverage(coverageDTOList);
-
+            ContractDTO.PlantFormMessageBeanDTO plantFormMessageBeanDTO = new ContractDTO.PlantFormMessageBeanDTO();
+            contract.setPlantFormMessageBean(plantFormMessageBeanDTO);
             return contract;
         }
 
@@ -140,7 +154,8 @@ public class ZmCrawlerQuotedPriceRequest extends BaseRequest {
         public ContractDTO buildBiContract(QuoteVo quoteVo, String productionDate) {
             ContractDTO contract = new ContractDTO();
             RiskInfoVo biRiskInfoVo = quoteVo.getBiRiskInfoVo();
-            ContractDTO.ContractMainDTO contractMain = new ContractDTO.ContractMainDTO(biRiskInfoVo, productionDate);
+            if(Objects.isNull(biRiskInfoVo)){return null;}
+            ContractDTO.ContractMainDTO contractMain = new ContractDTO.ContractMainDTO(quoteVo,biRiskInfoVo, productionDate);
             contract.setContractMain(contractMain);
 
             ContractDTO.ApmServiceFeeBeanDTO apmServiceFeeBeanDTO = new ContractDTO.ApmServiceFeeBeanDTO();
@@ -157,9 +172,9 @@ public class ZmCrawlerQuotedPriceRequest extends BaseRequest {
                 coverageDTO.setCalculateFlag("Y");
                 coverageDTO.setOptNotDeductibleFlag(1);
                 coverageDTO.setNotDeductibleFlag(true);
-                coverageDTO.setAmount(Double.parseDouble(kindInfoVo.getAmount()));
+                coverageDTO.setAmount(kindInfoVo.getAmount());
                 coverageDTO.setUnitAmount(Integer.parseInt(kindInfoVo.getUnitAmount()));
-                coverageDTO.setQuantity(kindInfoVo.getQuantity());
+                coverageDTO.setQuantity(Integer.parseInt(kindInfoVo.getQuantity()));
                 coverageDTO.setValidDate(biRiskInfoVo.getStartDate());
                 coverageDTO.setExpiryDate(biRiskInfoVo.getEndDate());
                 coverageDTOList.add(coverageDTO);
@@ -170,9 +185,9 @@ public class ZmCrawlerQuotedPriceRequest extends BaseRequest {
 
         public List<CustomerDTO> buildCustomerList (QuoteVo quoteVo) {
             List<CustomerDTO> customerDTOList = new ArrayList<>();
-            CustomerDTO ownerDTO = transferCustomer(quoteVo.getOwnersInfo());
-            CustomerDTO policyDTO = transferCustomer(quoteVo.getPolicyHolderInfo());
-            CustomerDTO insuredDTO = transferCustomer(quoteVo.getInsuredPersonInfo());
+            CustomerDTO ownerDTO = transferCustomer(quoteVo.getOwnersInfo(), "3");
+            CustomerDTO policyDTO = transferCustomer(quoteVo.getPolicyHolderInfo(),"1");
+            CustomerDTO insuredDTO = transferCustomer(quoteVo.getInsuredPersonInfo(),"2");
             customerDTOList.add(ownerDTO);
             customerDTOList.add(policyDTO);
             customerDTOList.add(insuredDTO);
@@ -184,35 +199,56 @@ public class ZmCrawlerQuotedPriceRequest extends BaseRequest {
          * @param customerInfoVo
          * @return
          */
-        public CustomerDTO transferCustomer (CustomerInfoVo customerInfoVo) {
+        public CustomerDTO transferCustomer (CustomerInfoVo customerInfoVo,String role) {
             CustomerDTO customerDTO = new CustomerDTO();
             CustomerDTO.ContactDTO contactDTO = new CustomerDTO.ContactDTO();
+            List<CustomerDTO.ContactDTO> contact = new ArrayList<>();
             contactDTO.setAddr(customerInfoVo.getAddr());
             contactDTO.setMobile(customerInfoVo.getMobile());
             contactDTO.setName(customerInfoVo.getName());
             contactDTO.setLinkName(customerInfoVo.getName());
             contactDTO.setMobile1(customerInfoVo.getMobile());
-            contactDTO.setRelated("01");
-            customerDTO.getContact().add(contactDTO);
+            contact.add(contactDTO);
+            customerDTO.setContact(contact);
 
             customerDTO.setAge(customerInfoVo.getAge());
+            customerDTO.setClientJobCode("86");
+            customerDTO.setClientJobName("旅馆服务员");
             customerDTO.setContactAddr_app(customerInfoVo.getAddr());
-            customerDTO.setBirthday(customerInfoVo.getBirthday());
+            customerDTO.setCountryCode("CN");
+            customerDTO.setCountryName("中华人民共和国");
+            customerDTO.setCustomerDeal("1");
+            customerDTO.setInvocieType("02");
+            customerDTO.setBirthday(customerInfoVo.getBirthday() + " 00:00:00");
             customerDTO.setSex(customerInfoVo.getGender());
+            customerDTO.setType("1");
+            customerDTO.setStatus("I");
+            customerDTO.setCarInsuredRelation("9");
+            customerDTO.setMoneyLaunderingInd("651003");
+            customerDTO.setIsClaimRights("1");
             customerDTO.setPayMobile(customerInfoVo.getMobile());
+            customerDTO.setJobRisk("1");
+            customerDTO.setRole(role);
+            customerDTO.setContacttype("99");
+            customerDTO.setPayIdentifyType("01");
+            customerDTO.setDriveYear(0);
+            customerDTO.setLinkerMobile(customerInfoVo.getMobile());
+            customerDTO.setOcrNation("汉");
             if (PropertyCode.PROPERTY_CODE_1.getCode().equals(customerInfoVo.getProperty())) {//个人
+                customerDTO.setRealName(customerInfoVo.getName());
                 customerDTO.setName(customerInfoVo.getName());
                 customerDTO.setIdentifyType("01");
                 customerDTO.setIdentifyNumber(customerInfoVo.getIdentifyNumber());
                 customerDTO.setPayIdentifyNumber(customerInfoVo.getIdentifyNumber());
-                customerDTO.setIdentifyValidDate(customerInfoVo.getIdentifyValidDate());
-                customerDTO.setIdentifyValidEndDate(customerInfoVo.getIdentifyValidEndDate());
+                customerDTO.setIdentifyValidDate(customerInfoVo.getIdentifyValidDate() + " 00:00:00");
+                customerDTO.setIdentifyValidEndDate(customerInfoVo.getIdentifyValidEndDate() + " 23:59:59");
             } else {//法人
                 customerDTO.setIdentifyType("02");
                 customerDTO.setIdentifyNumber(customerInfoVo.getLeaderIdentifyNumber());
                 customerDTO.setName(customerInfoVo.getLegalPerson());
-                customerDTO.setPayIdentifyNumber(customerInfoVo.getLeaderIdentifyNumber());
-                customerDTO.setIdentifyValidEndDate(customerInfoVo.getLeaderOtherEffectiveDate());
+                customerDTO.setRealName(customerInfoVo.getLegalPerson());
+                customerDTO.setPayIdentifyNumber(customerInfoVo.getLeaderIdentifyNumber() + " 00:00:00");
+                customerDTO.setIdentifyValidEndDate(customerInfoVo.getLeaderOtherEffectiveDate() + " 23:59:59");
             }
 
             return customerDTO;
@@ -235,11 +271,13 @@ public class ZmCrawlerQuotedPriceRequest extends BaseRequest {
         public BusinessDataDTO(ZmCrawlerConfigureParameters parameters, QuoteVo quoteVo,
                                SaleInfoDTO saleInfoDTO, ZmCrawlerModelQueryResponse.FullCarDataDTO fullCarDataDTO,
                                ZmCrawlerActualValueResponse actualValueResponse, String userCode) {
-//            this.imageSrcxszzm = "";
-//            this.imageSrcxszName = "";
+            this.imageSrcxszzm = "";
+            this.imageSrcxszName = "";
             this.businessMain = new BusinessMainDTO(parameters, userCode,quoteVo.getCarInfoVo());
-            this.insuredObject = new InsuredObjectDTO(fullCarDataDTO, quoteVo, actualValueResponse);
+            InsuredObjectDTO insuredObjectDTO = new InsuredObjectDTO(fullCarDataDTO, quoteVo, actualValueResponse);
+            this.insuredObject = insuredObjectDTO;
             this.antiMoney = new AntiMoneyDTO();
+
             this.saleInfo = saleInfoDTO;
             //处理险种信息
             this.contract = buildContractList(quoteVo);
@@ -283,6 +321,9 @@ public class ZmCrawlerQuotedPriceRequest extends BaseRequest {
             @JsonProperty("operatorCode")
             private String operatorCode;
 
+            @JsonProperty("contactRemark")
+            private String contactRemark;
+
             public BusinessMainDTO(ZmCrawlerConfigureParameters parameters, String userCode, CarInfoVo carInfoVo) {
                 this.appointAreaCode = "";
                 this.businessType = "T";
@@ -291,16 +332,17 @@ public class ZmCrawlerQuotedPriceRequest extends BaseRequest {
                 if(carInfoVo.getEnergyTypeCode().equals("0")){
                     this.planCode = "1379";
                 }else{
-                    this.planCode= "1382";
+                    this.planCode = "1382";
                 }
 
                 // 获取前五分钟的时分秒
                 LocalDateTime now = LocalDateTime.now();                 // 当前时间
                 LocalDateTime fiveMinutesAgo = now.minusMinutes(5);     // 往前减 5 分钟
                 this.recordTime = fiveMinutesAgo.format(TimeProcessing.DATE_TIME_FORMATTER);
-                this.oneForOneFlag = "1";
+                this.oneForOneFlag = "0";
                 this.calculateTime = now.format(TimeProcessing.DATE_TIME_FORMATTER);
                 this.operatorCode = userCode;
+                this.contactRemark = "1";
             }
 
         }
@@ -315,7 +357,7 @@ public class ZmCrawlerQuotedPriceRequest extends BaseRequest {
             @JsonProperty("platformCar")
             private PlatformCarDTO platformCar;
 
-            @JsonProperty("platformCar")
+            @JsonProperty("policyCar")
             private PolicyCarDTO policyCar;
 
             @JsonProperty("simpleStadarCar")
@@ -327,37 +369,38 @@ public class ZmCrawlerQuotedPriceRequest extends BaseRequest {
             @JsonProperty("charging")
             private List<String> charging;
 
+            @JsonProperty("violationBeanlist")
+            private List<String> violationBeanlist;
+
             @JsonProperty("modelDetails")
             private ModelDetailsDTO modelDetails;
 
             public InsuredObjectDTO(ZmCrawlerModelQueryResponse.FullCarDataDTO fullCarDataDTO, QuoteVo quoteVo, ZmCrawlerActualValueResponse actualValueResponse) {
-                SimpleStadarCarDTO stadarCarDTO = new SimpleStadarCarDTO();
-                BeanUtils.copyProperties(fullCarDataDTO, stadarCarDTO);
-                stadarCarDTO.setBrand(fullCarDataDTO.getFullCarData().getModelName());
-                stadarCarDTO.setDisplacement((double)fullCarDataDTO.getFullCarData().getDisplacement()/1000);
-                stadarCarDTO.setPrintBrandName(fullCarDataDTO.getFullCarData().getModelName());
-                stadarCarDTO.setPurchasePriceCopy(fullCarDataDTO.getFullCarData().getPurchasePrice());
+                SimpleStadarCarDTO stadarCarDTO = new SimpleStadarCarDTO(fullCarDataDTO.getFullCarData());
                 this.simpleStadarCar = stadarCarDTO;
 
                 PlatformCarDTO platformCarDTO = new PlatformCarDTO();
                 platformCarDTO.setDeptCode(fullCarDataDTO.getPlatFormCar().getDeptCode());
-                if(platformCarDTO.deptCode.equals("0")){
-                    platformCarDTO.setDeptName("国产");
-                }else if(platformCarDTO.deptCode.equals("1")){
-                    platformCarDTO.setDeptName("合资");
-                }else{
-                    platformCarDTO.setDeptName("进口");
-                }
-                platformCarDTO.setCarName(fullCarDataDTO.getFullCarData().getLocalModelCode());
+//                if(platformCarDTO.deptCode.equals("0")){
+//                    platformCarDTO.setDeptName("国产");
+//                }else if(platformCarDTO.deptCode.equals("1")){
+//                    platformCarDTO.setDeptName("合资");
+//                }else{
+//                    platformCarDTO.setDeptName("进口");
+//                }
+                platformCarDTO.setBasicRateCode("");
+                platformCarDTO.setPlatSeriesGroup("E");
+//                platformCarDTO.setCarName(fullCarDataDTO.getFullCarData().getLocalModelCode());
                 this.platformCar = platformCarDTO;
 
                 CarInfoVo carInfoVo = quoteVo.getCarInfoVo();
-                this.policyCar = new PolicyCarDTO(carInfoVo, actualValueResponse);
+                PolicyCarDTO policyCar = new PolicyCarDTO(carInfoVo, actualValueResponse,fullCarDataDTO.getFullCarData());
+                this.policyCar = policyCar;
 
-                this.modelDetails = new ModelDetailsDTO(fullCarDataDTO);
-
-                //specializedDevice   charging 稍后补充
+                ModelDetailsDTO modelDetails = new ModelDetailsDTO();
+                this.modelDetails = modelDetails;
 
+                this.violationBeanlist = new ArrayList<>();
             }
 
             @Data
@@ -376,6 +419,15 @@ public class ZmCrawlerQuotedPriceRequest extends BaseRequest {
 
                 @JsonProperty("carName")
                 private String carName;
+
+                @JsonProperty("basicRateCode")
+                private String basicRateCode;
+
+                @JsonProperty("platSeriesGroup")
+                private String platSeriesGroup;
+
+
+
             }
 
             @Data
@@ -417,6 +469,15 @@ public class ZmCrawlerQuotedPriceRequest extends BaseRequest {
                 @JsonProperty("personLiable")
                 private String personLiable;
 
+                @JsonProperty("attachNature")
+                private String attachNature;
+
+                @JsonProperty("averageMileage")
+                private String averageMileage;
+
+                @JsonProperty("engineModel")
+                private String engineModel;
+
                 @JsonProperty("contrastFlag")
                 private Boolean contrastFlag;
 
@@ -528,26 +589,22 @@ public class ZmCrawlerQuotedPriceRequest extends BaseRequest {
                 @JsonProperty("contrastprice")
                 private Integer contrastprice;
 
-                public PolicyCarDTO (CarInfoVo carInfoVo, ZmCrawlerActualValueResponse actualValueResponse) {
-                    this.checkFlag = "0";
-                    this.hKFlag = false;
-                    this.HKPlateNo = "";
+                public PolicyCarDTO (CarInfoVo carInfoVo, ZmCrawlerActualValueResponse actualValueResponse, ZmCrawlerModelQueryResponse.FullCarDataDTO.FullCarData fullCarData) {
                     this.vIN = carInfoVo.getVinNo();
                     this.actualValue = actualValueResponse.getActualValue();
-                    this.carCheckReason = "";
+                    this.aheadRule = "1";
+                    this.attachNature = "04";
+                    this.averageMileage = "";
                     this.carCheckStatus = "2";
                     this.carCheckTime = "";
                     this.carChecker = "";
-                    this.repairTime = "";
-                    this.personLiable = "";
-                    this.contrastFlag = false;
+                    this.carQueryCheckCode = "";
+                    this.carUseType = "01";
+                    this.chgOwnerFlag = "0";
                     this.engine = carInfoVo.getEngineNo();
-                    this.fleetNo = "";
                     this.issueDate = carInfoVo.getIssueDate() + " 00:00:00";
-                    this.loanVehicleFlag = carInfoVo.isLoanStatus();
-                    this.model = "";
-                    this.carUseType = carInfoVo.getVehicleUseCode();
-                    this.motorType = "";
+                    this.motorMainType = carInfoVo.getCarKindCode();
+                    this.motorSubType = "101";
                     if(carInfoVo.getCarKindCode().equals("100")){
                         this.motorTypeCode = "11";
                     }else{
@@ -555,32 +612,19 @@ public class ZmCrawlerQuotedPriceRequest extends BaseRequest {
                     }
                     this.motorUsageTypeCode = carInfoVo.getCarNatureCode();
                     this.newCarSign = false;
-                    this.noDamageYears = "";
-                    this.noLicenseFlag = false;
+                    this.noDamageYears = "0";
+                    this.personLiable = "";
+                    this.plateColorCode = carInfoVo.getLicenseColorCode();
                     this.plateNo = carInfoVo.getLicenseNo();
                     this.plateType = "02";
-//                    this.pmQueryNo = carInfoVo.getCarTypeCode();
                     this.registerDate = carInfoVo.getRegisterDate() + " 00:00:00";
-//                    this.damagedFactorGrade = "";
-//                    this.runArea = "";
+                    this.repairTime = "";
                     this.runMiles = 0;
                     this.taxInclued = false;
-                    this.transferDate = carInfoVo.getTransferDate();
+                    this.transferDate = "";
                     this.useYears = actualValueResponse.getUseYears();
                     this.vehicleType = carInfoVo.getCarTypeCode();
-                    this.chgOwnerFlag = "0";
-                    this.lossInsuranceModel = "01";
-                    this.nolocalCarFlag = "0";
-                    this.plateColorCode = carInfoVo.getLicenseColorCode();
-//                    this.secondhandCarFlag = "0";
-//                    this.shortPeriodReason = "0";
-                    this.carQueryCheckCode = "";
-//                    this.splitChgOwner = "0";
-                    this.aheadRule = "1";
-                    this.motorMainType = carInfoVo.getCarKindCode();
-                    this.motorSubType = "101";
-                    this.isrelief = "0";
-                    this.contrastprice = 0;
+                    this.noLicenseFlag = false;
                 }
             }
 
@@ -719,6 +763,40 @@ public class ZmCrawlerQuotedPriceRequest extends BaseRequest {
 
                 @JsonProperty("purchasePriceCopy")
                 private Integer purchasePriceCopy;
+
+                @JsonProperty("modelCode")
+                private String modelCode;
+
+                @JsonProperty("priceStart")
+                private Integer priceStart;
+
+                @JsonProperty("priceEnd")
+                private Integer priceEnd;
+
+                @JsonProperty("series")
+                private String series;
+
+                public SimpleStadarCarDTO(ZmCrawlerModelQueryResponse.FullCarDataDTO.FullCarData fullCarData){
+                    this.approvedLoad = fullCarData.getApprovedLoad();
+                    this.approvedPassengersCapacity = fullCarData.getApprovedPassengersCapacity();
+                    this.brand = fullCarData.getModelName();
+                    this.carType = fullCarData.getCarType();
+                    this.displacement = fullCarData.getDisplacement() / 1000;
+                    this.energyTypes = fullCarData.getEnergyTypes();
+                    this.fuelType = fullCarData.getFuelType();
+                    this.localModelCode = fullCarData.getLocalModelCode();
+                    this.modelCode = fullCarData.getLocalModelCode();
+                    this.newVehicleClassCode = fullCarData.getNewVehicleClassCode();
+                    this.originalPurchasePrice = fullCarData.getOriginalPurchasePrice();
+                    this.power = fullCarData.getPower();
+                    this.priceEnd = 0;
+                    this.priceStart = 0;
+                    this.printBrandName =fullCarData.getModelName();
+                    this.purchasePrice = fullCarData.getPurchasePrice();
+                    this.purchasePriceCopy = fullCarData.getPurchasePrice();
+                    this.series = fullCarData.getSeries();
+                    this.unladenMass = fullCarData.getUnladenMass();
+                }
             }
 
             @Data
@@ -737,10 +815,10 @@ public class ZmCrawlerQuotedPriceRequest extends BaseRequest {
                 private String modelName;
 
                 @JsonProperty("approvedLoad")
-                private String approvedLoad;
+                private Integer approvedLoad;
 
                 @JsonProperty("approvedPassengersCapacity")
-                private String approvedPassengersCapacity;
+                private Integer approvedPassengersCapacity;
 
                 @JsonProperty("brand")
                 private String brand;
@@ -806,16 +884,14 @@ public class ZmCrawlerQuotedPriceRequest extends BaseRequest {
                 private VehicleRiskDTO vehicleRisk;
 
                 public ModelDetailsDTO(ZmCrawlerModelQueryResponse.FullCarDataDTO fullCarDataDTO) {
-                    ModelDetailsDTO modelDetailsDTO = new ModelDetailsDTO();
                     ZmCrawlerModelQueryResponse.FullCarDataDTO.FullCarData fullCarData = fullCarDataDTO.getFullCarData();
-                    BeanUtils.copyProperties(fullCarData, modelDetailsDTO);
-                    modelDetailsDTO.setBrand(fullCarData.getModelName());
-                    modelDetailsDTO.setDisplacement((double)fullCarData.getDisplacement()/1000);
-                    modelDetailsDTO.setGrossMass("--");
-                    modelDetailsDTO.setDeptCode(fullCarDataDTO.getPlatFormCar().getDeptCode());
-                    modelDetailsDTO.setPlatSeriesGroup("--");
-                    modelDetailsDTO.setModelCode("--");
-                    modelDetailsDTO.setGroupName("--");
+                    this.brand = fullCarData.getModelName();
+                    this.displacement = fullCarData.getDisplacement()/1000;
+                    this.grossMass = "--";
+                    this.deptCode = fullCarDataDTO.getPlatFormCar().getDeptCode();
+                    this.platSeriesGroup = "--";
+                    this.modelCode = "--";
+                    this.groupName = "--";
                 }
 
                 @Data
@@ -1024,8 +1100,25 @@ public class ZmCrawlerQuotedPriceRequest extends BaseRequest {
                 @JsonProperty("productionDate")
                 private String productionDate;
 
-                public ContractMainDTO (RiskInfoVo riskInfoVo, String productionDate) {
-                    this.riskCode = riskInfoVo.getRiskCode();
+                @JsonProperty("checkFlag")
+                private String checkFlag;
+
+                public ContractMainDTO (QuoteVo quoteVo, RiskInfoVo riskInfoVo, String productionDate) {
+
+                    if (InsuranceRisk.TRAFFIC.getCode().equals(riskInfoVo.getRiskCode())) {
+                        this.riskCode = "0330";
+                    }
+                    if (InsuranceRisk.BUSINESS.getCode().equals(riskInfoVo.getRiskCode())) {
+                        if(quoteVo.getCarInfoVo().getEnergyTypeCode().equals("0")){
+                            this.riskCode = "0361";
+                        }else{
+                            this.riskCode = "0365";
+                        }
+                    }
+                    this.appointAreaCode = "";
+                    this.contractNo = "";
+                    this.totalAdjustRate = "";
+                    this.totalPremium = "";
                     this.validDate = riskInfoVo.getStartDate();
                     this.expiryDate = riskInfoVo.getEndDate();
                     this.argueSolution = "1";
@@ -1033,6 +1126,7 @@ public class ZmCrawlerQuotedPriceRequest extends BaseRequest {
                     this.coinsFlag = "0";
                     this.renewalFlag = false;
                     this.productionDate =  productionDate;
+                    this.checkFlag = "";
                 }
             }
 
@@ -1059,6 +1153,15 @@ public class ZmCrawlerQuotedPriceRequest extends BaseRequest {
 
                 @JsonProperty("question")
                 private String question;
+
+                public PlantFormMessageBeanDTO(){
+                    this.answer = "";
+                    this.expireDate = "";
+                    this.queryDate = "";
+                    this.platformCar = "";
+                    this.querySequenceNo = "";
+                    this.question = "";
+                }
             }
 
             @Data
@@ -1104,7 +1207,7 @@ public class ZmCrawlerQuotedPriceRequest extends BaseRequest {
                 private Integer deductible;
 
                 @JsonProperty("commission")
-                private String commission;
+                private Integer commission;
 
                 @JsonProperty("profitRate")
                 private String profitRate;
@@ -1119,7 +1222,7 @@ public class ZmCrawlerQuotedPriceRequest extends BaseRequest {
                 private String coveragePremium;
 
                 @JsonProperty("coverageRiskPremium")
-                private Integer coverageRiskPremium;
+                private String coverageRiskPremium;
 
                 @JsonProperty("expiryDate")
                 private String expiryDate;
@@ -1137,7 +1240,7 @@ public class ZmCrawlerQuotedPriceRequest extends BaseRequest {
                 private String operateType;
 
                 @JsonProperty("quantity")
-                private String quantity;
+                private Integer quantity;
 
                 @JsonProperty("unitAmount")
                 private Integer unitAmount;
@@ -1149,7 +1252,7 @@ public class ZmCrawlerQuotedPriceRequest extends BaseRequest {
                 private String nonDeductibleKindCode;
 
                 @JsonProperty("amount")
-                private Double amount;
+                private String amount;
 
                 @JsonProperty("basePremium")
                 private String basePremium;
@@ -1183,6 +1286,7 @@ public class ZmCrawlerQuotedPriceRequest extends BaseRequest {
 
                 @JsonProperty("remark1")
                 private String remark1;
+
             }
 
             @Data
@@ -1233,7 +1337,7 @@ public class ZmCrawlerQuotedPriceRequest extends BaseRequest {
                 @JsonProperty("taxPayerIdentificationCode")
                 private String taxPayerIdentificationCode;
 
-                public TaxDTO (VehicleAndVesselTaxVo taxVo) {
+                public TaxDTO (VehicleAndVesselTaxVo taxVo, CustomerInfoVo ownersInfo) {
                     this.calculateMode = "4";
                     this.calculateMode1 = "4";
                     this.taxConditionCode = "02";
@@ -1241,14 +1345,20 @@ public class ZmCrawlerQuotedPriceRequest extends BaseRequest {
                     int year = calendar.get(Calendar.YEAR);
                     this.lastPaidYear = year-1 + "";
                     this.paidFeeFlag = "";
-                    this.taxRegisterNumber = "";
+                    this.taxRegisterNumber = "91140000581249866M ";
                     this.annualTaxDue = "";
                     this.sumTax = "";
                     this.sumOverdue = "";
-                    this.taxPayerName = taxVo.getTaxpayerName();
-                    this.taxPayerIdentityType = taxVo.getTaxpayerIdentifier();
-                    this.taxPayerIdentityNo = taxVo.getIdentifyNumber();
-                    this.taxConditionCode = taxVo.getIdentifyNumber();
+//                    this.taxPayerName = taxVo.getTaxpayerName();
+//                    this.taxPayerIdentityType = taxVo.getTaxpayerIdentifier();
+//                    this.taxPayerIdentityNo = taxVo.getIdentifyNumber();
+//                    this.taxConditionCode = taxVo.getIdentifyNumber();
+
+                    this.taxPayerName = ownersInfo.getName();
+                    this.taxPayerIdentityType = "01";
+                    this.taxPayerIdentityNo = ownersInfo.getIdentifyNumber();
+                    this.taxPayerIdentificationCode = ownersInfo.getIdentifyNumber();
+                    this.taxSub = new ArrayList<>();
                 }
             }
 
@@ -1277,6 +1387,9 @@ public class ZmCrawlerQuotedPriceRequest extends BaseRequest {
             @JsonProperty("countryName")
             private String countryName;
 
+            @JsonProperty("customerDeal")
+            private String customerDeal;
+
             @JsonProperty("identifyType")
             private String identifyType;
 
@@ -1361,6 +1474,27 @@ public class ZmCrawlerQuotedPriceRequest extends BaseRequest {
             @JsonProperty("role")
             private String role;
 
+            @JsonProperty("driveYear")
+            private Integer driveYear;
+
+            @JsonProperty("imageSrcsfzbm")
+            private String imageSrcsfzbm;
+
+            @JsonProperty("imageSrcsfzbmName")
+            private String imageSrcsfzbmName;
+
+            @JsonProperty("imageSrcsfzzm")
+            private String imageSrcsfzzm;
+
+            @JsonProperty("imageSrcsfzzmName")
+            private String imageSrcsfzzmName;
+
+            @JsonProperty("linkerMobile")
+            private String linkerMobile;
+
+            @JsonProperty("ocrNation")
+            private String ocrNation;
+
             @JsonProperty("contact")
             private List<ContactDTO> contact;
 

+ 14 - 14
tenant/insurance/quotation-zhongmei/src/main/java/com/jzg/quotation/zhongmei/crawler/entity/Response/ZmCrawlerModelQueryResponse.java

@@ -72,10 +72,10 @@ public class ZmCrawlerModelQueryResponse extends BaseResponse {
             @Serial
             private static final long serialVersionUID = 8852491471550869713L;
 
-            private String analogyPrice;
-            private String analogyPriceTax;
-            private String approvedLoad;
-            private String approvedPassengersCapacity;
+            private Integer analogyPrice;
+            private Integer analogyPriceTax;
+            private Integer approvedLoad;
+            private Integer approvedPassengersCapacity;
             private String brand;
             private String brandCode;
             private String carAlias;
@@ -83,7 +83,7 @@ public class ZmCrawlerModelQueryResponse extends BaseResponse {
             private String carType;
             private String carYear;
             private String createDate;
-            private Integer displacement;
+            private Double displacement;
             private String energyTypes;
             private String factory;
             private String fuelType;
@@ -93,15 +93,15 @@ public class ZmCrawlerModelQueryResponse extends BaseResponse {
             private String jqxClassId;
             private String localModelCode;
             private String modelName;
-            private String motorType;
+            private Integer motorType;
             private String newVehicleClass;
             private String newVehicleClassCode;
-            private String originalPurchasePrice;
-            private String power;
+            private Integer originalPurchasePrice;
+            private Integer power;
             private Integer purchasePrice;
-            private String purchasePriceTax;
-            private String qualityMax;
-            private String qualityMin;
+            private Integer purchasePriceTax;
+            private Integer qualityMax;
+            private Integer qualityMin;
             private String remark;
             private String searchCodeAlias;
             private String series;
@@ -113,10 +113,10 @@ public class ZmCrawlerModelQueryResponse extends BaseResponse {
             private String taxReliefFlag;
             private String tractionMass;
             private String transmissionType;
-            private String unladenMass;
+            private Double unladenMass;
             private String updateDate;
-            private String vehicleSeatMax;
-            private String vehicleSeatMin;
+            private Integer vehicleSeatMax;
+            private Integer vehicleSeatMin;
 
         }
 

+ 7 - 7
tenant/insurance/quotation-zhongmei/src/main/java/com/jzg/quotation/zhongmei/crawler/entity/ZmCrawlerConfigureParameters.java

@@ -58,23 +58,23 @@ public class ZmCrawlerConfigureParameters implements ConfigureParameters {
     /**
      * 经办人编码
      */
-    private String handlerCode;
+    private String handlerPersonCode;
 
     /**
      * 经办人名称
      */
-    private String handlerName;
+    private String handlerPersonName;
 
 //    /**
 //     * 商业险险种编码
 //     */
 //    private String riskCode;
 
-    /**
-     * 中介人名称
-     */
-    private String agentName;
-
+//    /**
+//     * 中介人名称
+//     */
+//    private String agentName;
+//
 //    /**
 //     *  业务员名称
 //     */

+ 7 - 3
tenant/insurance/quotation-zhongmei/src/main/java/com/jzg/quotation/zhongmei/crawler/entity/dto/SaleInfoDTO.java

@@ -119,6 +119,9 @@ public class SaleInfoDTO implements Serializable {
     @JsonProperty("handlerPersonCode")
     private String handlerPersonCode;
 
+    @JsonProperty("handlerPersonName")
+    private String handlerPersonName;
+
     /**
      * 网点属性编码
      */
@@ -298,7 +301,8 @@ public class SaleInfoDTO implements Serializable {
         this.producerDetailName = baseInformationBeanDTO.getProducerDetailName();
         this.producerDetailThreeCode = baseInformationBeanDTO.getProducerDetailThreeCode();
         this.producerDetailThreeName = baseInformationBeanDTO.getProducerDetailThreeName();
-        this.handlerPersonCode = "";
+        this.handlerPersonCode = parameters.getHandlerPersonCode();
+        this.handlerPersonName = parameters.getHandlerPersonName();
         this.netPointPropertyCode = netPointBeanDTO.getNetPointPropertyCode();
         this.netPointPropertyName = netPointBeanDTO.getNetPointPropertyName();
         this.netPointPropertyCode_New = netPointBeanDTO.getNetPointPropertyCode_New();
@@ -313,12 +317,12 @@ public class SaleInfoDTO implements Serializable {
         this.city = parameters.getCity();
         this.district = parameters.getDistrict();
         this.accountUser = parameters.getAccountUser();
-        this.accountUserName = "";
+        this.accountUserName = parameters.getAccountUserName();
         this.learnAdvance = netPointBeanDTO.getLearnAdvance();
         this.learnScore = "";
         this.learnScorePA = "";
         this.netPointCode = netPointBeanDTO.getNetPointCode();
-        this.learnShowFlag = "";
+        this.learnShowFlag = "1";
         this.salesman = new ArrayList<>();
         SalesmanDTO salesmanDTO = new SalesmanDTO();
         salesmanDTO.setComCode("");

Rozdílová data souboru nebyla zobrazena, protože soubor je příliš velký
+ 29 - 0
tenant/insurance/quotation-zhongmei/src/main/java/com/jzg/quotation/zhongmei/crawler/util/Base64Tool.java


+ 12 - 11
tenant/organization/src/main/java/com/jzg/organization/controller/AppUserController.java

@@ -17,6 +17,7 @@ import io.swagger.v3.oas.annotations.Operation;
 import jakarta.servlet.http.HttpServletRequest;
 import org.redisson.api.RedissonClient;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Qualifier;
 import org.springframework.beans.factory.annotation.Value;
 import org.springframework.validation.annotation.Validated;
 import org.springframework.web.bind.annotation.*;
@@ -43,16 +44,19 @@ public class AppUserController extends BaseController {
 
     @Autowired
     RedissonClient redissonClient;
+    @Qualifier("baseController")
+    @Autowired
+    private BaseController baseController;
 
     /**
      * 个人信息查询
-     * @param id 用户id
      * @return
      */
     @GetMapping(value = { "/userInfoGet"})
     @Operation(summary = "个人信息查询")
-    public HttpResult userInfoGet(String id) {
-        return HttpResult.ok(userJzgAppService.userInfoGet(id));
+    public HttpResult userInfoGet() {
+        String userName = baseController.getUserName();
+        return HttpResult.ok(userJzgAppService.userInfoGet(userName));
     }
 
 
@@ -81,8 +85,8 @@ public class AppUserController extends BaseController {
     @Operation(summary = "(密码,短信验证码)验证")
     @PostMapping("/validateCode")
     public HttpResult validateCode(@Validated @RequestBody ValidateCodeParam param) {
-        Boolean passFlag = true;
-        Boolean codeFlag = true;
+        Boolean passFlag = false;
+        Boolean codeFlag = false;
         if(StringUtils.isNotBlank(param.getPassword())){
             // 验证密码
             passFlag = userService.validatePassword(param.getMobile(), param.getPassword());
@@ -91,7 +95,7 @@ public class AppUserController extends BaseController {
             // 验证短信验证码
             codeFlag = userService.validateSmsCode(param.getMobile(), param.getSmsCode());
         }
-        return HttpResult.ok(passFlag && codeFlag );
+        return HttpResult.ok(passFlag || codeFlag );
     }
 
 
@@ -101,7 +105,7 @@ public class AppUserController extends BaseController {
         ServletRequestAttributes attributes = (ServletRequestAttributes) RequestContextHolder.getRequestAttributes();
         HttpServletRequest request = attributes.getRequest();
         String authorizationHeader = request.getHeader("Authorization");
-        AssertionUtils.isFail(StringUtils.isNotBlank(param.getSmsCode()),"验证码不能为空");
+        AssertionUtils.isFail(StringUtils.isBlank(param.getSmsCode()),"验证码不能为空");
         userJzgAppService.replaceMobile(param);
         redissonClient.getBucket(authorizationHeader).delete();
         return HttpResult.ok();
@@ -151,10 +155,7 @@ public class AppUserController extends BaseController {
     @PostMapping("/invitationRegister")
     public HttpResult invitationRegister(@Validated @RequestBody InvitationAddParam param) {
         AssertionUtils.isSucceed(userService.validateSmsCode(param.getMobile(), param.getSmsCode()), "短信验证码不通过!");
-        if(!userJzgAppService.invitationRegister(param)){
-            return HttpResult.ok("该用户已被邀请注册");
-        }
-        return HttpResult.ok("保存成功");
+        return HttpResult.ok(userJzgAppService.invitationRegister(param));
     }
 
     @GetMapping(value = { "/systemListGet"})

+ 2 - 2
tenant/organization/src/main/java/com/jzg/organization/mapper/SysUserJzgAppMapper.java

@@ -22,10 +22,10 @@ public interface SysUserJzgAppMapper extends BaseMapper<SysUserJzgApp> {
 
     /**
      * 个人信息查询
-     * @param id
+     * @param userName
      * @return
      */
-    UserInfoVo userInfoGet(@Param("id") String id);
+    UserInfoVo userInfoGet(@Param("userName") String userName);
 
     /**
      * 所在企业列表查询

+ 4 - 3
tenant/organization/src/main/java/com/jzg/organization/service/SysUserJzgAppService.java

@@ -5,6 +5,7 @@ import com.jzg.commons.entity.dto.*;
 import com.jzg.commons.entity.po.SysUserJzgApp;
 import com.jzg.commons.entity.po.SysUserJzgInfo;
 import com.jzg.commons.entity.vo.AuthInfoVo;
+import com.jzg.commons.entity.vo.InvitationVo;
 import com.jzg.commons.entity.vo.SystemListVo;
 import com.jzg.commons.entity.vo.UserInfoVo;
 
@@ -14,10 +15,10 @@ public interface SysUserJzgAppService extends IService<SysUserJzgApp> {
 
     /**
      * 个人信息查询
-     * @param id
+     * @param userName
      * @return
      */
-    UserInfoVo userInfoGet(String id);
+    UserInfoVo userInfoGet(String userName);
 
     /**
      * 用户实名信息查询
@@ -59,7 +60,7 @@ public interface SysUserJzgAppService extends IService<SysUserJzgApp> {
      * 邀请码注册
      * @param param
      */
-    Boolean invitationRegister(InvitationAddParam param);
+    InvitationVo invitationRegister(InvitationAddParam param);
 
     /**
      * 所在企业列表

+ 8 - 0
tenant/organization/src/main/java/com/jzg/organization/service/SysUserService.java

@@ -138,6 +138,14 @@ public interface SysUserService extends IService<SysUser> {
      */
     boolean validateSmsCode(String mobile, String smsCode);
 
+    /**
+     * 校验短信验证码
+     *
+     * @param mobile
+     * @param smsCode
+     * @return
+     */
+    boolean validateSmsCodeMobile(String mobile, String smsCode);
 
     /**
      * 校验密码

+ 71 - 32
tenant/organization/src/main/java/com/jzg/organization/service/impl/SysUserJzgAppServiceImpl.java

@@ -5,6 +5,7 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.jzg.commons.core.base.BaseController;
+import com.jzg.commons.core.page.HttpResult;
 import com.jzg.commons.entity.dto.AuthInfoAddParam;
 import com.jzg.commons.entity.dto.BusinessInfoAddParam;
 import com.jzg.commons.entity.po.SysUser;
@@ -14,18 +15,17 @@ import com.jzg.commons.entity.po.SysUserJzgInfoFile;
 import com.jzg.commons.entity.dto.*;
 import com.jzg.commons.entity.po.*;
 import com.jzg.commons.entity.vo.AuthInfoVo;
+import com.jzg.commons.entity.vo.InvitationVo;
 import com.jzg.commons.entity.vo.SystemListVo;
 import com.jzg.commons.entity.vo.UserInfoVo;
+import com.jzg.commons.exception.SystemException;
 import com.jzg.commons.util.AssertionUtils;
 import com.jzg.commons.util.MinioUtils;
 import com.jzg.commons.util.StringUtils;
 import com.jzg.organization.component.UnionPayRequestApiComponent;
 import com.jzg.organization.component.request.UnionPayRequest;
 import com.jzg.organization.component.response.UnionPayResponse;
-import com.jzg.organization.mapper.SysUploadFilesMapper;
-import com.jzg.organization.mapper.SysUserJzgAppMapper;
-import com.jzg.organization.mapper.SysUserJzgInfoFileMapper;
-import com.jzg.organization.mapper.SysUserMapper;
+import com.jzg.organization.mapper.*;
 import com.jzg.organization.service.SysUserJzgAppService;
 import com.jzg.organization.service.SysUserJzgInfoFileService;
 import com.jzg.organization.service.SysUserJzgInfoService;
@@ -34,7 +34,9 @@ import com.jzg.organization.service.*;
 import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
 
+import java.util.ArrayList;
 import java.util.List;
 import java.util.Objects;
 import java.util.stream.Collectors;
@@ -65,10 +67,14 @@ public class SysUserJzgAppServiceImpl extends ServiceImpl<SysUserJzgAppMapper, S
 
     @Autowired
     private BaseController baseController;
+    @Autowired
+    private SysDeptMapper sysDeptMapper;
+    @Autowired
+    private SysUploadFilesMapper sysUploadFilesMapper;
 
     @Override
-    public UserInfoVo userInfoGet(String id) {
-        UserInfoVo infoVo = sysUserJzgAppMapper.userInfoGet(id);
+    public UserInfoVo userInfoGet(String userName) {
+        UserInfoVo infoVo = sysUserJzgAppMapper.userInfoGet(userName);
         infoVo.setHeadSculpture(MinioUtils.getPresignedObjectUrl("jzg", infoVo.getHeadSculpture()));
         // 获取身份信息
         LambdaQueryWrapper<SysUserJzgInfo> queryWrapper = new LambdaQueryWrapper<>();
@@ -87,7 +93,7 @@ public class SysUserJzgAppServiceImpl extends ServiceImpl<SysUserJzgAppMapper, S
         AuthInfoVo infoVo = sysUserJzgAppMapper.authInfoGet(id);
         // 获取身份证和营业执照信息
         LambdaQueryWrapper<SysUserJzgInfoFile> queryWrapper = new LambdaQueryWrapper<>();
-        queryWrapper.eq(SysUserJzgInfoFile::getUserId, id);
+        queryWrapper.eq(SysUserJzgInfoFile::getUserId, infoVo.getUserId());
         List<SysUserJzgInfoFile> fileList = userJzgInfoFileService.list(queryWrapper);
         if(CollUtil.isNotEmpty(fileList)){
             infoVo.setFileList(fileList);
@@ -106,6 +112,7 @@ public class SysUserJzgAppServiceImpl extends ServiceImpl<SysUserJzgAppMapper, S
         SysUser user = new SysUser();
         user.setId(param.getUserId());
         user.setIdentity(param.getIdentity());
+        user.setUsername(param.getName());
         user.setIdentityTimeStart(param.getIdentityTimeStart());
         user.setIdentityTimeEnd(param.getIdentityTimeEnd());
 
@@ -116,20 +123,31 @@ public class SysUserJzgAppServiceImpl extends ServiceImpl<SysUserJzgAppMapper, S
         } else {
             msg = "认证成功";
             user.setAuthStatus(1);
-            // 保存身份证图片 查询之前上传的删除重新上传
-            // 获取身份证和营业执照信息
-            LambdaQueryWrapper<SysUserJzgInfoFile> queryWrapper = new LambdaQueryWrapper<>();
-            queryWrapper.eq(SysUserJzgInfoFile::getUserId, param.getUserId())
-                    .in(SysUserJzgInfoFile::getFileType,"sfz1","sfz2");
-            List<SysUserJzgInfoFile> fileList = userJzgInfoFileService.list(queryWrapper);
-            if(CollUtil.isNotEmpty(fileList)){
-                userJzgInfoFileService.removeByIds(fileList);
-            }
-            userJzgInfoFileService.saveBatch(param.getFileList());
+
+        }
+
+        // 保存身份证图片 查询之前上传的删除重新上传
+        // 获取身份证和营业执照信息
+        LambdaQueryWrapper<SysUserJzgInfoFile> queryWrapper = new LambdaQueryWrapper<>();
+        queryWrapper.eq(SysUserJzgInfoFile::getUserId, param.getUserId())
+                .in(SysUserJzgInfoFile::getFileType,"sfz1","sfz2");
+        List<SysUserJzgInfoFile> fileList = userJzgInfoFileService.list(queryWrapper);
+        if(CollUtil.isNotEmpty(fileList)){
+            userJzgInfoFileService.removeByIds(fileList);
+        }
+        List<SysUserJzgInfoFile> infoFiles = new ArrayList<>();
+        for (SysUserJzgInfoFile sysUserJzgInfoFile : param.getFileList()) {
+            SysUploadFiles file = sysUploadFilesMapper.selectById(sysUserJzgInfoFile.getFileId());
+            SysUserJzgInfoFile sysUserJzgFile = new SysUserJzgInfoFile(file.getId(), param.getUserId(), file.getFileName());
+            sysUserJzgFile.setFileUrl(MinioUtils.getPresignedObjectUrl("jzg", sysUserJzgFile.getFileName()));
+            sysUserJzgFile.setFileType(sysUserJzgInfoFile.getFileType());
+            infoFiles.add(sysUserJzgFile);
         }
+        userJzgInfoFileService.saveBatch(infoFiles);
         sysUserMapper.updateById(user);
         UpdateWrapper<SysUserJzgApp> updateWrapper = new UpdateWrapper<>();
         updateWrapper.set("auth_result", msg);
+        updateWrapper.set("name", param.getName());
         updateWrapper.eq("user_id", user.getId());
         sysUserJzgAppMapper.update(updateWrapper);
     }
@@ -140,11 +158,12 @@ public class SysUserJzgAppServiceImpl extends ServiceImpl<SysUserJzgAppMapper, S
         LambdaQueryWrapper<SysUserJzgInfoFile> queryWrapper = new LambdaQueryWrapper<>();
         queryWrapper.eq(SysUserJzgInfoFile::getUserId, param.getUserId())
                 .eq(SysUserJzgInfoFile::getFileType,"qualification");
-        SysUserJzgInfoFile file = userJzgInfoFileService.getOne(queryWrapper);
-        if(Objects.nonNull(file)){
-            userJzgInfoFileService.removeById(file);
-        }
-        userJzgInfoFileService.save(param.getFile());
+
+        SysUploadFiles file = sysUploadFilesMapper.selectById(param.getFileId());
+        SysUserJzgInfoFile sysUserJzgFile = new SysUserJzgInfoFile(file.getId(), param.getUserId(), file.getFileName());
+        sysUserJzgFile.setFileUrl(MinioUtils.getPresignedObjectUrl("jzg", sysUserJzgFile.getFileName()));
+        sysUserJzgFile.setFileType("qualification");
+        userJzgInfoFileService.save(sysUserJzgFile);
     }
 
     @Override
@@ -156,26 +175,37 @@ public class SysUserJzgAppServiceImpl extends ServiceImpl<SysUserJzgAppMapper, S
 
     @Override
     public void replaceMobile(ValidateCodeParam param) {
+        SysUser sysUser = sysUserMapper.selectById(param.getUserId());
         LambdaQueryWrapper<SysUser> queryWrapper = new LambdaQueryWrapper<>();
         queryWrapper.eq(SysUser::getMobile, param.getMobile())
                 .eq(SysUser::getIsDelete, 0);
         SysUser user = sysUserMapper.selectOne(queryWrapper);
-        AssertionUtils.isFail(Objects.isNull(user),"手机号已存在请重新输入");
+        AssertionUtils.isFail(Objects.nonNull(user),"手机号已存在请重新输入");
 
-        AssertionUtils.isFail(!sysUserService.validateSmsCode(param.getMobile(), param.getSmsCode())
+        AssertionUtils.isFail(!sysUserService.validateSmsCodeMobile(param.getMobile(), param.getSmsCode())
                 ,"验证码验证失败");
-
-        user.setMobile(param.getMobile());
-        sysUserService.updateById(user);
+        sysUser.setMobile(param.getMobile());
+        sysUserService.updateById(sysUser);
     }
 
     @Override
-    public Boolean invitationRegister(InvitationAddParam param) {
-        Boolean isFlag = true;
+    @Transactional(rollbackFor = Exception.class)
+    public InvitationVo invitationRegister(InvitationAddParam param) {
+        InvitationVo invitationVo = new InvitationVo();
         // 获取邀请人信息
         SysUserJzgApp yqrAppUser = sysUserJzgAppMapper.selectById(param.getUserId());
+        LambdaQueryWrapper<SysUserJzgInfo> infoWrapper = new LambdaQueryWrapper<>();
+        infoWrapper.eq(SysUserJzgInfo::getUserId, yqrAppUser.getUserId());
+        infoWrapper.eq(SysUserJzgInfo::getSystemCode, param.getSystemCode());
+        SysUserJzgInfo yqirInfo = sysUserJzgInfoService.getOne(infoWrapper);
+        if(Objects.isNull(yqirInfo)){
+            throw new SystemException("邀请人数据异常!");
+        }
+        SysDept dept = sysDeptMapper.selectById(yqrAppUser.getDeptId());
         AssertionUtils.isFail(Objects.isNull(yqrAppUser),"邀请人不存在");
-
+        invitationVo.setDeptName(dept.getName());
+        invitationVo.setMobile(param.getMobile());
+        invitationVo.setSystemCode(yqrAppUser.getSystemCode());
         LambdaQueryWrapper<SysUser> queryWrapper = new LambdaQueryWrapper<>();
         queryWrapper.eq(SysUser::getMobile, param.getMobile())
                 .eq(SysUser::getIsDelete, 0);
@@ -192,8 +222,12 @@ public class SysUserJzgAppServiceImpl extends ServiceImpl<SysUserJzgAppMapper, S
             sysUserJzgApp.setSystemCode(yqrAppUser.getSystemCode());
             sysUserJzgApp.setReferrerId(yqrAppUser.getId());
             sysUserJzgAppMapper.insert(sysUserJzgApp);
+
             // 增加推荐人关系
             this.addRelationPerson(yqrAppUser,sysUserJzgApp);
+            SysUserJzgInfo userInfo = new SysUserJzgInfo(yqirInfo, sysUser);
+            sysUserJzgInfoService.save(userInfo);
+            invitationVo.setIsJoined(0);
         }else{
             // 判断用户是否与租户关联
             LambdaQueryWrapper<SysUserJzgApp> wrapper = new LambdaQueryWrapper<>();
@@ -210,11 +244,16 @@ public class SysUserJzgAppServiceImpl extends ServiceImpl<SysUserJzgAppMapper, S
                 sysUserJzgAppMapper.insert(sysUserJzgApp);
                 // 增加推荐人关系
                 this.addRelationPerson(yqrAppUser,sysUserJzgApp);
+                SysUserJzgInfo userInfo = new SysUserJzgInfo(yqirInfo, user);
+                sysUserJzgInfoService.save(userInfo);
             }else{
-                isFlag = false;
+                if(!appUser.getReferrerId().equals(yqrAppUser.getId())){
+                    throw new SystemException("该用户已被邀请注册");
+                }
+                invitationVo.setIsJoined(1);
             }
         }
-        return isFlag;
+        return invitationVo;
     }
 
     @Override

+ 13 - 0
tenant/organization/src/main/java/com/jzg/organization/service/impl/SysUserServiceImpl.java

@@ -291,6 +291,19 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
         return true;
     }
 
+    @Override
+    public boolean validateSmsCodeMobile(String mobile, String smsCode) {
+        //校验短信验证码
+        if (Objects.isNull(redissonClient.getBucket(RedisKeyConstants.SMS_REPLACE_MOBILE + mobile).get())) {
+            throw new SystemException("短信验证码已过期");
+        }
+        String systemSmsCode = redissonClient.getBucket(RedisKeyConstants.SMS_REPLACE_MOBILE + mobile).get().toString();
+        if (!smsCode.equals(systemSmsCode)) {
+            throw new SystemException("短信验证码错误,请重新输入");
+        }
+        return true;
+    }
+
     @Override
     public boolean validatePassword(String mobile, String password) {
         LambdaQueryWrapper<SysUser> queryWrapper = new LambdaQueryWrapper<>();

+ 1 - 0
tenant/organization/src/main/resources/application.yml

@@ -70,6 +70,7 @@ tenant:
     - ins_orders_costs
     - ins_orders_car_info
     - ins_orders_policy
+    - sys_relation_person
 
 
   ignoreLoginNames:

+ 9 - 7
tenant/organization/src/main/resources/mapper/SysUserJzgAppMapper.xml

@@ -4,9 +4,9 @@
 
 
     <select id="authInfoGet" resultType="com.jzg.commons.entity.vo.AuthInfoVo">
-        SELECT sujz.name, su.auth_status as authStatus,su.mobile,
+        SELECT su.username as name, su.auth_status as authStatus,su.mobile,
                su.identity, su.identity_time_start as identityTimeStart,
-               su.identity_time_end as identityTimeEnd,su.id as userId
+               su.identity_time_end as identityTimeEnd,su.id as userId,sujz.auth_result as authResult
         FROM sys_user_jzg_app sujz
         LEFT JOIN sys_user su ON sujz.user_id = su.id
         <where>
@@ -16,19 +16,21 @@
         </where>
     </select>
     <select id="userInfoGet" resultType="com.jzg.commons.entity.vo.UserInfoVo">
-        SELECT su.id as userId,sujz.name, su.auth_status as authStatus,su.mobile,
-        suf.file_name AS headSculpture, sujz.sex ,suf.
-        sujz.referrer_id as referrerId,su.username as referrerName,
+        SELECT sujz.id, su.id as userId,sujz.name, su.auth_status as authStatus,su.mobile,
+        suf.file_name AS headSculpture, sujz.sex ,
+        sujz.referrer_id as referrerId,sur.username as referrerName,sur.mobile as referrerMobile,
         sujz.dept_id as deptId,sd.name as deptName, ss.sys_name as sysName
         FROM sys_user_jzg_app sujz
         LEFT JOIN sys_user su ON sujz.user_id = su.id
         LEFT JOIN sys_dept sd on sd.id = sujz.dept_id
         LEFT JOIN sys_upload_files suf on suf.id = sujz.head_sculpture
         LEFT JOIN sys_system ss on ss.sys_code = sujz.system_code
+        LEFT JOIN sys_user_jzg_app suja ON  suja.id = sujz.referrer_id
+        LEFT JOIN sys_user sur on sur.id = suja.user_id
         <where>
             sujz.is_delete = 0 and sujz.is_enable = 0
-            <if test="id != null and id != ''">
-                and sujz.id = #{id}
+            <if test="userName != null and userName != ''">
+                and su.mobile = #{userName}
             </if>
         </where>
 

Některé soubory nejsou zobrazeny, neboť je v těchto rozdílových datech změněno mnoho souborů