xuqiang 6 bulan lalu
induk
melakukan
500b29075c
44 mengubah file dengan 692 tambahan dan 262 penghapusan
  1. 1 1
      authentication/src/main/java/com/jzg/client/PartnerDistributionClient.java
  2. 2 2
      authentication/src/main/java/com/jzg/config/JzgAuthenticationProvider.java
  3. 14 1
      authentication/src/main/java/com/jzg/config/JzgUsernamePasswordAuthenticationToken.java
  4. 15 8
      authentication/src/main/java/com/jzg/controller/AppAuthController.java
  5. 1 0
      authentication/src/main/java/com/jzg/handler/JzgAuthenticationSuccessHandler.java
  6. 28 2
      commons/src/main/java/com/jzg/commons/config/MultiTenantHandler.java
  7. 2 0
      commons/src/main/java/com/jzg/commons/entity/dto/InvitationAddParam.java
  8. 2 0
      commons/src/main/java/com/jzg/commons/entity/properties/TenantProperties.java
  9. 5 0
      commons/src/main/java/com/jzg/commons/entity/vo/SysUserVo.java
  10. 1 0
      gateway/src/main/java/com/jzg/config/CorsConfig.java
  11. 1 0
      gateway/src/main/resources/application-dev.yml
  12. 7 0
      partner/src/main/java/com/jzg/client/OrganizationClient.java
  13. 10 5
      partner/src/main/java/com/jzg/controller/NewAppPartnerController.java
  14. 18 7
      partner/src/main/java/com/jzg/controller/PartnerUserController.java
  15. 2 0
      partner/src/main/java/com/jzg/entity/param/AppHomeParams.java
  16. 4 3
      partner/src/main/java/com/jzg/entity/param/PartnerApp.java
  17. 6 0
      partner/src/main/java/com/jzg/entity/vo/AppUserInfoVo.java
  18. 23 14
      partner/src/main/java/com/jzg/mapper/PartnerUserMapper.java
  19. 7 12
      partner/src/main/java/com/jzg/service/Impl/PartnerCommissionServiceImpl.java
  20. 5 0
      partner/src/main/java/com/jzg/service/Impl/PartnerRuleServiceImpl.java
  21. 157 64
      partner/src/main/java/com/jzg/service/Impl/PartnerUserServiceImpl.java
  22. 12 9
      partner/src/main/java/com/jzg/service/PartnerUserService.java
  23. 3 2
      partner/src/main/java/com/jzg/utils/CalculateCommissionUtils.java
  24. 4 1
      partner/src/main/java/com/jzg/utils/DistributionUtils.java
  25. 1 1
      partner/src/main/java/com/jzg/utils/ExpiredCommissionUtils.java
  26. 4 4
      partner/src/main/resources/application.yml
  27. 97 22
      partner/src/main/resources/mapper/PartnerUserMapper.xml
  28. 2 1
      platform/src/main/java/com/jzg/controller/SysMenuController.java
  29. 2 4
      platform/src/main/java/com/jzg/mapper/SysUserRoleMapper.java
  30. 1 3
      platform/src/main/java/com/jzg/service/SysMenuService.java
  31. 3 9
      platform/src/main/java/com/jzg/service/impl/SysMenuServiceImpl.java
  32. 1 0
      platform/src/main/resources/application.yml
  33. 11 0
      platform/src/main/resources/mapper/SysUserRoleMapper.xml
  34. 5 0
      tenant/organization/src/main/java/com/jzg/organization/client/PartnerDistributionClient.java
  35. 1 0
      tenant/organization/src/main/java/com/jzg/organization/controller/AppUserController.java
  36. 14 0
      tenant/organization/src/main/java/com/jzg/organization/controller/UserController.java
  37. 4 0
      tenant/organization/src/main/java/com/jzg/organization/mapper/SysUserJzgInfoMapper.java
  38. 2 0
      tenant/organization/src/main/java/com/jzg/organization/service/SysUserJzgInfoService.java
  39. 4 0
      tenant/organization/src/main/java/com/jzg/organization/service/SysUserService.java
  40. 109 64
      tenant/organization/src/main/java/com/jzg/organization/service/impl/SysUserJzgAppServiceImpl.java
  41. 5 0
      tenant/organization/src/main/java/com/jzg/organization/service/impl/SysUserJzgInfoServiceImpl.java
  42. 70 19
      tenant/organization/src/main/java/com/jzg/organization/service/impl/SysUserServiceImpl.java
  43. 1 1
      tenant/organization/src/main/resources/mapper/SysUserJzgInfoBankCardMapper.xml
  44. 25 3
      tenant/organization/src/main/resources/mapper/SysUserJzgInfoMapper.xml

+ 1 - 1
authentication/src/main/java/com/jzg/client/PartnerDistributionClient.java

@@ -11,6 +11,6 @@ public interface PartnerDistributionClient {
 
 
     @GetMapping("partner/isTherePartner")
-    HttpResult<Boolean> isTherePartner(@RequestParam String userId);
+    HttpResult<Boolean> isTherePartner(@RequestParam String userId,@RequestParam String systemCode);
 
 }

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

