Bladeren bron

合伙人升级bug修改

xuqiang 1 jaar geleden
bovenliggende
commit
a2f3d9f7f5

+ 7 - 14
src/main/java/com/ydtech/modules/partner/CalculateCommissionUtils.java

@@ -34,17 +34,14 @@ public class CalculateCommissionUtils {
     private static PartnerCommissionService commissionService;
     private static PartnerUserMapper partnerUserMapper;
     private static PartnerPremiumDetailsMapper partnerPremiumDetailsMapper;
-    private static PartnerUserService partnerUserService;
 
     @Autowired
     public void setCommissionService(PartnerCommissionService commissionService,
                                      PartnerUserMapper partnerUserMapper,
-                                     PartnerPremiumDetailsMapper partnerPremiumDetailsMapper,
-                                     PartnerUserService partnerUserService) {
+                                     PartnerPremiumDetailsMapper partnerPremiumDetailsMapper) {
         CalculateCommissionUtils.commissionService = commissionService;
         CalculateCommissionUtils.partnerUserMapper = partnerUserMapper;
         CalculateCommissionUtils.partnerPremiumDetailsMapper = partnerPremiumDetailsMapper;
-        CalculateCommissionUtils.partnerUserService = partnerUserService;
     }
 
     @PostConstruct
@@ -63,15 +60,13 @@ public class CalculateCommissionUtils {
 
     private static CommissionValues calculateCommonValues(String grade, String userId, PartnerCommissionRules rules,String levelUserId,String type) {
         CommissionValidityPeriod period = getCommissionValidityPeriod(rules, userId, grade);
-        Set<String> userIdList;
-        String queryGrade = "";
+        Set<String> userIdList = new HashSet<>(0);
         if (StringUtils.equals("gzs", type)){
-            queryGrade = "5";
+            userIdList = partnerUserMapper.querySubordinateUserId(levelUserId);
         }
         if (StringUtils.equals("hh", type)){
-            queryGrade = "4";
+            userIdList = partnerUserMapper.querySubordinate(levelUserId);
         }
-        userIdList = partnerUserMapper.querySubordinateUserId(levelUserId, queryGrade);
         BigDecimal sumPremium = BigDecimal.ZERO;
         if (CollectionUtil.isNotEmpty(userIdList)) {
             QueryWrapper<PartnerPremiumDetails> queryWrapper = new QueryWrapper<>();
@@ -90,6 +85,7 @@ public class CalculateCommissionUtils {
         if (StringUtils.equals("hh", type)){
             number = partnerUserMapper.selectNumber(levelUserId, "4", period);
         }
+        log.info("用户id{}++{}级用户++出单人的上级用户{}++统计的保单金额{}++统计的邀请人数{}", userId, grade, levelUserId, sumPremium,number);
         return new CommissionValues(sumPremium, new BigDecimal(number));
     }
 
@@ -135,6 +131,7 @@ public class CalculateCommissionUtils {
         if (StringUtils.equals("4", grade) || StringUtils.equals("3", grade)){
             hh = ladderCommission(grade, rulesVo.getPartner().getRulesRatioList(), userId, rulesVo.getPartner(),levelUserId,"gzs");
         }
+        log.info("用户id:{}++{}级用户++gl:{}++hh:{}", userId, grade,gl, hh);
         return calculateProportion(grade,rulesVo,gl,hh);
     }
 
@@ -368,9 +365,5 @@ public class CalculateCommissionUtils {
         return Date.from(endOfDay.atZone(ZoneId.systemDefault()).toInstant());
     }
 
-    public static Set<String> getUserIdList(String userId) {
-        Set<String> list = new HashSet<>();
-        partnerUserService.getLevelUserId(userId, list);
-        return list;
-    }
+
 }

+ 3 - 1
src/main/java/com/ydtech/modules/partner/dao/PartnerUserMapper.java

@@ -145,5 +145,7 @@ public interface PartnerUserMapper extends BaseMapper<PartnerUser> {
     @Select("SELECT user_id FROM partner_user WHERE user_id = (SELECT referrer_id FROM partner_user WHERE user_id = #{userId} AND grade = #{grade}) AND grade = 3")
     String searchRecommenders(@Param("userId") String userId,@Param("grade") String grade);
 
-    Set<String> querySubordinateUserId(@Param("levelUserId") String levelUserId, @Param("grade") String grade);
+    Set<String> querySubordinateUserId(@Param("levelUserId") String levelUserId);
+
+    Set<String> querySubordinate(String levelUserId);
 }

+ 26 - 14
src/main/resources/mapper/modules/partner/PartnerUserMapper.xml

@@ -941,19 +941,14 @@ select grade,grade_name from  partner_rule
                 CAST(user_id AS CHAR(200)) AS path
             FROM partner_user
             WHERE user_id = #{userId}
-
             UNION ALL
-
             SELECT
                 t.user_id,
                 t.referrer_id,
                 t.grade,
                 CONCAT(cte_name.path, '->', t.user_id)
-            FROM partner_user t
-                     INNER JOIN cte_name
-                                ON t.user_id = cte_name.referrer_id
-            WHERE
-                cte_name.path NOT LIKE CONCAT('%->', t.user_id, '%')
+            FROM partner_user t INNER JOIN cte_name ON t.user_id = cte_name.referrer_id
+            WHERE cte_name.path NOT LIKE CONCAT('%->', t.user_id, '%')
         )
         SELECT user_id FROM cte_name WHERE grade = #{grade}
     </select>
@@ -967,20 +962,37 @@ select grade,grade_name from  partner_rule
                 grade,
                 CAST(user_id AS CHAR(200)) AS path
             FROM partner_user
-            WHERE referrer_id = #{levelUserId} AND grade = #{grade}
-
+            WHERE referrer_id = #{levelUserId} AND grade = '5'
             UNION ALL
+            SELECT
+                t.user_id,
+                t.referrer_id,
+                t.grade,
+                CONCAT(cte_name.path, '->', t.user_id)
+            FROM partner_user t INNER JOIN cte_name  ON t.referrer_id = cte_name.user_id
+            WHERE t.grade = (cte_name.grade + 1) and cte_name.path NOT LIKE CONCAT('%->', t.user_id, '%')
+        )
+        SELECT user_id FROM cte_name
+    </select>
 
+
+    <select id="querySubordinate" resultType="java.lang.String">
+        WITH RECURSIVE cte_name AS (
+            SELECT
+                user_id,
+                referrer_id,
+                grade,
+                CAST(user_id AS CHAR(200)) AS path
+            FROM partner_user
+            WHERE referrer_id IN(SELECT user_id FROM partner_user WHERE user_id = #{levelUserId} AND grade = '4') AND grade = '5'
+            UNION ALL
             SELECT
                 t.user_id,
                 t.referrer_id,
                 t.grade,
                 CONCAT(cte_name.path, '->', t.user_id)
-            FROM partner_user t
-                     INNER JOIN cte_name
-                                ON t.referrer_id = cte_name.user_id
-            WHERE t.grade = (cte_name.grade + 1) and
-                cte_name.path NOT LIKE CONCAT('%->', t.user_id, '%')
+            FROM partner_user t INNER JOIN cte_name ON t.referrer_id = cte_name.user_id
+            WHERE t.grade = (cte_name.grade + 1) and cte_name.path NOT LIKE CONCAT('%->', t.user_id, '%')
         )
         SELECT user_id FROM cte_name
     </select>