@@ -94,7 +94,7 @@ public class JzgAuthenticationProvider implements AuthenticationProvider {
         String smsCode = ((JzgUsernamePasswordAuthenticationToken)authentication).getSmsCode();
         String type = ((JzgUsernamePasswordAuthenticationToken)authentication).getType();
         String code = ((JzgUsernamePasswordAuthenticationToken)authentication).getCode();
-
+        boolean appLogin = ((JzgUsernamePasswordAuthenticationToken)authentication).isAppLogin();
         boolean isFirst = false;
         //调试时注销验证码
         //验证码校验
@@ -250,7 +250,7 @@ public class JzgAuthenticationProvider implements AuthenticationProvider {
                 .map(perms -> new JzgGrantedAuthority(perms.getSysCode(),perms.getPermsId(),perms.getPerms()))
                 .collect(Collectors.toList());
         //APP 是手机端,不进行权限校验
-        if(!authorities.stream().anyMatch(x->x.getSystem().equals(system)) && !username.equals("admin") && !StringUtils.equals("APP",system)){
+        if(!authorities.stream().anyMatch(x->x.getSystem().equals(system)) && !username.equals("admin") && !StringUtils.equals("APP",system) & !appLogin){
             throw new SystemException("没有权限访问系统");
         }
         SysUserJzgVo jzgUserInfo = new SysUserJzgVo();

+ 14 - 1
authentication/src/main/java/com/jzg/config/JzgUsernamePasswordAuthenticationToken.java

@@ -2,7 +2,6 @@ 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 {
@@ -37,6 +36,11 @@ public class JzgUsernamePasswordAuthenticationToken extends UsernamePasswordAuth
      */
     private String type;
 
+    /**
+     * 合伙人app登录
+     */
+    private boolean appLogin;
+
     public JzgUsernamePasswordAuthenticationToken(Object principal, Object credentials,String system,String captchaId,String captcha,String smsCode) {
         super(principal, credentials);
         this.system = system;
@@ -49,7 +53,9 @@ public class JzgUsernamePasswordAuthenticationToken extends UsernamePasswordAuth
     public JzgUsernamePasswordAuthenticationToken(AppLoginFormVo loginFormVo) {
         super(loginFormVo.getMobile(),loginFormVo.getPassWord());
         this.captchaId = loginFormVo.getCaptchaId();
+        this.captcha = loginFormVo.getCaptcha();
         this.system = loginFormVo.getSystem();
+        this.appLogin = true;
     }
 
     public JzgUsernamePasswordAuthenticationToken(LoginFormVo loginFormVo){
@@ -88,4 +94,11 @@ public class JzgUsernamePasswordAuthenticationToken extends UsernamePasswordAuth
         return this.smsCode;
     }
 
+    public boolean isAppLogin() {
+        return appLogin;
+    }
+
+    public void setAppLogin(boolean appLogin) {
+        this.appLogin = appLogin;
+    }
 }

+ 15 - 8
authentication/src/main/java/com/jzg/controller/AppAuthController.java

@@ -86,20 +86,27 @@ public class AppAuthController {
             })
     @PostMapping("partnerAppLogin")
     public void partnerAppLogin(@RequestBody AppLoginFormVo loginFormVo) throws ServletException, IOException {
-        SysUser sysUser = sysUserService.getOne(new LambdaQueryWrapper<SysUser>().eq(SysUser::getMobile, loginFormVo.getMobile()));
-
-        HttpResult<Boolean> isTherePartner = partnerDistributionClient.isTherePartner(sysUser.getId());
-        if (200 == isTherePartner.getCode()){
-            if (!isTherePartner.getData()){
-                throw new ServletException("当前用户无登录权限");
+        try {
+            SysUser sysUser = sysUserService.getOne(new LambdaQueryWrapper<SysUser>().eq(SysUser::getMobile, loginFormVo.getMobile()));
+            if (ObjectUtil.isNull(sysUser)){
+                throw new ServletException("当前用户不存在或已注销");
             }
+            SysUserJzgInfo sysUserJzgInfo = sysUserJzgInfoMapper.selectOne(new LambdaQueryWrapper<>(SysUserJzgInfo.class).eq(SysUserJzgInfo::getUserId, sysUser.getId())
+                    .eq(SysUserJzgInfo::getSystemCode, loginFormVo.getSystem()));
+            HttpResult<Boolean> isTherePartner = partnerDistributionClient.isTherePartner(sysUserJzgInfo.getId(),loginFormVo.getSystem());
+            if (200 == isTherePartner.getCode()){
+                if (!isTherePartner.getData()){
+                    throw new ServletException("当前用户无登录权限");
+                }
+            }
+            modifyPass(loginFormVo);
+        }catch (Exception e){
+            throw new ServletException("当前用户不存在或已注销");
         }
-        modifyPass(loginFormVo);
     }
 
 
     public void modifyPass(AppLoginFormVo loginFormVo) throws ServletException, IOException {
-        loginFormVo.setSystem("APP");
         HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest();
         HttpServletResponse response = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getResponse();
         JzgUsernamePasswordAuthenticationToken authentication = new JzgUsernamePasswordAuthenticationToken(loginFormVo);

+ 1 - 0
authentication/src/main/java/com/jzg/handler/JzgAuthenticationSuccessHandler.java

@@ -77,6 +77,7 @@ public class JzgAuthenticationSuccessHandler implements AuthenticationSuccessHan
         json.put("code",200);
         json.put("msg","login success");
         json.put("data",data);
+        json.put("type","1");
 //        json.put("code",200);
 //        json.put("msg","login success");
 //        json.put("data",token);

+ 28 - 2
commons/src/main/java/com/jzg/commons/config/MultiTenantHandler.java

@@ -1,7 +1,6 @@
 package com.jzg.commons.config;
 
 import com.baomidou.mybatisplus.extension.plugins.handler.TenantLineHandler;
-import com.jzg.commons.constants.SystemConstants;
 import com.jzg.commons.core.base.BaseController;
 import com.jzg.commons.core.base.TenantContext;
 import com.jzg.commons.entity.properties.TenantProperties;
@@ -95,7 +94,9 @@ public class MultiTenantHandler implements TenantLineHandler {
         if (null != ignoreLoginNames && ignoreLoginNames.contains(username)) {
             return true;
         }
-
+        if (isIgnoreUrl()) {
+            return true;
+        }
         // 忽略指定表对租户数据的过滤
         List<String> ignoreTables = properties.getIgnoreTables();
         if (null != ignoreTables && ignoreTables.contains(tableName)) {
@@ -114,4 +115,29 @@ public class MultiTenantHandler implements TenantLineHandler {
         }
         return isFlag;
     }
+
+    private boolean isIgnoreUrl() {
+        try {
+            RequestAttributes requestAttributes = RequestContextHolder.getRequestAttributes();
+            if (requestAttributes == null) {
+                return false;
+            }
+            HttpServletRequest request = ((ServletRequestAttributes) requestAttributes).getRequest();
+            String requestURI = request.getRequestURI();
+            List<String> ignoreUrls = properties.getIgnoreFunction();
+            if (ignoreUrls == null || ignoreUrls.isEmpty()) {
+                return false;
+            }
+            // 匹配URL(支持精确匹配,可扩展通配符)
+            for (String ignoreUrl : ignoreUrls) {
+                if (requestURI.equals(ignoreUrl) || requestURI.contains(ignoreUrl)) {
+                    return true;
+                }
+            }
+        } catch (Exception e) {
+            return false;
+        }
+        return false;
+    }
+
 }

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

@@ -29,4 +29,6 @@ public class InvitationAddParam {
     @Schema(description = "租户code")
     @NotBlank(message = "租户code不能为空")
     private String systemCode;
+
+    private String token;
 }

+ 2 - 0
commons/src/main/java/com/jzg/commons/entity/properties/TenantProperties.java

@@ -34,6 +34,8 @@ public class TenantProperties {
      */
     private List<String> ignoreTables;
 
+    private List<String> ignoreFunction;
+
     /**
      * 需要排除租户过滤的登录用户名
      */

+ 5 - 0
commons/src/main/java/com/jzg/commons/entity/vo/SysUserVo.java

@@ -202,4 +202,9 @@ public class SysUserVo extends PageRequest {
     private Integer grade;
 
 
+    @Schema(description = "二维码邀请合伙人等级")
+    @TableField(exist = false)
+    private boolean codeInvitation;
+
+
 }

+ 1 - 0
gateway/src/main/java/com/jzg/config/CorsConfig.java

@@ -38,6 +38,7 @@ public class CorsConfig {
         corsConfiguration.addAllowedOrigin("http://192.168.0.18:9000");
         corsConfiguration.addAllowedOrigin("http://192.168.0.18:9001");
         corsConfiguration.addAllowedOrigin("http://192.168.0.20:9002");
+        corsConfiguration.addAllowedOrigin("http://192.168.0.20:81");
         // 允许的方法
         corsConfiguration.addAllowedMethod("*");
         // 允许的头信息

+ 1 - 0
gateway/src/main/resources/application-dev.yml

@@ -45,6 +45,7 @@ spring:
                   - /qrBarcode/**
                   - /sysDept/**
                   - /manager/**
+                  - /menu/**
 
         - id: tenant_route
           uri: http://localhost:8084/

+ 7 - 0
partner/src/main/java/com/jzg/client/OrganizationClient.java

@@ -16,4 +16,11 @@ public interface OrganizationClient {
     HttpResult<SysUserJzgInfo> getUserInfoById(@RequestParam String id,@RequestHeader("Authorization") String token);
 
 
+    @GetMapping("userInfo/getUserInfoByUserId")
+    HttpResult<SysUserJzgInfo> getUserInfoByUserId(@RequestParam String userId,@RequestHeader("Authorization") String token);
+
+
+    @GetMapping(value = "userInfo/selectByUserIdInfo")
+    SysUserJzgInfo selectByUserIdInfo(@RequestParam String userId,@RequestHeader("Authorization") String token);
+
 }

+ 10 - 5
partner/src/main/java/com/jzg/controller/NewAppPartnerController.java

@@ -28,7 +28,7 @@ public class NewAppPartnerController extends BaseController {
     @GetMapping("/queryIdentityInformation")
     @Operation(summary = "查询用户身份信息")
     public HttpResult queryIdentityInformation(){
-        return partnerUserService.queryIdentityInformation(getUserId());
+        return partnerUserService.queryIdentityInformation(getUserId(),getToken());
     }
 
 
@@ -38,7 +38,8 @@ public class NewAppPartnerController extends BaseController {
     @PostMapping("/getHomePage")
      @Operation(summary = "APP首页信息")
     public HttpResult getHomePage(@RequestBody AppHomeParams params){
-        params.setUserId("2014611585839464448");
+        params.setUserId(getUserId());
+        params.setToken(getToken());
         return partnerUserService.getHomePage(params);
     }
 
@@ -49,6 +50,7 @@ public class NewAppPartnerController extends BaseController {
     @Operation(summary = "APP首页信息")
     public HttpResult getHomeWallet(@RequestBody AppHomeParams params){
         params.setUserId(getUserId());
+        params.setToken(getToken());
         return partnerUserService.getHomeWallet(params);
     }
 
@@ -85,6 +87,7 @@ public class NewAppPartnerController extends BaseController {
     @Operation(summary = "统计视图数据")
     public HttpResult userCountStatisticsVo(@RequestBody AppHomeParams params){
         params.setUserId(getUserId());
+        params.setToken(getToken());
         return partnerUserService.userCountStatisticsVo(params);
     }
 
@@ -97,6 +100,7 @@ public class NewAppPartnerController extends BaseController {
     @Operation(summary = "统计视图数据")
     public HttpResult userCountProportionVo(@RequestBody AppHomeParams params){
         params.setUserId(getUserId());
+        params.setToken(getToken());
         return partnerUserService.userCountProportionVo(params);
     }
 
@@ -108,6 +112,7 @@ public class NewAppPartnerController extends BaseController {
     @Operation(summary = "统计视图数据")
     public HttpResult userCountRankingVo(@RequestBody AppHomeParams params){
         params.setUserId(getUserId());
+        params.setToken(getToken());
         return partnerUserService.userCountRankingVo(params);
     }
 
@@ -119,6 +124,7 @@ public class NewAppPartnerController extends BaseController {
     @Operation(summary = "人员列表详情数据查询")
     public HttpResult selectByGradeList(@RequestBody PartnerApp partnerApp){
         partnerApp.setUserId(getUserId());
+        partnerApp.setToken(getToken());
         return partnerUserService.selectByGradeList(partnerApp);
     }
 
@@ -151,8 +157,7 @@ public class NewAppPartnerController extends BaseController {
     @GetMapping("/getUserInfo")
     @Operation(summary = "APP个人信息")
     public HttpResult<AppUserInfoVo> getUserInfo(String type) {
-
-        return HttpResult.ok("success",partnerUserService.getUserInfo(type));
+        return HttpResult.ok(partnerUserService.getUserInfo(type,getUserId(),getToken()));
     }
 
 
@@ -188,7 +193,7 @@ public class NewAppPartnerController extends BaseController {
     @GetMapping("/newGetFee")
     @Operation(summary = "APP账户金额")
     public HttpResult newGetFee() {
-        return HttpResult.ok("success",this.partnerUserService.newGetFee(getUserId()));
+        return HttpResult.ok("success",this.partnerUserService.newGetFee(getUserId(),getToken()));
     }
 
 

+ 18 - 7
partner/src/main/java/com/jzg/controller/PartnerUserController.java

@@ -2,8 +2,10 @@ package com.jzg.controller;
 
 
 import cn.hutool.extra.spring.SpringUtil;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.jzg.commons.core.base.BaseController;
 import com.jzg.commons.core.page.HttpResult;
+import com.jzg.commons.entity.po.SysUserJzgInfo;
 import com.jzg.commons.entity.vo.SysUserVo;
 import com.jzg.entity.PartnerUser;
 import com.jzg.entity.param.QueryVo;
@@ -30,15 +32,19 @@ public class PartnerUserController extends BaseController {
     @Autowired
     private PartnerUserService partnerUserService;
 
+    @PostMapping("teamInvitation")
+    public boolean teamInvitation(@RequestBody SysUserJzgInfo info){
+        return partnerUserService.teamInvitation(info);
+    }
 
     @GetMapping("isTherePartner")
-    public HttpResult isTherePartner(@RequestParam String userId){
-        return partnerUserService.isTherePartner(userId);
+    public HttpResult isTherePartner(@RequestParam String userId,@RequestParam String systemCode){
+        return partnerUserService.isTherePartner(userId,systemCode);
     }
 
     @PostMapping("addPartnerRule")
     public HttpResult addPartnerRule(@RequestBody SysUserVo sysUserVo){
-        return partnerUserService.addPartnerRule(sysUserVo,sysUserVo.getGradeList());
+        return partnerUserService.addPartnerRule(sysUserVo,sysUserVo.getGradeList(),getToken());
     }
 
     @GetMapping("partnerDetails")
@@ -54,12 +60,17 @@ public class PartnerUserController extends BaseController {
 
     @GetMapping("enableDisable")
     public HttpResult enableDisable(@RequestParam("userId") String userId,@RequestParam("status")boolean status ){
-        return partnerUserService.enableDisable(userId, status);
+        return partnerUserService.enableDisable(userId, status,getToken());
     }
 
 
     @PostMapping("/save")
     public HttpResult add(@RequestBody PartnerUser partnerUser) {
+        boolean exists = partnerUserService.exists(new LambdaQueryWrapper<>(PartnerUser.class).eq(PartnerUser::getUserId, partnerUser.getUserId())
+                .eq(PartnerUser::getGrade, partnerUser.getGrade()));
+        if (exists){
+            return HttpResult.error("已存在业务员身份");
+        }
         return HttpResult.ok(partnerUserService.save(partnerUser) ? "添加成功" : "添加失败");
     }
 
@@ -83,7 +94,7 @@ public class PartnerUserController extends BaseController {
      */
     @GetMapping("relationalQuery")
     public HttpResult relationalQuery(@RequestParam("id") String id) {
-        return HttpResult.ok(partnerUserService.relationalQuery(id));
+        return HttpResult.ok(partnerUserService.relationalQuery(id,getToken()));
     }
 
 
@@ -139,7 +150,7 @@ public class PartnerUserController extends BaseController {
      */
     @GetMapping("commissionRate")
     public HttpResult commissionRate(@RequestParam("grade") String grade) {
-        return partnerUserService.commissionRate(getUserId(),grade);
+        return partnerUserService.commissionRate(getUserId(),grade,getToken());
     }
 
 
@@ -182,7 +193,7 @@ public class PartnerUserController extends BaseController {
      */
     @PostMapping("addUserIdentity")
     public HttpResult addUserIdentity(@RequestBody Map<String,Object> map) {
-        return partnerUserService.addUserIdentity(map);
+        return partnerUserService.addUserIdentity(map,getToken());
     }
 
     /**

+ 2 - 0
partner/src/main/java/com/jzg/entity/param/AppHomeParams.java

@@ -27,4 +27,6 @@ public class AppHomeParams {
     @Schema(description = "统计视图查询条件  Day, Week, Month")
     private String countCycle;
 
+    private String token;
+
 }

+ 4 - 3
partner/src/main/java/com/jzg/entity/param/PartnerApp.java

@@ -1,10 +1,10 @@
 package com.jzg.entity.param;
 
-import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.jzg.commons.core.base.PageRequest;
 import lombok.Data;
 
 @Data
-public class PartnerApp {
+public class PartnerApp extends PageRequest {
 
     private String id;
 
@@ -22,6 +22,7 @@ public class PartnerApp {
 
     private Integer appStatus;
 
-    private Page page;
+    private String token;
+
 
 }

+ 6 - 0
partner/src/main/java/com/jzg/entity/vo/AppUserInfoVo.java

@@ -14,6 +14,12 @@ public class AppUserInfoVo {
      */
     @Schema(description = "员工id")
     private String userId;
+
+    /**
+     * 员工id
+     */
+    @Schema(description = "员工id")
+    private String userInfoId;
     /**
      * 员工姓名
      */

+ 23 - 14
partner/src/main/java/com/jzg/mapper/PartnerUserMapper.java

@@ -79,7 +79,7 @@ public interface PartnerUserMapper extends BaseMapper<PartnerUser> {
     Page<JSONObject> queryDataList(Page page,@Param("map") PartnerApp partnerApp);
 
 
-    Integer selectNumber(@Param("userId") String userId, @Param("number") String number,@Param("period") CommissionValidityPeriod period);
+    Integer selectNumber(@Param("userId") String userId, @Param("number") String number,@Param("period") CommissionValidityPeriod period,@Param("param") String param);
 
 
     @Select("SELECT assessment_time FROM partner_user WHERE user_id = #{userId} AND grade = #{grade}")
@@ -89,8 +89,8 @@ public interface PartnerUserMapper extends BaseMapper<PartnerUser> {
     @Select("SELECT fixed_cycle_time FROM partner_user WHERE user_id = #{userId} AND grade = #{grade}")
     Date selectFixedCycleTime(@Param("userId") String userId, @Param("grade")String grade);
 
-    @Update("UPDATE partner_user SET assessment_time =( SELECT DATE ( partner_review_time) FROM sys_user_jzg_info_salesman WHERE `partner_status` = 3 AND user_id = " +
-            " ( SELECT info.id FROM sys_user_jzg_info info WHERE info.user_id = #{userId} ) LIMIT 1 ) WHERE user_id = #{userId} ")
+    @Update(" UPDATE partner_user SET assessment_time =( SELECT DATE( partner_review_time) FROM sys_user_jzg_info_salesman WHERE " +
+            " partner_status = 3 AND type_attr = 3 AND sys_user_jzg_info_id = #{userId} ) WHERE user_id = #{userId} ")
     void updateAssessmentTime(String userId);
 
     @Update("UPDATE partner_user SET fixed_cycle_time = ( " +
@@ -118,9 +118,9 @@ public interface PartnerUserMapper extends BaseMapper<PartnerUser> {
     @Update("UPDATE partner_user SET upgrade_time = #{date} WHERE  user_id = #{userId} and grade = #{grade}")
     void updateUpgradeTimeByDate(@Param("userId") String userId,@Param("date") Date date,@Param("grade") Integer grade);
 
-    @Update("UPDATE partner_user SET upgrade_time = ( " +
-            " SELECT DATE(approve_time) FROM sys_user_track WHERE `status` = 1 AND user_id = #{userId} LIMIT 1 " +
-            " ) WHERE  user_id = #{userId} and grade = #{grade} ")
+    @Update(" UPDATE partner_user pu JOIN( SELECT info.id AS info_id, sa.partner_review_time FROM sys_user_jzg_info info " +
+            " INNER JOIN sys_user_jzg_info_salesman sa ON sa.sys_user_jzg_info_id = info.id " +
+            " WHERE sa.type_attr = 3 AND sa.partner_status = 3 AND info.user_id = #{userId} LIMIT 1) t ON pu.user_id = t.info_id SET pu.upgrade_time = t.partner_review_time WHERE pu.grade = #{grade} ")
     void updateUpgradeTime(@Param("userId")String userId,@Param("grade") String grade);
 
 
@@ -138,13 +138,13 @@ public interface PartnerUserMapper extends BaseMapper<PartnerUser> {
     Set<String> getLevelAllUserId(String userId);
 
 
-    @Select(" SELECT p.id,p.user_id,p.grade,p.name,p.create_time FROM partner_user p LEFT JOIN sys_user u ON u.id = p .user_id ${ew.customSqlSegment}")
+    @Select(" SELECT p.id,p.user_id,p.grade,p.name,p.create_time FROM partner_user p LEFT JOIN sys_user_jzg_info_salesman sa ON sa.sys_user_jzg_info_id = p.user_id ${ew.customSqlSegment}")
     Page<PartnerUser> selectListVo(@Param("page") Page page ,@Param("ew") QueryWrapper<PartnerUser> queryWrapper);
 
     @Select(" SELECT p.id,p.user_id,p.grade,p.name,p.create_time FROM partner_user p LEFT JOIN sys_user u ON u.id = p .user_id ${ew.customSqlSegment}")
     List<PartnerUser> selectListDb(@Param("ew") QueryWrapper<PartnerUser> queryWrapper);
 
-    @Select(" SELECT p.id,p.user_id,p.grade,p.name,p.create_time FROM partner_user p LEFT JOIN sys_user u ON u.id = p .user_id ${ew.customSqlSegment}")
+    @Select(" SELECT p.id,p.user_id,p.grade,p.name,p.create_time FROM partner_user p LEFT JOIN sys_user_jzg_info_salesman sa ON sa.sys_user_jzg_info_id = p.user_id ${ew.customSqlSegment}")
     List<PartnerUser> selectAllListVo(@Param("ew") QueryWrapper<PartnerUser> queryWrapper);
 
     @Update("UPDATE partner_user SET identity_status = #{identityStatus},upgrade_time = DATE_FORMAT(NOW(), '%Y-%m-%d 00:00:00'),upgrade_cycle_start_time = DATE_FORMAT(NOW(), '%Y-%m-%d 00:00:00') WHERE user_id = #{userId} and grade = #{originalLevel} ")
@@ -152,7 +152,8 @@ public interface PartnerUserMapper extends BaseMapper<PartnerUser> {
 
     UserRuleVo queryUserRuleVo(@Param("userId") String userId, @Param("grade")Integer grade,@Param("period") CommissionValidityPeriod period);
 
-    @Select("SELECT upgrade_cycle_start_time as startDate FROM partner_user WHERE user_id = #{userId} AND grade = #{grade}")
+    @Select("SELECT upgrade_cycle_start_time as startDate FROM partner_user WHERE user_id = (SELECT info.id FROM sys_user_jzg_info info INNER JOIN sys_user_jzg_info_salesman sa ON sa.sys_user_jzg_info_id = info.id " +
+            " WHERE sa.type_attr = 3 AND sa.partner_status = 3 AND info.user_id = #{userId}) AND grade = #{grade}")
     CommissionValidityPeriod selectUpgradeCycleStartTime(@Param("userId") String userId,@Param("grade") Integer grade);
 
     @Update("UPDATE partner_user SET upgrade_cycle_start_time = #{newDate} WHERE  user_id = #{userId} and grade = #{grade} ")
@@ -164,9 +165,9 @@ public interface PartnerUserMapper extends BaseMapper<PartnerUser> {
     @Select("SELECT upgrade_cycle_start_time FROM partner_user WHERE user_id = #{userId} AND grade = #{grade}")
     Date selectUpgradeStartTime(@Param("userId") String userId,@Param("grade") Integer grade);
 
-    @Update("UPDATE partner_user SET upgrade_cycle_start_time = ( " +
-            " SELECT DATE_ADD(DATE(approve_time), INTERVAL 1 DAY) FROM sys_user_track WHERE `status` = 1 AND user_id = #{userId} LIMIT 1 " +
-            " ) WHERE  user_id = #{userId} and grade = #{grade} ")
+    @Update(" UPDATE partner_user pu JOIN( SELECT info.id AS user_id, DATE_ADD(DATE(sa.partner_review_time), INTERVAL 1 DAY) AS new_start_time FROM sys_user_jzg_info info " +
+            " INNER JOIN sys_user_jzg_info_salesman sa ON sa.sys_user_jzg_info_id = info.id WHERE sa.type_attr = 3 AND sa.partner_status = 3 " +
+            " AND info.user_id = #{userId} AND sa.partner_review_time IS NOT NULL LIMIT 1) t ON pu.user_id = t.user_id SET pu.upgrade_cycle_start_time = t.new_start_time WHERE pu.grade = #{grade} ")
     void updateUpgradeStartTime(@Param("userId") String userId,@Param("grade") Integer grade);
 
     BigDecimal subordinateMembersInsurancePremiums(@Param("userId") String userId, @Param("grade")String grade,@Param("period") CommissionValidityPeriod period);
@@ -175,8 +176,8 @@ public interface PartnerUserMapper extends BaseMapper<PartnerUser> {
     BigDecimal selectFixedRatio(@Param("userId") String userId, @Param("grade") String  grade);
 
 
-    @Select("SELECT p.* FROM partner_user p LEFT JOIN sys_user u ON u.id = p.user_id WHERE u.`status` = 1  " +
-            "AND( p.grade, p.user_id) IN ( SELECT MIN( grade ) grade, user_id FROM partner_user WHERE grade IN ( '2', '3', '4' ) AND identity_status = 0 GROUP BY user_id )" +
+    @Select("SELECT p.* FROM partner_user p LEFT JOIN sys_user_jzg_info_salesman sa ON sa.sys_user_jzg_info_id = p.user_id  WHERE sa.partner_status = 3 " +
+            " AND( p.grade, p.user_id) IN ( SELECT MIN( grade ) grade, user_id FROM partner_user WHERE grade IN ( '2', '3', '4' ) AND identity_status = 0 GROUP BY user_id )" +
             " ORDER BY p.create_time DESC")
     List<PartnerUser> queryDowngradedData();
 
@@ -209,4 +210,12 @@ public interface PartnerUserMapper extends BaseMapper<PartnerUser> {
     void updateNextLevelAssessmentTime(@Param("userId") String userId, @Param("grade") Integer grade,@Param("date") Date date);
 
     PartnerDetailsVo partnerDetails(@Param("userId") String userId);
+
+    List<PartnerUser> selectLoginList(@Param("userId")String userId, @Param("systemCode")String systemCode);
+
+    AppUserInfoVo queryAppUserInfoVoByUserId(@Param("userId") String userId);
+
+    List<PartnerUser> selectListByUserId(@Param("userId") String userId);
+
+    SysPartnerAccount selectFee(@Param("userId") String userId);
 }

+ 7 - 12
partner/src/main/java/com/jzg/service/Impl/PartnerCommissionServiceImpl.java

@@ -2,9 +2,9 @@ package com.jzg.service.Impl;
 
 import cn.hutool.core.collection.CollectionUtil;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
-import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.jzg.commons.exception.SystemException;
+import com.jzg.config.RuleConfig;
 import com.jzg.entity.PartnerCommissionRules;
 import com.jzg.entity.PartnerRatio;
 import com.jzg.entity.vo.CommissionRulesVo;
@@ -65,16 +65,6 @@ public class PartnerCommissionServiceImpl extends ServiceImpl<PartnerCommissionM
             baseMapper.insert(commissionRules);
         }
         List<PartnerRulesRatio> rulesRatioList = commissionRules.getRulesRatioList();
-        if (CollectionUtil.isNotEmpty(rulesRatioList)){
-            List<String> collect = rulesRatioList.stream().map(PartnerRulesRatio::getId).collect(Collectors.toList());
-            if (CollectionUtil.isNotEmpty(collect)){
-                QueryWrapper<PartnerRulesRatio> queryWrapper = new QueryWrapper<>();
-                queryWrapper.notIn("id", collect);
-                queryWrapper.eq("proportion_type", proportionType);
-                int delete = rulesRatioMapper.delete(queryWrapper);
-                log.info("删除数量:{}", delete,"proportionType====", proportionType);
-            }
-        }
         if (CollectionUtil.isNotEmpty(rulesRatioList)){
             for (PartnerRulesRatio rulesRatio : rulesRatioList) {
                 rulesRatio.setProportionType(proportionType);
@@ -105,7 +95,12 @@ public class PartnerCommissionServiceImpl extends ServiceImpl<PartnerCommissionM
     public CommissionRulesVo queryAll() {
         List<PartnerCommissionRules> commissionRules = baseMapper.selectList(new LambdaQueryWrapper<>(PartnerCommissionRules.class));
         if (CollectionUtil.isEmpty(commissionRules)) {
-            return new CommissionRulesVo();
+            CommissionRulesVo commissionRulesVo = RuleConfig.initializeCommissionRules();
+            save(commissionRulesVo );
+            commissionRules = baseMapper.selectList(new LambdaQueryWrapper<>(PartnerCommissionRules.class));
+            if (CollectionUtil.isEmpty(commissionRules)){
+                return new CommissionRulesVo();
+            }
         }
         List<String> ruleIds = commissionRules.stream()
                 .map(PartnerCommissionRules::getId)

+ 5 - 0
partner/src/main/java/com/jzg/service/Impl/PartnerRuleServiceImpl.java

@@ -8,6 +8,7 @@ import cn.hutool.extra.spring.SpringUtil;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.jzg.commons.exception.SystemException;
+import com.jzg.config.RuleConfig;
 import com.jzg.entity.PartnerAttribute;
 import com.jzg.entity.PartnerRule;
 import com.jzg.entity.param.CommissionValidityPeriod;
@@ -107,6 +108,10 @@ public class PartnerRuleServiceImpl extends ServiceImpl<PartnerRuleMapper, Partn
     @Override
     public List<PartnerRuleEntity> queryAll() {
         List<PartnerRuleEntity> partnerRuleEntities = attributeMapper.queryAll();
+        if (CollectionUtil.isEmpty(partnerRuleEntities)){
+            save(RuleConfig.getRuleInitialConfiguration());
+            partnerRuleEntities = attributeMapper.queryAll();
+        }
         return partnerRuleEntities;
     }
 

+ 157 - 64
partner/src/main/java/com/jzg/service/Impl/PartnerUserServiceImpl.java

@@ -9,7 +9,9 @@ import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.jzg.client.OrganizationClient;
 import com.jzg.commons.core.page.HttpResult;
+import com.jzg.commons.entity.po.SysUserJzgInfo;
 import com.jzg.commons.entity.vo.SysUserVo;
 import com.jzg.commons.exception.SystemException;
 import com.jzg.constants.TimeConstants;
@@ -24,6 +26,7 @@ import com.jzg.service.PartnerUserService;
 import com.jzg.utils.*;
 import org.apache.commons.lang3.ObjectUtils;
 import org.apache.commons.lang3.StringUtils;
+import org.jetbrains.annotations.NotNull;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Value;
 import org.springframework.stereotype.Service;
@@ -65,6 +68,9 @@ public class PartnerUserServiceImpl extends ServiceImpl<PartnerUserMapper, Partn
     @Autowired
     private SysPartnerAccountMapper sysPartnerAccountMapper;
 
+    @Autowired
+    private OrganizationClient organizationClient;
+
     @Value("${partner.expireDays}")
     private Long expireDays;
 
@@ -75,11 +81,11 @@ public class PartnerUserServiceImpl extends ServiceImpl<PartnerUserMapper, Partn
     }
 
     @Override
-    public List<RelationalVo>  relationalQuery(String id) {
+    public List<RelationalVo>  relationalQuery(String id,String token) {
+        SysUserJzgInfo sysUserJzgInfo = getSysUserJzgInfo(id,token);
         List<RelationalVo> list = new ArrayList<>();
-
-        Integer grade = baseMapper.selectGradeMin(id);
-        List<RelationalVo> partnerUsers = baseMapper.selectByUserId(id,grade);
+        Integer grade = baseMapper.selectGradeMin(sysUserJzgInfo.getId());
+        List<RelationalVo> partnerUsers = baseMapper.selectByUserId(sysUserJzgInfo.getId(),grade);
         if (1 < grade){
             querySuperiors(list, grade,partnerUsers);
         }
@@ -264,9 +270,8 @@ public class PartnerUserServiceImpl extends ServiceImpl<PartnerUserMapper, Partn
 
     @Override
     public HttpResult getHomePage(AppHomeParams params) {
-        if (StringUtils.isBlank(params.getUserId())){
-            return HttpResult.error("参数不能为空");
-        }
+        SysUserJzgInfo sysUserJzgInfo = getSysUserJzgInfo(params.getUserId(), params.getToken());
+        params.setUserId(sysUserJzgInfo.getId());
         Set<String> list = baseMapper.getLevelAllUserId(params.getUserId());
         params.setRelatedPerList(list);
         params.setCountCycle("Day");
@@ -366,10 +371,12 @@ public class PartnerUserServiceImpl extends ServiceImpl<PartnerUserMapper, Partn
     }
 
     @Override
-    public HttpResult addUserIdentity(Map<String, Object> map) {
+    public HttpResult addUserIdentity(Map<String, Object> map,String token) {
         try {
             if (map.containsKey("userId")){
                 String userId = (String) map.get("userId");
+                SysUserJzgInfo sysUserJzgInfo = getSysUserJzgInfo(userId, token);
+                userId = sysUserJzgInfo.getId();
                 PartnerUser partnerUsers = baseMapper.selectMaxGradeUserId(userId);
                 if (partnerUsers == null){
                     return HttpResult.error("请选择用户");
@@ -410,16 +417,17 @@ public class PartnerUserServiceImpl extends ServiceImpl<PartnerUserMapper, Partn
     }
 
     @Override
-    public HttpResult queryIdentityInformation(String userId) {
+    public HttpResult queryIdentityInformation(String userId,String token) {
+        SysUserJzgInfo sysUserJzgInfo = getSysUserJzgInfo(userId,token);
         List<PartnerRule> partnerRules = ruleService.selectAll();
-        List<PartnerUser> partnerUsers = baseMapper.selectList(new LambdaQueryWrapper<>(PartnerUser.class).eq(PartnerUser::getUserId, userId));
+        List<PartnerUser> partnerUsers = baseMapper.selectList(new LambdaQueryWrapper<>(PartnerUser.class).eq(PartnerUser::getUserId, sysUserJzgInfo.getId()));
         Map<Integer, PartnerUser> userMap = partnerUsers.stream()
                 .collect(Collectors.toMap(
                         PartnerUser::getGrade,
                         user -> user
                 ));
 
-        List<MyUserLevel> list = getUserLevels(userId, partnerRules, userMap);
+        List<MyUserLevel> list = getUserLevels(sysUserJzgInfo.getId(), partnerRules, userMap);
         return HttpResult.ok(list);
     }
 
@@ -535,6 +543,8 @@ public class PartnerUserServiceImpl extends ServiceImpl<PartnerUserMapper, Partn
         if (StringUtils.isEmpty(params.getGrade())){
             return HttpResult.error("等级不能为空");
         }
+        SysUserJzgInfo sysUserJzgInfo = getSysUserJzgInfo(params.getUserId(), params.getToken());
+        params.setUserId(sysUserJzgInfo.getId());
         params.setStartTime(null);
         params.setEndTime(null);
         LambdaQueryWrapper<PartnerPartnerAccount> lambdaQueryWrapper = new LambdaQueryWrapper<>();
@@ -573,15 +583,23 @@ public class PartnerUserServiceImpl extends ServiceImpl<PartnerUserMapper, Partn
     }
 
     @Override
-    public HttpResult commissionRate(String userId, String grade1) {
-        Map<Integer, PartnerUser> allByUserId = UpdateRatioUtils.getAllByUserId(userId);
-        BigDecimal mostRecent = CalculateCommissionUtils.calculateCommission(grade1, userId,allByUserId.get(3).getUserId(),allByUserId.get(4).getUserId());
+    public HttpResult commissionRate(String userId, String grade,String token) {
+        SysUserJzgInfo sysUserJzgInfo = getSysUserJzgInfo(userId,token);
+        Map<Integer, PartnerUser> allByUserId = UpdateRatioUtils.getAllByUserId(sysUserJzgInfo.getId());
+        BigDecimal mostRecent = CalculateCommissionUtils.calculateCommission(grade, sysUserJzgInfo.getId(),getMapValueSafely(allByUserId,3),getMapValueSafely(allByUserId,4));
         JSONObject jsonObject = new JSONObject();
         jsonObject.put("rate",mostRecent);
         jsonObject.put("description","");
         return HttpResult.ok(jsonObject);
     }
 
+    public String getMapValueSafely(Map<Integer, PartnerUser> allByUserId,Integer key){
+        return Optional.ofNullable(allByUserId)
+                .map(map -> map.get(key))
+                .map(PartnerUser::getUserId)
+                .orElse(null);
+    }
+
 //    @Override
 //    public List<PartnerUser> selectRepeat(SysUser2Vo sysUserVo,String grade) {
 //        LambdaQueryWrapper<PartnerUser> queryWrapper = new LambdaQueryWrapper<>();
@@ -803,9 +821,12 @@ public class PartnerUserServiceImpl extends ServiceImpl<PartnerUserMapper, Partn
         if (StringUtils.isEmpty(partnerApp.getUserId()) || StringUtils.isEmpty(partnerApp.getGrade())) {
             return HttpResult.error("用户ID和等级不能为空");
         }
-        AppHomeParams params = new AppHomeParams();
-        params.setUserId(partnerApp.getUserId());
-        List<TeamOverviewVo> teamOverviewVos = baseMapper.selectTeamOverview(params);
+        SysUserJzgInfo sysUserJzgInfo = getSysUserJzgInfo(partnerApp.getUserId(), partnerApp.getToken());
+        if (Objects.isNull(sysUserJzgInfo)){
+            throw new SystemException("当前用户不存在合伙人信息");
+        }
+        partnerApp.setUserId(sysUserJzgInfo.getId());
+        List<TeamOverviewVo> teamOverviewVos = baseMapper.selectTeamOverview(new AppHomeParams());
         List<Object> list = new ArrayList<>();
         Map<Integer, String> rule = getRule();
         List<String> grades = teamOverviewVos.stream()
@@ -817,7 +838,7 @@ public class PartnerUserServiceImpl extends ServiceImpl<PartnerUserMapper, Partn
                 .in(PartnerUser::getGrade, grades));
         Map<Integer, PartnerUser> userMap = partnerUsers.stream()
                 .collect(Collectors.toMap(PartnerUser::getGrade, Function.identity()));
-        Integer max = baseMapper.selectMax(params.getUserId());
+        Integer max = baseMapper.selectMax(partnerApp.getUserId());
         for (TeamOverviewVo overviewVo : teamOverviewVos) {
             overviewVo.setLockGrade( max);
             JSONObject map = new JSONObject();
@@ -1006,7 +1027,8 @@ public class PartnerUserServiceImpl extends ServiceImpl<PartnerUserMapper, Partn
 
     @Override
     public HttpResult userCountStatisticsVo(AppHomeParams params) {
-        Integer minGrade = baseMapper.selectGradeMin(params.getUserId());
+        SysUserJzgInfo sysUserJzgInfo = getSysUserJzgInfo(params.getUserId(), params.getToken());
+        Integer minGrade = baseMapper.selectGradeMin(sysUserJzgInfo.getId());
         if (minGrade == null) {
             return HttpResult.error("人员不存在");
         }
@@ -1019,7 +1041,8 @@ public class PartnerUserServiceImpl extends ServiceImpl<PartnerUserMapper, Partn
 
     @Override
     public HttpResult userCountProportionVo(AppHomeParams params) {
-        Integer minGrade = baseMapper.selectGradeMin(params.getUserId());
+        SysUserJzgInfo sysUserJzgInfo = getSysUserJzgInfo(params.getUserId(), params.getToken());
+        Integer minGrade = baseMapper.selectGradeMin(sysUserJzgInfo.getId());
         if (minGrade == null) {
             return HttpResult.error("人员不存在");
         }
@@ -1030,7 +1053,8 @@ public class PartnerUserServiceImpl extends ServiceImpl<PartnerUserMapper, Partn
 
     @Override
     public HttpResult userCountRankingVo(AppHomeParams params) {
-        Integer minGrade = baseMapper.selectGradeMin(params.getUserId());
+        SysUserJzgInfo sysUserJzgInfo = getSysUserJzgInfo(params.getUserId(), params.getToken());
+        Integer minGrade = baseMapper.selectGradeMin(sysUserJzgInfo.getId());
         if (minGrade == null) {
             return HttpResult.error("人员不存在");
         }
@@ -1044,8 +1068,9 @@ public class PartnerUserServiceImpl extends ServiceImpl<PartnerUserMapper, Partn
         Integer sort = grade + 1;
         QueryWrapper<PartnerUser> queryWrapper = new QueryWrapper<>();
         queryWrapper.eq("p.referrer_id",userId);
-        queryWrapper.eq("grade",sort);
-        queryWrapper.eq("u.`status`",1);
+        queryWrapper.eq("p.grade",sort);
+        queryWrapper.eq("sa.partner_status",3);
+        queryWrapper.eq("sa.type_attr",3);
         if (!Objects.isNull(partnerApp)){
             if (StringUtils.isNotEmpty(partnerApp.getStartTime()) && StringUtils.isNotEmpty(partnerApp.getEndTime())){
                 queryWrapper.between("p.create_time", partnerApp.getStartTime() + " " + TimeConstants.START_TIME, partnerApp.getEndTime() + " " + TimeConstants.END_TIME);
@@ -1150,8 +1175,9 @@ public class PartnerUserServiceImpl extends ServiceImpl<PartnerUserMapper, Partn
         Integer sort = grade + 1;
         QueryWrapper<PartnerUser> queryWrapper = new QueryWrapper<>();
         queryWrapper.eq("p.referrer_id",userId);
-        queryWrapper.eq("grade",sort);
-        queryWrapper.eq("u.`status`",1);
+        queryWrapper.eq("p.grade",sort);
+        queryWrapper.eq("sa.partner_status",3);
+        queryWrapper.eq("sa.type_attr",3);
         if (!Objects.isNull(partnerApp)){
             if (StringUtils.isNotEmpty(partnerApp.getStartTime()) && StringUtils.isNotEmpty(partnerApp.getEndTime())){
                 queryWrapper.between("p.create_time", partnerApp.getStartTime() + " " + TimeConstants.START_TIME, partnerApp.getEndTime() + " " + TimeConstants.END_TIME);
@@ -1222,21 +1248,25 @@ public class PartnerUserServiceImpl extends ServiceImpl<PartnerUserMapper, Partn
     }
 
     @Override
-    public AppUserInfoVo getUserInfo(String type) {
-//        String userId = BaseController.getUserId();
-//        AppUserInfoVo appUserInfoVo = sysUserMapper.queryByUserId(userId);
-//        Integer min = baseMapper.selectGradeIntMin(userId);
-//        if (null != min){
-//            PartnerUser partnerUser = baseMapper.selectOne(new LambdaQueryWrapper<>(PartnerUser.class)
-//                    .eq(PartnerUser::getUserId, userId)
-//                    .eq(PartnerUser::getGrade, min));
+    public AppUserInfoVo getUserInfo(String type,String userId,String token) {
+        AppUserInfoVo appUserInfoVo = baseMapper.queryAppUserInfoVoByUserId(userId);
+        Integer min = baseMapper.selectGradeIntMin(userId);
+        if (null != min){
+            PartnerUser partnerUser = baseMapper.selectOne(new LambdaQueryWrapper<>(PartnerUser.class)
+                    .eq(PartnerUser::getUserId, userId)
+                    .eq(PartnerUser::getGrade, min));
 //            InsUploadFiles insUploadFiles = uploadFilesMapper.selectById(partnerUser.getPictureUrl());
 //            appUserInfoVo.setInsUploadFiles(insUploadFiles);
-//        }else {
+        }else {
 //            appUserInfoVo.setInsUploadFiles(new InsUploadFiles());
-//        }
-//        appUserInfoVo.setGrade(null == min ? 4 : min);
-        return null;
+        }
+        appUserInfoVo.setGrade(null == min ? 4 : min);
+        SpringUtil.getBean(ExpiredCommissionUtils.class).initializeExpirationTime(userId);
+        SysUserJzgInfo sysUserJzgInfo = getSysUserJzgInfo(userId, token);
+        if (!Objects.isNull(sysUserJzgInfo)){
+            appUserInfoVo.setUserInfoId(sysUserJzgInfo.getId());
+        }
+        return appUserInfoVo;
     }
 
 
@@ -1515,13 +1545,14 @@ public class PartnerUserServiceImpl extends ServiceImpl<PartnerUserMapper, Partn
     }
 
     @Override
-    public SysPartnerAccount newGetFee(String userId) {
-        SysPartnerAccount account = sysPartnerAccountMapper.selectFee(userId);
+    public SysPartnerAccount newGetFee(String userId,String token) {
+        SysPartnerAccount account = baseMapper.selectFee(userId);
         if (account == null) {
             account = new SysPartnerAccount();
         }
+        SysUserJzgInfo sysUserJzgInfo = getSysUserJzgInfo(userId, token);
         //每个身份下锁定的佣金
-        List<PartnerUser> partnerUsers = baseMapper.selectList(new LambdaQueryWrapper<>(PartnerUser.class).eq(PartnerUser::getUserId, userId));
+        List<PartnerUser> partnerUsers = baseMapper.selectList(new LambdaQueryWrapper<>(PartnerUser.class).eq(PartnerUser::getUserId, sysUserJzgInfo.getId()));
         BigDecimal commissionTotal = BigDecimal.ZERO;
         for (PartnerUser user : partnerUsers) {
             BigDecimal commission = liftingRecordService.queryLockCommission(user.getUserId(), String.valueOf(user.getGrade()));
@@ -1581,28 +1612,48 @@ public class PartnerUserServiceImpl extends ServiceImpl<PartnerUserMapper, Partn
      * @return
      */
     @Override
-    public HttpResult addPartnerRule(SysUserVo sysUserVo, List<String> gradeList) {
+    public HttpResult addPartnerRule(SysUserVo sysUserVo, List<String> gradeList,String token) {
         try {
-            if (CollectionUtils.isEmpty(gradeList)) {
-                throw new SystemException("请选择合伙人等级");
-            }
-            List<Integer> sortedGrades = gradeList.stream()
-                    .map(Integer::valueOf)
-                    .sorted()
-                    .collect(Collectors.toList());
-            int minGrade = sortedGrades.get(0);
-            boolean hasReferrer = StringUtils.isNotEmpty(sysUserVo.getReferrerId());
-            boolean hasDept = true;
-            if (gradeList.size() == 1 && StringUtils.equals(gradeList.get(0),"4")){
-                hasDept = false;
-            }
-            for (int grade : sortedGrades) {
-                String deptId = sysUserVo.getDeptId();
-                if (4 == grade && hasDept){
-                    //deptId = addDeptUser(sysUserVo,String.valueOf(grade));
+            if (sysUserVo.isCodeInvitation()){
+                Integer grade = sysUserVo.getGrade() + 1;
+                boolean exists = baseMapper.exists(new LambdaQueryWrapper<>(PartnerUser.class).eq(PartnerUser::getUserId, sysUserVo.getUserId()).eq(PartnerUser::getGrade, grade));
+                if (exists){
+                    return HttpResult.error("当前用户身份已经存在");
                 }
-                PartnerUser partnerUser = createPartnerUser(sysUserVo, grade, minGrade, hasReferrer,deptId);
+                PartnerUser partnerUser = new PartnerUser();
+                partnerUser.setName(sysUserVo.getName());
+                partnerUser.setMobile(sysUserVo.getMobile());
+                partnerUser.setUserId(sysUserVo.getUserId());
+                partnerUser.setDeptId(sysUserVo.getDeptId());
+                partnerUser.setDeptName(null);
+                partnerUser.setGrade(grade);
+                partnerUser.setStatus(true);
+                String referrerId = StringUtils.isNotEmpty(sysUserVo.getReferrerId()) ? sysUserVo.getReferrerId() : sysUserVo.getUserId();
+                partnerUser.setReferrerId(referrerId);
+                partnerUser.setCreateTime(LocalDateTime.now());
                 this.save(partnerUser);
+            }else {
+                if (CollectionUtils.isEmpty(gradeList)) {
+                    throw new SystemException("请选择合伙人等级");
+                }
+                List<Integer> sortedGrades = gradeList.stream()
+                        .map(Integer::valueOf)
+                        .sorted()
+                        .collect(Collectors.toList());
+                int minGrade = sortedGrades.get(0);
+                boolean hasReferrer = StringUtils.isNotEmpty(sysUserVo.getReferrerId());
+                boolean hasDept = true;
+                if (gradeList.size() == 1 && StringUtils.equals(gradeList.get(0),"4")){
+                    hasDept = false;
+                }
+                for (int grade : sortedGrades) {
+                    String deptId = sysUserVo.getDeptId();
+                    if (4 == grade && hasDept){
+                        //deptId = addDeptUser(sysUserVo,String.valueOf(grade));
+                    }
+                    PartnerUser partnerUser = createPartnerUser(sysUserVo, grade, minGrade, hasReferrer,deptId);
+                    this.save(partnerUser);
+                }
             }
             return HttpResult.ok();
         }catch (Exception e){
@@ -1612,15 +1663,15 @@ public class PartnerUserServiceImpl extends ServiceImpl<PartnerUserMapper, Partn
     }
 
     @Override
-    public HttpResult isTherePartner(String userId) {
-        List<PartnerUser> partnerUsers = baseMapper.selectList(new LambdaQueryWrapper<>(PartnerUser.class).eq(PartnerUser::getUserId, userId)
-                .lt(PartnerUser::getGrade, 5));
+    public HttpResult isTherePartner(String userId,String systemCode) {
+        List<PartnerUser> partnerUsers = baseMapper.selectLoginList(userId,systemCode);
         return HttpResult.ok(CollectionUtil.isNotEmpty(partnerUsers) ? true : false);
     }
 
     @Override
-    public HttpResult enableDisable(String userId,boolean status) {
-        int update = baseMapper.update(new LambdaUpdateWrapper<>(PartnerUser.class).eq(PartnerUser::getUserId, userId).set(PartnerUser::isStatus, status));
+    public HttpResult enableDisable(String userId,boolean status,String token) {
+        SysUserJzgInfo sysUserJzgInfo = getSysUserJzgInfo(userId, token);
+        int update = baseMapper.update(new LambdaUpdateWrapper<>(PartnerUser.class).eq(PartnerUser::getUserId, sysUserJzgInfo.getId()).set(PartnerUser::isStatus, status));
         if (0 < update){
             return status ? HttpResult.ok("启用成功") : HttpResult.ok("禁用成功");
         }
@@ -1640,6 +1691,41 @@ public class PartnerUserServiceImpl extends ServiceImpl<PartnerUserMapper, Partn
         return baseMapper.selectOne(queryWrapper);
     }
 
+    @Override
+    public boolean teamInvitation(SysUserJzgInfo info) {
+        try {
+            boolean exists = baseMapper.exists(new LambdaQueryWrapper<>(PartnerUser.class).eq(PartnerUser::getUserId,info.getReferrerId()));
+            if (exists){
+                PartnerUser partnerUser = baseMapper.selectOne(new LambdaQueryWrapper<>(PartnerUser.class).eq(PartnerUser::getUserId, info.getReferrerId())
+                        .orderByDesc(PartnerUser::getGrade)
+                        .last("LIMIT 1"));
+                PartnerUser user = getPartnerUser(info, partnerUser);
+                baseMapper.insert(user);
+                return true;
+            }
+            return false;
+        }catch (Exception e){
+            e.printStackTrace();
+            throw new SystemException("程序异常");
+        }
+    }
+
+    @NotNull
+    private static PartnerUser getPartnerUser(SysUserJzgInfo info, PartnerUser partnerUser) {
+        PartnerUser user = new PartnerUser();
+        user.setName(info.getName());
+        user.setMobile(info.getName());
+        user.setUserId(info.getUserId());
+        user.setDeptId(info.getDeptId());
+        user.setDeptName(null);
+        user.setGrade(partnerUser.getGrade() + 1);
+        user.setCommissionRate(new BigDecimal("0"));
+        user.setReferrerId(partnerUser.getUserId());
+        user.setReferrerName("");
+        user.setStatus(true);
+        return user;
+    }
+
     private PartnerUser createPartnerUser(SysUserVo sysUserVo, int grade, int minGrade, boolean hasReferrer, String deptId) {
         PartnerUser partnerUser = new PartnerUser();
         partnerUser.setName(sysUserVo.getName());
@@ -1658,6 +1744,13 @@ public class PartnerUserServiceImpl extends ServiceImpl<PartnerUserMapper, Partn
     }
 
 
+    public SysUserJzgInfo getSysUserJzgInfo(String userId,String token){
+        SysUserJzgInfo sysUserJzgInfo = organizationClient.selectByUserIdInfo(userId, token);
+        if (Objects.isNull(sysUserJzgInfo)){
+            throw new SystemException("查询用户信息异常");
+        }
+        return sysUserJzgInfo;
+    }
 
 
 }

+ 12 - 9
partner/src/main/java/com/jzg/service/PartnerUserService.java

@@ -3,6 +3,7 @@ package com.jzg.service;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.service.IService;
 import com.jzg.commons.core.page.HttpResult;
+import com.jzg.commons.entity.po.SysUserJzgInfo;
 import com.jzg.commons.entity.vo.SysUserVo;
 import com.jzg.entity.PartnerPartnerAccount;
 import com.jzg.entity.PartnerUser;
@@ -24,7 +25,7 @@ public interface PartnerUserService extends IService<PartnerUser> {
     IPage<PartnerUserVo> queryPage(QueryVo queryVo);
 
 
-    List<RelationalVo>  relationalQuery(String id);
+    List<RelationalVo>  relationalQuery(String id,String token);
 
     List<Map<String,String>> selectRecommender(String level);
 
@@ -46,7 +47,7 @@ public interface PartnerUserService extends IService<PartnerUser> {
 
     boolean selectByUserIdList(String id);
 
-    AppUserInfoVo getUserInfo(String type);
+    AppUserInfoVo getUserInfo(String type, String userId,String token);
 
     HttpResult selectByGradeList(PartnerApp partnerApp);
 
@@ -68,13 +69,13 @@ public interface PartnerUserService extends IService<PartnerUser> {
 
     PartnerUser selectByUserIdAndGrade(String referrerId, Integer grade);
 
-    SysPartnerAccount newGetFee(String userId);
+    SysPartnerAccount newGetFee(String userId,String token);
 
     List<String> getUserGradeList(String userId);
 
-    HttpResult addUserIdentity(Map<String, Object> map);
+    HttpResult addUserIdentity(Map<String, Object> map,String token);
 
-    HttpResult queryIdentityInformation(String userId);
+    HttpResult queryIdentityInformation(String userId,String token);
 
     HttpResult queryDowngradeTask(String grade,String userId);
 
@@ -88,15 +89,17 @@ public interface PartnerUserService extends IService<PartnerUser> {
 
     List<Map<String,String>> getUserGradeListMap(String userId);
 
-    HttpResult commissionRate(String userId, String grade);
+    HttpResult commissionRate(String userId, String grade,String token);
 
-    HttpResult addPartnerRule(SysUserVo sysUserVo,List<String> gradeList);
+    HttpResult addPartnerRule(SysUserVo sysUserVo,List<String> gradeList,String token);
 
-    HttpResult isTherePartner(String userId);
+    HttpResult isTherePartner(String userId,String systemCode);
 
-    HttpResult enableDisable(String userId,boolean status);
+    HttpResult enableDisable(String userId,boolean status,String token);
 
     HttpResult partnerDetails(String userId);
 
     PartnerUser searchUserStudios(String userId);
+
+    boolean teamInvitation(SysUserJzgInfo info);
 }

+ 3 - 2
partner/src/main/java/com/jzg/utils/CalculateCommissionUtils.java

@@ -62,6 +62,7 @@ public class CalculateCommissionUtils {
         CommissionValidityPeriod period = new CommissionValidityPeriod();
         Set<String> userIdList = Collections.emptySet();
         BigDecimal grBf = null;
+        String param = RequestContextUtil.getStringParam();
         if (StringUtils.equals("gzs", type)){
             period = getCommissionValidityPeriod(rules, userId4, "4");
             grBf = queryPersonalInsurancePremiums(userId4,period);
@@ -85,9 +86,9 @@ public class CalculateCommissionUtils {
         Integer number = 0;
 
         if (StringUtils.equals("gzs", type)){
-            number = partnerUserMapper.selectNumber(userId4, "5", period);
+            number = partnerUserMapper.selectNumber(userId4,"5", period,param);
         }else if (StringUtils.equals("hh", type)){
-            number = partnerUserMapper.selectNumber(userId3, "4", period);
+            number = partnerUserMapper.selectNumber(userId3,"4", period,param);
         }
         if (log.isInfoEnabled()) {
             log.info("用户id{}++{}级用户++出单人的上级用户{}++统计的保单金额{}++统计的邀请人数{}",

+ 4 - 1
partner/src/main/java/com/jzg/utils/DistributionUtils.java

@@ -30,6 +30,7 @@ public class DistributionUtils {
     private static final BigDecimal PERCENT_DIVISOR = new BigDecimal("100");
     private static final int SCALE_2 = 2;
     private static final int STATUS_INIT = 0;
+    private static final int APPROVED = 1;
     private static final int TYPE_DEFAULT = 1;
     private static final int INDUSTRY_SECTOR_DEFAULT = 0;
     private static final int APP_STATUS_PASS = 1;
@@ -69,6 +70,7 @@ public class DistributionUtils {
         }
         SysUserJzgInfo data = userInfoById.getData();
         String userId = data.getId();
+        RequestContextUtil.setStringParam(userId);
         String userId3 = CalculateCommissionUtils.querySuperiorAndSubordinate(userId, GRADE_3);
         String userId4 = CalculateCommissionUtils.querySuperiorAndSubordinate(userId, GRADE_4);
         PartnerUser partnerUser = staticPartnerUserService.selectByUserId(userId);
@@ -84,6 +86,7 @@ public class DistributionUtils {
             staticPartnerPremiumDetailsMapper.insert(premiumDetailsList);
         }
         staticKickbackChangeUtils.updatePersonnel(premiumDetailsList, userId3, userId4);
+        RequestContextUtil.clear();
     }
 
     /**
@@ -136,7 +139,7 @@ public class DistributionUtils {
                 .divide(PERCENT_DIVISOR, SCALE_2, RoundingMode.DOWN)
                 : BigDecimal.ZERO;
         details.setExtractFee(extractFee);
-        details.setStatus(STATUS_INIT);
+        details.setStatus(APPROVED);
         details.setType(TYPE_DEFAULT);
         details.setIndustrySector(INDUSTRY_SECTOR_DEFAULT);
         details.setCreateTime(LocalDateTime.now());

+ 1 - 1
partner/src/main/java/com/jzg/utils/ExpiredCommissionUtils.java

@@ -94,7 +94,7 @@ public class ExpiredCommissionUtils {
      */
     @Transactional(rollbackFor = Exception.class)
     public void initializeExpirationTime(String userId) {
-        List<PartnerUser> partnerUsers = partnerUserMapper.selectList(new QueryWrapper<PartnerUser>().eq("user_id", userId));
+        List<PartnerUser> partnerUsers = partnerUserMapper.selectListByUserId(userId);
         for (PartnerUser partnerUser : partnerUsers) {
             if (null == partnerUser.getUpgradeCycleStartTime()){
                 partnerUserMapper.updateUpgradeStartTime(userId, partnerUser.getGrade());

+ 4 - 4
partner/src/main/resources/application.yml

@@ -29,11 +29,11 @@ tenant:
     - partner_ratio
     - sys_user_jzg_info_salesman
     - cte_name
-    - partner_attribute
-    - partner_rule
-
-  ignoreLoginNames:
+    - target_user
+    - sys_user_jzg_info_salesman
 
+  ignoreFunction:
+    - /partner/isTherePartner
 
 data-scope:
   tables:

+ 97 - 22
partner/src/main/resources/mapper/PartnerUserMapper.xml

@@ -11,8 +11,10 @@
         db.dept_id,
         db.grade,
         info.user_id,
+        info.create_by,
+        info.create_time,
         d.`name` deptName,
-        info.`status`,
+        (SELECT sa.partner_status  FROM sys_user_jzg_info_salesman sa WHERE sa.type_attr = 3 AND sa.sys_user_jzg_info_id = info.id) AS `status`,
         info.referrer_id,
         info.create_time,
         referrer.`name` AS referrerName,
@@ -82,7 +84,7 @@
                 and referrer.name like concat('%', #{queryVo.referrerName}, '%') or referrerMobile.mobile like concat('%', #{queryVo.referrerName}, '%')
             </if>
         </where>
-
+        order by info.create_time desc
     </select>
 
 
@@ -196,14 +198,14 @@ SELECT
         SELECT
             ifnull(
                     (
-                        SELECT COUNT( p.id) FROM partner_user p LEFT JOIN sys_user_jzg_info u ON u.id = p.user_id WHERE u.STATUS = 3 AND p.referrer_id = #{params.userId} AND p.grade = (#{grade} + 1)
+                        SELECT COUNT( p.id) FROM partner_user p LEFT JOIN sys_user_jzg_info_salesman sa ON sa.sys_user_jzg_info_id = p.user_id  WHERE sa.partner_status = 3  AND p.referrer_id = #{params.userId} AND p.grade = (#{grade} + 1)
         <if test="params.startTime != null and params.endTime != null">
             and DATE(p.create_time) BETWEEN #{params.startTime} AND #{params.endTime}
         </if>
                     ),0
             ) v1,
             ifnull(
-                    ( SELECT COUNT(p.id) FROM partner_user p LEFT JOIN sys_user_jzg_info u ON u.id = p.user_id WHERE u.`status` = 3 AND grade = (#{grade} + 2 )
+                    ( SELECT COUNT(p.id) FROM partner_user p LEFT JOIN sys_user_jzg_info_salesman sa ON sa.sys_user_jzg_info_id = p.user_id WHERE sa.partner_status = 3 AND grade = (#{grade} + 2 )
                         AND p.referrer_id IN( SELECT user_id FROM partner_user WHERE referrer_id = #{params.userId} AND grade = (#{grade} + 1) )
         <if test="params.startTime != null and params.endTime != null">
             and DATE(p.create_time) BETWEEN #{params.startTime} AND #{params.endTime}
@@ -215,9 +217,9 @@ SELECT
                           COUNT( p.id )
                       FROM
                           partner_user p
-                              LEFT JOIN sys_user_jzg_info u ON u.id = p.user_id
+                            LEFT JOIN sys_user_jzg_info_salesman sa ON sa.sys_user_jzg_info_id = p.user_id
                       WHERE
-                          u.STATUS = 3
+        sa.partner_status = 3
                         AND p.referrer_id = #{params.userId}
                         AND p.grade = (#{grade} + 1)
                         AND to_days(p.create_time) = to_days(now()) ),0
@@ -227,17 +229,17 @@ SELECT
                          COUNT(u1.id)
                      FROM
                          partner_user u1
-                             LEFT JOIN sys_user_jzg_info u ON u.id = u1.user_id
+        LEFT JOIN sys_user_jzg_info_salesman sa ON sa.sys_user_jzg_info_id =u1.user_id
                      WHERE
-                         u.`status` = 3 and  u1.grade = (#{grade} + 2) AND to_days(u1.create_time) = to_days(now())  AND
+        sa.partner_status = 3 and  u1.grade = (#{grade} + 2) AND to_days(u1.create_time) = to_days(now())  AND
                          u1.referrer_id IN (
                              SELECT
                                  u.user_id
                              FROM
                                  partner_user u
-                                     LEFT JOIN sys_user_jzg_info t ON t.id = u.user_id
+        LEFT JOIN sys_user_jzg_info_salesman sa ON sa.sys_user_jzg_info_id =u.user_id
                              WHERE
-                                 t.`status` = 3 AND
+        sa.partner_status = 3 AND
                                  u.grade = (#{grade} + 1)
                                AND u.referrer_id = #{params.userId}
                          )),0
@@ -791,7 +793,7 @@ SELECT
             p.user_id,
             p.dept_id,
             (SELECT `name` FROM sys_dept d WHERE d.id = p.dept_id) AS deptName,
-            (SELECT `username` FROM sys_user u WHERE u.id = p.referrer_id) AS suggestName,
+            (SELECT `name` FROM sys_user_jzg_info u WHERE u.id = p.referrer_id) AS suggestName,
             p.grade AS type,
             p.referrer_id,
             p.create_time
@@ -888,7 +890,7 @@ SELECT
         ( SELECT t.partner_review_time FROM sys_user_jzg_info_salesman t WHERE t.sys_user_jzg_info_id = u.id ORDER BY t.partner_review_time LIMIT 1 )  approve_time
             FROM partner_user p
         	LEFT JOIN sys_user_jzg_info u ON u.id = p.user_id
-        WHERE p.referrer_id = #{userId} AND p.grade = #{number}
+        WHERE p.referrer_id = #{userId} AND p.grade = #{number} AND p.user_id != #{param}
             ) db
         <where>
             <if test="period.startDate != null and period.endDate != null">
@@ -940,16 +942,29 @@ SELECT
 
 
     <select id="assessment" resultType="java.lang.Integer">
-        SELECT COUNT(1) FROM (
-                SELECT
-            u.id,u.user_id,(SELECT t.approve_time FROM sys_user_jzg_info t WHERE t.`status` = 3 AND t.user_id = u.user_id LIMIT 1) approve_time
-                FROM
-            partner_user u
-            LEFT JOIN sys_user su ON u.user_id = su.id
-                WHERE su.`status` = 1 AND u.referrer_id = #{userId} AND u.grade = #{grade}
-        ) db WHERE db.user_id != #{userId}
+        WITH target_user AS (
+        SELECT
+        info.id AS jzg_info_id,
+        sa.partner_review_time
+        FROM sys_user_jzg_info info
+        INNER JOIN sys_user_jzg_info_salesman sa
+        ON sa.sys_user_jzg_info_id = info.id
+        WHERE
+        sa.type_attr = 3
+        AND sa.partner_status = 3
+        AND info.user_id = #{userId}
+        )
+        SELECT
+        COUNT(1) AS total_count
+        FROM
+        partner_user u
+        INNER JOIN target_user tu
+        ON u.referrer_id = tu.jzg_info_id
+        WHERE
+        u.grade = #{grade}
+        AND u.user_id != tu.jzg_info_id
         <if test="period.startDate != null and period.endDate != null">
-            AND db.approve_time BETWEEN #{period.startDate} AND #{period.endDate}
+            AND tu.partner_review_time BETWEEN #{period.startDate} AND #{period.endDate}
         </if>
     </select>
 
@@ -1038,7 +1053,7 @@ SELECT
             FROM partner_user t INNER JOIN cte_name  ON t.referrer_id = cte_name.user_id
             WHERE t.grade = (cte_name.grade + 1)
         )
-        SELECT user_id FROM cte_name WHERE grade &lt; 5
+        SELECT DISTINCT user_id FROM cte_name WHERE grade &lt; 5
     </select>
 
 
@@ -1142,4 +1157,64 @@ SELECT
     </select>
 
 
+    <select id="selectLoginList" resultType="com.jzg.entity.PartnerUser">
+        SELECT id,grade,user_id FROM partner_user WHERE user_id = #{userId} AND system_code = #{systemCode} AND grade &lt; 5
+    </select>
+
+
+    <select id="queryAppUserInfoVoByUserId" resultType="com.jzg.entity.vo.AppUserInfoVo">
+        SELECT
+            u.id user_id,u.mobile
+        FROM
+            sys_user u
+                LEFT JOIN sys_user_jzg_info info ON info.user_id = u.id
+        WHERE
+            u.id = #{userId}
+    </select>
+
+
+    <select id="selectListByUserId" resultType="com.jzg.entity.PartnerUser">
+        SELECT * FROM partner_user WHERE user_id = (
+            SELECT
+                info.id
+            FROM sys_user_jzg_info info
+                     INNER JOIN sys_user_jzg_info_salesman sa
+                                ON sa.sys_user_jzg_info_id = info.id
+            WHERE
+                sa.type_attr = 3
+
+              AND sa.partner_status = 3
+              AND info.user_id = #{userId}
+        )
+    </select>
+
+<!--
+
+(SELECT COALESCE(cash_fee, 0) FROM sys_partner_account WHERE user_id = #{userId}) AS cashFee,
+(SELECT COALESCE(history_fee, 0) FROM sys_partner_account WHERE user_id = #{userId} ) AS historyFee
+
+-->
+
+    <select id="selectFee" resultType="com.jzg.entity.vo.SysPartnerAccount">
+        SELECT
+            COALESCE(SUM(CASE WHEN 1=1 THEN extract_fee END), 0) AS totalAmount,
+            COALESCE(SUM(CASE WHEN 1=1 THEN history_fee END), 0) AS transferAmount,
+            COALESCE(SUM(CASE WHEN 1=1 THEN expired_amount END), 0) AS expiredAmount,
+            COALESCE(SUM(CASE WHEN 1=1 THEN cash_fee - expired_amount END), 0) AS unreportedAmount
+
+        FROM partner_partner_account
+        WHERE user_id = (
+            SELECT
+                info.id
+            FROM
+                sys_user_jzg_info info
+                    INNER JOIN sys_user_jzg_info_salesman sa ON sa.sys_user_jzg_info_id = info.id
+            WHERE
+                sa.type_attr = 3
+              AND sa.partner_status = 3
+              AND info.user_id = #{userId}
+        )
+    </select>
+
+
 </mapper>

+ 2 - 1
platform/src/main/java/com/jzg/controller/SysMenuController.java

@@ -67,7 +67,8 @@ public class SysMenuController extends BaseController {
     @GetMapping(value = "/getAllButtons")
     public HttpResult getAllButtons(){
         String userId = getUserId();
-        return HttpResult.ok(sysMenuService.getAllButtons(userId));
+        String systemCode = getSystemCode();
+        return HttpResult.ok(sysMenuService.getAllButtons(userId,systemCode));
     }
 
     @GetMapping(value = "/getSystemMenu")

+ 2 - 4
platform/src/main/java/com/jzg/mapper/SysUserRoleMapper.java

@@ -1,17 +1,15 @@
 package com.jzg.mapper;
 
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
-import com.jzg.commons.entity.po.SysRole;
-import com.jzg.commons.entity.po.SysUser;
 import com.jzg.commons.entity.po.SysUserRole;
 import org.apache.ibatis.annotations.Mapper;
 import org.apache.ibatis.annotations.Param;
 
-import java.util.List;
-
 @Mapper
 public interface SysUserRoleMapper extends BaseMapper<SysUserRole> {
 
 
     void deleteByUserId(@Param("userId") String userId);
+
+    SysUserRole selectByUserIdAndSysCodeOne(@Param("userId") String userId,@Param("systemCode") String systemCode);
 }

+ 1 - 3
platform/src/main/java/com/jzg/service/SysMenuService.java

@@ -5,8 +5,6 @@ import com.baomidou.mybatisplus.extension.service.IService;
 import com.jzg.commons.entity.po.SysMenu;
 import com.jzg.commons.entity.vo.SystemMenuVo;
 
-
-import java.util.ArrayList;
 import java.util.List;
 
 public interface SysMenuService extends IService<SysMenu> {
@@ -16,7 +14,7 @@ public interface SysMenuService extends IService<SysMenu> {
 
     public List<SysMenu> findByUser(String userName);
 
-    public List<String> getAllButtons(String userId);
+    public List<String> getAllButtons(String userId,String systemCode);
 
     public List<SysMenu> getSystemMenu(String systemCode);
 

+ 3 - 9
platform/src/main/java/com/jzg/service/impl/SysMenuServiceImpl.java

@@ -1,7 +1,5 @@
 package com.jzg.service.impl;
 
-import cn.hutool.core.bean.BeanUtil;
-import cn.hutool.core.collection.CollectionUtil;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.jzg.commons.entity.po.SysMenu;
@@ -16,7 +14,6 @@ import com.jzg.service.SysMenuService;
 import com.jzg.service.SysUserService;
 import lombok.RequiredArgsConstructor;
 import org.apache.commons.lang3.ObjectUtils;
-import org.apache.ibatis.executor.BatchResult;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
@@ -63,8 +60,7 @@ public class SysMenuServiceImpl extends ServiceImpl<SysMenuMapper, SysMenu>
 
     @Override
     public List<SysMenu> getRoleMenuTree(String systemCode, String userId) {
-        SysUserRole sysUserRole = sysUserRoleMapper.selectOne(new LambdaQueryWrapper<SysUserRole>()
-                .eq(SysUserRole::getUserId, userId));
+        SysUserRole sysUserRole = sysUserRoleMapper.selectByUserIdAndSysCodeOne(userId,systemCode);
         List<SysMenu> menus = this.getMenuByRoleId(sysUserRole.getRoleId());
         List<SysMenu> sysMenus = new ArrayList<>();
         for (SysMenu menu : menus) {
@@ -89,13 +85,11 @@ public class SysMenuServiceImpl extends ServiceImpl<SysMenuMapper, SysMenu>
     }
 
     @Override
-    public List<String> getAllButtons(String userId) {
-
+    public List<String> getAllButtons(String userId,String systemCode) {
         LambdaQueryWrapper<SysMenu> lambdaQueryWrapper = new LambdaQueryWrapper<>();
         lambdaQueryWrapper.eq(SysMenu::getType,"2");
         List<SysMenu> sysMenus = baseMapper.selectList(lambdaQueryWrapper);
-        SysUserRole sysUserRole = sysUserRoleMapper.selectOne(new LambdaQueryWrapper<SysUserRole>()
-                .eq(SysUserRole::getUserId, userId));
+        SysUserRole sysUserRole = sysUserRoleMapper.selectByUserIdAndSysCodeOne(userId,systemCode);
         List<SysMenu> menus = this.getMenuByRoleId(sysUserRole.getRoleId());
 
         List<String> perms = new ArrayList<>();

+ 1 - 0
platform/src/main/resources/application.yml

@@ -54,6 +54,7 @@ tenant:
     - ptl_scheme_info
     - ptl_agreement_dept
     - sys_user_jzg_info_salesman
+    - sys_menu
 
     # 临时表
     - company_tree

+ 11 - 0
platform/src/main/resources/mapper/SysUserRoleMapper.xml

@@ -6,4 +6,15 @@
     <delete id="deleteByUserId">
         delete from sys_user_role where user_id = #{userId}
     </delete>
+
+    <select id="selectByUserIdAndSysCodeOne" resultType="com.jzg.commons.entity.po.SysUserRole">
+        SELECT
+            ur.*
+        FROM
+            sys_user_role ur
+                LEFT JOIN sys_role r ON  r.id = ur.role_id
+        WHERE
+            ur.is_delete = 0
+          AND ur.user_id = #{userId} AND r.system_code = #{systemCode}
+    </select>
 </mapper>

+ 5 - 0
tenant/organization/src/main/java/com/jzg/organization/client/PartnerDistributionClient.java

@@ -2,6 +2,7 @@ package com.jzg.organization.client;
 
 
 import com.jzg.commons.core.page.HttpResult;
+import com.jzg.commons.entity.po.SysUserJzgInfo;
 import com.jzg.commons.entity.vo.PartnerUserVo;
 import com.jzg.commons.entity.vo.SysUserVo;
 import org.springframework.cloud.openfeign.FeignClient;
@@ -21,4 +22,8 @@ public interface PartnerDistributionClient {
     @PostMapping("partner/save")
     HttpResult add(@RequestBody PartnerUserVo partnerUser,@RequestHeader("Authorization") String token);
 
+
+    @PostMapping("partner/teamInvitation")
+    boolean teamInvitation(@RequestBody SysUserJzgInfo info,@RequestHeader("Authorization") String token,@RequestHeader("system_code")String systemCode);
+
 }

+ 1 - 0
tenant/organization/src/main/java/com/jzg/organization/controller/AppUserController.java

@@ -155,6 +155,7 @@ public class AppUserController extends BaseController {
     @PostMapping("/invitationRegister")
     public HttpResult invitationRegister(@Validated @RequestBody InvitationAddParam param) {
         AssertionUtils.isSucceed(userService.validateSmsCode(param.getMobile(), param.getSmsCode()), "短信验证码不通过!");
+        param.setToken(getToken());
         return HttpResult.ok(userJzgAppService.invitationRegister(param));
     }
 

+ 14 - 0
tenant/organization/src/main/java/com/jzg/organization/controller/UserController.java

@@ -112,6 +112,13 @@ public class UserController extends BaseController {
         return sysUserService.getUserInfoById(id);
     }
 
+    @Operation(summary = "获取业务员信息接口userid", description = "获取业务员信息接口")
+    @GetMapping(value = "/getUserInfoByUserId")
+    public HttpResult<SysUserJzgInfo> getUserInfoUserId(@RequestParam String userId) {
+        String userId1 = getUserId();
+        return sysUserService.getUserInfoUserId(userId);
+    }
+
     @Operation(summary = "获取成员资源转移信息接口", description = "获取成员资源转移信息接口")
     @GetMapping(value = "/getTransferInfo")
     public HttpResult<UserTransferInfoVo> getTransferInfo(@RequestParam String userId) {
@@ -263,4 +270,11 @@ public class UserController extends BaseController {
         return sysUserService.partnerAddsSalesperson(userId,baseController.getToken());
     }
 
+
+    @Operation(summary = "通过用户ID查询infoID",description = "合伙人查询infoID")
+    @GetMapping(value = "/selectByUserIdInfo")
+    public SysUserJzgInfo selectByUserIdInfo(@RequestParam String userId){
+        return sysUserService.selectByUserIdInfo(userId);
+    }
+
 }

+ 4 - 0
tenant/organization/src/main/java/com/jzg/organization/mapper/SysUserJzgInfoMapper.java

@@ -37,4 +37,8 @@ public interface SysUserJzgInfoMapper extends BaseMapper<SysUserJzgInfo> {
     int partnerReview(@Param("userInfoId") List<String> userInfoId,@Param("reviewStatus") String reviewStatus,@Param("userId") String userId);
 
     boolean isGeneration(@Param("id") String id);
+
+    SysUserJzgInfo selectByUserIdInfo(@Param("userId") String userId);
+
+    List<String> selectTypeAttrs(@Param("userId") String userId);
 }

+ 2 - 0
tenant/organization/src/main/java/com/jzg/organization/service/SysUserJzgInfoService.java

@@ -38,4 +38,6 @@ public interface SysUserJzgInfoService extends IService<SysUserJzgInfo> {
     int partnerReview(List<String> userInfoId, String reviewStatus,String userId);
 
     boolean isGeneration(String id);
+
+    List<String> selectTypeAttrs(String userId);
 }

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

@@ -227,4 +227,8 @@ public interface SysUserService extends IService<SysUser> {
     boolean partnerReview(List<String> userInfoId, String reviewStatus,String userId);
 
     HttpResult partnerAddsSalesperson(String userId,String token);
+
+    HttpResult<SysUserJzgInfo> getUserInfoUserId(String userId);
+
+    SysUserJzgInfo selectByUserIdInfo(String userId);
 }

+ 109 - 64
tenant/organization/src/main/java/com/jzg/organization/service/impl/SysUserJzgAppServiceImpl.java

@@ -5,12 +5,6 @@ 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.entity.dto.AuthInfoAddParam;
-import com.jzg.commons.entity.dto.BusinessInfoAddParam;
-import com.jzg.commons.entity.po.SysUser;
-import com.jzg.commons.entity.po.SysUserJzgApp;
-import com.jzg.commons.entity.po.SysUserJzgInfo;
-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;
@@ -20,14 +14,16 @@ 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.commons.util.idgen.IdGenerate;
+import com.jzg.organization.client.PartnerDistributionClient;
 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.*;
-import com.jzg.organization.service.SysUserJzgAppService;
-import com.jzg.organization.service.SysUserJzgInfoFileService;
-import com.jzg.organization.service.SysUserJzgInfoService;
-import com.jzg.organization.service.SysUserService;
+import com.jzg.organization.mapper.SysDeptMapper;
+import com.jzg.organization.mapper.SysUploadFilesMapper;
+import com.jzg.organization.mapper.SysUserJzgAppMapper;
+import com.jzg.organization.mapper.SysUserMapper;
 import com.jzg.organization.service.*;
 import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -38,7 +34,6 @@ import java.time.LocalDateTime;
 import java.util.ArrayList;
 import java.util.List;
 import java.util.Objects;
-import java.util.stream.Collectors;
 
 @Service
 public class SysUserJzgAppServiceImpl extends ServiceImpl<SysUserJzgAppMapper, SysUserJzgApp> implements SysUserJzgAppService {
@@ -204,71 +199,121 @@ public class SysUserJzgAppServiceImpl extends ServiceImpl<SysUserJzgAppMapper, S
     @Override
     @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);
-        SysUser user = sysUserMapper.selectOne(queryWrapper);
-        if(Objects.isNull(user)){
-            // 创建用户
-            SysUser sysUser = new SysUser(param.getMobile(), param.getMobile(),
-                    null,null,null,
-                    param.getPassword());
-            sysUserMapper.insert(sysUser);
-            // 创建app用户
-            SysUserJzgApp sysUserJzgApp = new SysUserJzgApp(sysUser);
-            sysUserJzgApp.setDeptId(yqrAppUser.getDeptId());
-            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<>();
-            wrapper.eq(SysUserJzgApp::getUserId, user.getId())
-                    .eq(SysUserJzgApp::getIsDelete, 0)
-                    .eq(SysUserJzgApp::getIsEnable, 0)
-                    .eq(SysUserJzgApp::getSystemCode, yqrAppUser.getSystemCode());
-            SysUserJzgApp appUser = sysUserJzgAppMapper.selectOne(wrapper);
-            if(Objects.isNull(appUser)){
-                SysUserJzgApp sysUserJzgApp = new SysUserJzgApp(user);
+        try {
+            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(yqirInfo.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);
+            SysUser user = sysUserMapper.selectOne(queryWrapper);
+            String userId = null;
+            String sysUserId = null;
+            if(Objects.isNull(user)){
+                // 创建用户
+                SysUser sysUser = new SysUser(param.getMobile(), param.getMobile(),
+                        null,null,null,
+                        param.getPassword());
+                sysUserMapper.insert(sysUser);
+                sysUserId = sysUser.getId();
+                // 创建app用户
+                SysUserJzgApp sysUserJzgApp = new SysUserJzgApp(sysUser);
                 sysUserJzgApp.setDeptId(yqrAppUser.getDeptId());
                 sysUserJzgApp.setSystemCode(yqrAppUser.getSystemCode());
                 sysUserJzgApp.setReferrerId(yqrAppUser.getId());
                 sysUserJzgAppMapper.insert(sysUserJzgApp);
+
                 // 增加推荐人关系
                 this.addRelationPerson(yqrAppUser,sysUserJzgApp);
-                SysUserJzgInfo userInfo = new SysUserJzgInfo(yqirInfo, user);
+                SysUserJzgInfo userInfo = new SysUserJzgInfo(yqirInfo, sysUser);
                 sysUserJzgInfoService.save(userInfo);
+                userId = userInfo.getId();
+                invitationVo.setIsJoined(0);
             }else{
-                if(!appUser.getReferrerId().equals(yqrAppUser.getId())){
-                    throw new SystemException("该用户已被邀请注册");
+                // 判断用户是否与租户关联
+                LambdaQueryWrapper<SysUserJzgApp> wrapper = new LambdaQueryWrapper<>();
+                wrapper.eq(SysUserJzgApp::getUserId, user.getId())
+                        .eq(SysUserJzgApp::getIsDelete, 0)
+                        .eq(SysUserJzgApp::getIsEnable, 0)
+                        .eq(SysUserJzgApp::getSystemCode, yqrAppUser.getSystemCode());
+                SysUserJzgApp appUser = sysUserJzgAppMapper.selectOne(wrapper);
+                if(Objects.isNull(appUser)){
+                    SysUserJzgApp sysUserJzgApp = new SysUserJzgApp(user);
+                    sysUserJzgApp.setDeptId(yqrAppUser.getDeptId());
+                    sysUserJzgApp.setSystemCode(yqrAppUser.getSystemCode());
+                    sysUserJzgApp.setReferrerId(yqrAppUser.getId());
+                    sysUserJzgAppMapper.insert(sysUserJzgApp);
+                    // 增加推荐人关系
+                    this.addRelationPerson(yqrAppUser,sysUserJzgApp);
+                    SysUserJzgInfo userInfo = new SysUserJzgInfo(yqirInfo, user);
+                    sysUserJzgInfoService.save(userInfo);
+                    userId = userInfo.getId();
+                }else{
+                    if(!appUser.getReferrerId().equals(yqrAppUser.getId())){
+                        throw new SystemException("该用户已被邀请注册");
+                    }
+                    invitationVo.setIsJoined(1);
+                }
+                sysUserId = user.getId();
+            }
+            teamInvitation(yqirInfo,param,userId,sysUserId);
+            return invitationVo;
+        }catch (Exception e){
+            e.printStackTrace();
+            throw new SystemException("程序异常");
+        }
+    }
+
+
+    public void teamInvitation(SysUserJzgInfo info,InvitationAddParam param,String userId,String sysUserId){
+        try {
+            if (StringUtils.isEmpty(userId)){
+                return;
+            }
+            SysUserJzgInfo sysUserJzgInfo = new SysUserJzgInfo();
+            sysUserJzgInfo.setReferrerId(info.getId());
+            sysUserJzgInfo.setName(param.getMobile());
+            sysUserJzgInfo.setDeptId(info.getDeptId());
+            sysUserJzgInfo.setUserId(userId);
+            boolean invitation = distributionClient.teamInvitation(sysUserJzgInfo,param.getToken(),param.getSystemCode());
+            if (invitation){
+                boolean exists = sysUserJzgInfoSalesmanService.exists(new LambdaQueryWrapper<>(SysUserJzgInfoSalesman.class).eq(SysUserJzgInfoSalesman::getSysUserJzgInfoId,userId)
+                        .eq(SysUserJzgInfoSalesman::getTypeAttr, "3"));
+                if (!exists){
+                    //   添加合伙人身份
+                    SysUserJzgInfoSalesman sysUserJzgInfoSalesman = new SysUserJzgInfoSalesman(info.getId(), "3");
+                    sysUserJzgInfoSalesman.setPartnerStatus(1);
+                    sysUserJzgInfoSalesmanService.save(sysUserJzgInfoSalesman);
                 }
-                invitationVo.setIsJoined(1);
+                SysOrganizationUserLink userLink = sysOrganizationUserLinkService.getOne(new LambdaQueryWrapper<>(SysOrganizationUserLink.class).eq(SysOrganizationUserLink::getUserId, info.getUserId()));
+                // 添加团队关联用户
+                SysOrganizationUserLink sysOrganizationUserLink = new SysOrganizationUserLink();
+                sysOrganizationUserLink.setId(IdGenerate.nextId());
+                sysOrganizationUserLink.setOrganizationId(userLink.getOrganizationId());
+                sysOrganizationUserLink.setUserId(sysUserId);
+                sysOrganizationUserLinkService.save(sysOrganizationUserLink);
+
             }
+        }catch (Exception e){
+            e.printStackTrace();
         }
-        return invitationVo;
     }
 
+
+
+
     /**
      * 邀请成为分销员
      * @param param

+ 5 - 0
tenant/organization/src/main/java/com/jzg/organization/service/impl/SysUserJzgInfoServiceImpl.java

@@ -71,4 +71,9 @@ public class SysUserJzgInfoServiceImpl extends ServiceImpl<SysUserJzgInfoMapper,
     public boolean isGeneration(String id) {
         return baseMapper.isGeneration(id);
     }
+
+    @Override
+    public List<String> selectTypeAttrs(String userId) {
+        return baseMapper.selectTypeAttrs(userId);
+    }
 }

+ 70 - 19
tenant/organization/src/main/java/com/jzg/organization/service/impl/SysUserServiceImpl.java

@@ -875,8 +875,8 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
             }
         }
         if (!Objects.isNull(sysUserJzgInfo.getReferrerId()) && !sysUserJzgInfo.getReferrerId().equals("")) {
-            String referrerName = sysUserJzgInfoService.getById(sysUserJzgInfo.getReferrerId()).getName();
-            sysUserJzgInfo.setReferrerName(referrerName);
+            SysUserJzgInfo jzgInfo = sysUserJzgInfoService.getById(sysUserJzgInfo.getReferrerId());
+            sysUserJzgInfo.setReferrerName(Objects.isNull(jzgInfo) ? "" : jzgInfo.getName());
         }
         SysOrganizationUserLink sysOrganizationUserLink = sysOrganizationUserLinkService.getOne
                 (new LambdaQueryWrapper<SysOrganizationUserLink>().eq(SysOrganizationUserLink::getUserId, sysUserJzgInfo.getUserId()));
@@ -1119,18 +1119,17 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
     }
 
     @Override
+    @Transactional(rollbackFor = Exception.class)
     public HttpResult newSaveUserInfoByPartner(SysUserVo sysUserVo) {
         try {
-            HttpResult userInfo = addUserInfo(sysUserVo);
-            if (200 == userInfo.getCode()){
-                HttpResult httpResult = partnerDistributionClient.addPartnerRule(sysUserVo,baseController.getToken());
-            }
-            //  扫码添加合伙人出单员信息
+            sysUserVo.setCodeInvitation(true);
+            addPartner(sysUserVo);
+            return partnerDistributionClient.addPartnerRule(sysUserVo,baseController.getToken());
         }catch (Exception e){
             e.printStackTrace();
             log.error("保存合伙人数据异常:{}" + e.getMessage());
+            throw new RuntimeException("保存合伙人数据异常");
         }
-        return HttpResult.ok();
     }
 
     @Override
@@ -1172,7 +1171,7 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
     @Transactional(rollbackFor = Exception.class)
     public HttpResult partnerAddsSalesperson(String userId,String token) {
        try {
-           SysUserJzgInfo userByUserId = sysUserJzgInfoService.getById(userId);
+           SysUserJzgInfo userByUserId = sysUserJzgInfoMapper.selectByUserIdInfo(userId);
            if (Objects.isNull(userByUserId)){
                return HttpResult.error("用户不存在");
            }
@@ -1180,7 +1179,7 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
            if (isGeneration){
                return HttpResult.error("业务员已存在");
            }
-           PartnerUserVo partnerUserVo = partnerDistributionClient.searchUserStudios(userId,token);
+           PartnerUserVo partnerUserVo = partnerDistributionClient.searchUserStudios(userByUserId.getId(),token);
            if (Objects.isNull(partnerUserVo)){
                return HttpResult.error("当前合伙人身份不允许添加业务员");
            }
@@ -1211,22 +1210,43 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
            partnerUserVo.setReferrerId(partnerUserVo.getUserId());
            partnerUserVo.setId(null);
            partnerUserVo.setStatus(true);
-           partnerDistributionClient.add(partnerUserVo, token);
+           HttpResult result = partnerDistributionClient.add(partnerUserVo, token);
+           if (200 != result.getCode()){
+               throw new SystemException(result.getMsg());
+           }
            return HttpResult.ok("添加业务员成功");
        }catch (Exception e){
            e.printStackTrace();
+           throw new RuntimeException("添加业务员失败:", e);
        }
-       return HttpResult.error("添加失败");
+    }
+
+    @Override
+    public HttpResult<SysUserJzgInfo> getUserInfoUserId(String userId) {
+        return HttpResult.ok(sysUserJzgInfoMapper.getUserJzgInfoByUserId(userId));
+    }
+
+    @Override
+    public SysUserJzgInfo selectByUserIdInfo(String userId) {
+        return sysUserJzgInfoMapper.selectByUserIdInfo(userId);
     }
 
 
     public void addPartner(SysUserVo sysUserVo){
+        String referrerId = sysUserVo.getReferrerId();
         SysUser sysUser = baseMapper.getUserByMobile(sysUserVo.getMobile());
+        if (sysUserVo.isCodeInvitation()){
+            SysUserJzgInfo userJzgInfo = sysUserJzgInfoMapper.selectByUserIdInfo(sysUserVo.getReferrerId());
+            sysUserVo.setReferrerId(userJzgInfo.getId());
+            sysUserVo.setDeptId(userJzgInfo.getDeptId());
+            sysUserVo.setLeaderId(userJzgInfo.getLeaderId());
+            sysUserVo.setLeaderName(userJzgInfo.getLeaderName());
+        }
         SysUserJzgInfo sysUserJzgInfo = new SysUserJzgInfo();
         String sysUserId = "";
         if (Objects.isNull(sysUser)){
             // 如果手机号为新号 重新生成SysUser 设置默认密码
-            SysUser sysUser1 = new SysUser(sysUserVo.getMobile(), sysUserVo.getMobile(), sysUserVo.getIdentity(), sysUserVo.getIdentityTimeStart(), sysUserVo.getIdentityTimeEnd(), null);
+            SysUser sysUser1 = new SysUser(sysUserVo.getMobile(), sysUserVo.getMobile(), sysUserVo.getIdentity(), sysUserVo.getIdentityTimeStart(), sysUserVo.getIdentityTimeEnd(), sysUserVo.getPassword());
             this.save(sysUser1);
             BeanUtils.copyProperties(sysUserVo, sysUserJzgInfo);
             sysUserJzgInfo.setId(IdGenerate.nextId());
@@ -1256,8 +1276,6 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
                 sysUserRoleService.saveBatch(sysUserRoleList);
             }
             sysUserVo.setUserId(sysUserJzgInfo.getId());
-            // 发送新增业务员消息
-            this.addUserMessage(baseController.getUserName(), sysUserJzgInfo, MessageCodeEnum.TEMPLATE_11);
         }else {
             sysUserJzgInfo = sysUserJzgInfoService.getUserByUserId(sysUser.getId());
             if (Objects.isNull(sysUserJzgInfo)){
@@ -1269,12 +1287,45 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
             }
             sysUserVo.setUserId(sysUserJzgInfo.getId());
         }
-        //   添加合伙人身份
-        SysUserJzgInfoSalesman sysUserJzgInfoSalesman = new SysUserJzgInfoSalesman(sysUserJzgInfo.getId(), "3");
-        sysUserJzgInfoSalesman.setPartnerStatus(1);
-        sysUserJzgInfoSalesmanService.save(sysUserJzgInfoSalesman);
+        partnerAddsSalespersonIdentity(sysUserJzgInfo.getId(),"3");
+        if ((!Objects.isNull(sysUserVo.getGrade()) && 4 == sysUserVo.getGrade())){
+            SysOrganizationAdd organizationAdd = new SysOrganizationAdd();
+            organizationAdd.setName(sysUserVo.getName() + "团队");
+            organizationAdd.setDeptId(sysUserJzgInfo.getDeptId());
+            organizationAdd.setManagerId(sysUserJzgInfo.getLeaderId());
+            organizationAdd.setDescribeInformation("合伙人业务团队");
+            organizationAdd.setAttribute(1);
+            boolean nameExists = sysOrganizationService.nameExists(organizationAdd);
+            if (nameExists){
+                throw new SystemException("团队、渠道、电销组名称已存在");
+            }
+            SysOrganization sysOrganization = new SysOrganization();
+            BeanUtils.copyProperties(organizationAdd, sysOrganization);
+            sysOrganization.setId(IdGenerate.nextId());
+            sysOrganizationService.save(sysOrganization);
+            // 添加业务员
+            partnerAddsSalespersonIdentity(sysUserJzgInfo.getId(),"6");
+            // 添加团队关联用户
+            saveOrganization(sysOrganization.getId(),sysUserJzgInfo.getUserId());
+        }
+        if (!Objects.isNull(sysUserVo.getGrade()) && 4 < sysUserVo.getGrade()){
+            partnerAddsSalespersonIdentity(sysUserJzgInfo.getId(),"6");
+            SysOrganizationUserLink userLink = sysOrganizationUserLinkService.getOne(new LambdaQueryWrapper<>(SysOrganizationUserLink.class).eq(SysOrganizationUserLink::getUserId, referrerId));
+            // 添加团队关联用户
+            saveOrganization(userLink.getOrganizationId(),sysUserJzgInfo.getUserId());
+        }
     }
 
+    public void partnerAddsSalespersonIdentity(String infoId,String type){
+        boolean exists = sysUserJzgInfoSalesmanService.exists(new LambdaQueryWrapper<>(SysUserJzgInfoSalesman.class).eq(SysUserJzgInfoSalesman::getSysUserJzgInfoId,infoId)
+                .eq(SysUserJzgInfoSalesman::getTypeAttr, type));
+        if (!exists){
+            //   添加合伙人身份
+            SysUserJzgInfoSalesman sysUserJzgInfoSalesman = new SysUserJzgInfoSalesman(infoId, type);
+            sysUserJzgInfoSalesman.setPartnerStatus(1);
+            sysUserJzgInfoSalesmanService.save(sysUserJzgInfoSalesman);
+        }
+    }
 
 
 }

+ 1 - 1
tenant/organization/src/main/resources/mapper/SysUserJzgInfoBankCardMapper.xml

@@ -43,8 +43,8 @@
         from
         sys_user_jzg_info_bank_card sujibc
         LEFT JOIN sys_user_jzg_info suji ON suji.id = sujibc.user_info_id
+        LEFT JOIN sys_system ss ON ss.sys_code = sujibc.system_code
         LEFT JOIN sys_user su ON su.id = suji.user_id
-        left join sys_system ss on ss.sys_code = sujibc.system_code
         where
         1=1
             and sujibc.is_delete = '0'

+ 25 - 3
tenant/organization/src/main/resources/mapper/SysUserJzgInfoMapper.xml

@@ -244,13 +244,13 @@
             leader.`name` AS leaderIdName,
             sa.partner_review_time,
             pa.`name` partner_reviewer,
-            (SELECT GROUP_CONCAT(grade SEPARATOR ',' ) FROM partner_user p WHERE p.user_id = info.user_id) gradeList
+            (SELECT GROUP_CONCAT(grade SEPARATOR ',' ) FROM partner_user p WHERE p.user_id = info.id) gradeList
         FROM
             sys_user_jzg_info info
                 LEFT JOIN sys_user u ON u.id = info.user_id
                 LEFT JOIN sys_dept d ON d.id = info.dept_id
-                LEFT JOIN sys_user_jzg_info referrer ON referrer.user_id = info.referrer_id
-                LEFT JOIN sys_user_jzg_info leader ON leader.user_id = info.leader_id
+                LEFT JOIN sys_user_jzg_info referrer ON referrer.id = info.referrer_id
+                LEFT JOIN sys_user_jzg_info leader ON leader.id = info.leader_id
                 LEFT JOIN sys_user_jzg_info_salesman sa ON sa.sys_user_jzg_info_id = info.id
                 LEFT JOIN sys_user_jzg_info pa ON pa.user_id = sa.partner_reviewer
         WHERE
@@ -275,4 +275,26 @@
           AND sys_user_jzg_info_id = #{id};
     </select>
 
+
+    <select id="selectByUserIdInfo" resultType="com.jzg.commons.entity.po.SysUserJzgInfo">
+        SELECT info.*
+        FROM sys_user_jzg_info info
+                 INNER JOIN sys_user_jzg_info_salesman sa ON sa.sys_user_jzg_info_id = info.id
+        WHERE sa.type_attr = 3 AND info.user_id = #{userId}
+    </select>
+
+
+    <select id="selectTypeAttrs" resultType="java.lang.String">
+        SELECT
+            sjis.type_attr
+        FROM
+            sys_user_jzg_info_salesman sjis
+                INNER JOIN sys_user_jzg_info suji ON sjis.sys_user_jzg_info_id = suji.id
+        WHERE
+            suji.user_id = #{userId}
+          AND suji.is_delete = 0
+          AND suji.is_enable = 0
+          AND sjis.sys_user_jzg_info_id IS NOT NULL
+    </select>
+
 </mapper>