Răsfoiți Sursa

合伙人bug修改

xuqiang 1 an în urmă
părinte
comite
eb786bf948

+ 43 - 4
src/main/java/com/ydtech/modules/admin/service/impl/SysUserServiceImpl.java

@@ -50,6 +50,7 @@ import com.ydtech.modules.message.service.SystemMessageService;
 import com.ydtech.modules.partner.UpdateRatioUtils;
 import com.ydtech.modules.partner.UpdateRatioUtils;
 import com.ydtech.modules.partner.dao.PartnerRuleMapper;
 import com.ydtech.modules.partner.dao.PartnerRuleMapper;
 import com.ydtech.modules.partner.dao.PartnerUserGradeMapper;
 import com.ydtech.modules.partner.dao.PartnerUserGradeMapper;
+import com.ydtech.modules.partner.dao.PartnerUserMapper;
 import com.ydtech.modules.partner.model.PartnerRule;
 import com.ydtech.modules.partner.model.PartnerRule;
 import com.ydtech.modules.partner.model.PartnerUser;
 import com.ydtech.modules.partner.model.PartnerUser;
 import com.ydtech.modules.partner.model.PartnerUserGrade;
 import com.ydtech.modules.partner.model.PartnerUserGrade;
@@ -81,6 +82,7 @@ import java.text.SimpleDateFormat;
 import java.time.LocalDate;
 import java.time.LocalDate;
 import java.util.*;
 import java.util.*;
 import java.util.stream.Collectors;
 import java.util.stream.Collectors;
+import java.util.stream.Stream;
 
 
 
 
 @Service
 @Service
@@ -177,6 +179,8 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
 
 
     @Value("${jzg.referrerId}")
     @Value("${jzg.referrerId}")
     private String referrerId;
     private String referrerId;
+    @Autowired
+    private PartnerUserMapper partnerUserMapper;
 
 
 
 
     @Override
     @Override
@@ -1949,12 +1953,16 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
             sysUserRole.setLastUpdateBy(sysUser.getCreateBy());
             sysUserRole.setLastUpdateBy(sysUser.getCreateBy());
             sysUserRole.setLastUpdateTime(new Date());
             sysUserRole.setLastUpdateTime(new Date());
             sysUserRoleService.updateById(sysUserRole);
             sysUserRoleService.updateById(sysUserRole);
-
-            if (StringUtils.isNotEmpty(sysUser.getReferrerId())) {
-                //推荐人
-                esmUserReferrerService.addReferrer(sysUser.getReferrerId(), userId);
+            if (0 == sysUser.getNewApp()){
+                if (StringUtils.isNotEmpty(sysUser.getReferrerId())) {
+                    //推荐人
+                    esmUserReferrerService.addReferrer(sysUser.getReferrerId(), userId);
+                }
+            }else {
+                updateMultiUsers(sysUser);
             }
             }
 
 
+
             //用户详情信息
             //用户详情信息
             SysUserInfo sysUserInfo = sysUserVo.getSysUserInfo();
             SysUserInfo sysUserInfo = sysUserVo.getSysUserInfo();
             if (null != sysUserInfo.getLiveAddressString() && sysUserInfo.getLiveAddressString().length > 0) {
             if (null != sysUserInfo.getLiveAddressString() && sysUserInfo.getLiveAddressString().length > 0) {
@@ -1999,6 +2007,37 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
         return HttpResult.ok("修改成功");
         return HttpResult.ok("修改成功");
     }
     }
 
 
+
+    public void updateMultiUsers(SysUser sysUser){
+        QueryWrapper<PartnerUser> queryWrapper = new QueryWrapper<>();
+        queryWrapper.eq("user_id", sysUser.getId());
+        List<String> gradeList = sysUser.getGradeList();
+
+        List<String> sortedAsc = gradeList.stream()
+                .map(Integer::parseInt)
+                .sorted()
+                .map(String::valueOf)
+                .collect(Collectors.toList());
+
+        List<PartnerUser> partnerUsers = partnerUserMapper.selectList(queryWrapper);
+        if (CollectionUtils.isEmpty(partnerUsers)){
+            if (CollectionUtils.isEmpty(gradeList)){
+                String userId = sysUser.getId();
+                for (String s : sortedAsc) {
+//                    PartnerUser partnerUser = new PartnerUser();
+//                    partnerUser.setUserId(sysUser.getId());
+//                    partnerUser.setName(sysUser.getName());
+//                    partnerUser.setDeptId(sysUser.getDeptId());
+//                    partnerUser.
+//                    partnerUser.setDeptName(sysUser.getDeptName());
+//                    partnerUser.setGrade(Integer.valueOf(s));
+                }
+
+            }
+        }
+    }
+
+
     @Override
     @Override
     @Transactional(rollbackFor = Exception.class)
     @Transactional(rollbackFor = Exception.class)
     public HttpResult updateUserInfo1(String userId, SysUser2Vo sysUserVo) {
     public HttpResult updateUserInfo1(String userId, SysUser2Vo sysUserVo) {

+ 0 - 2
src/main/java/com/ydtech/modules/partner/dao/PartnerUserMapper.java

@@ -29,7 +29,6 @@ public interface PartnerUserMapper extends BaseMapper<PartnerUser> {
 
 
     List<TeamOverviewVo> selectTeamOverview(@Param("params") AppHomeParams params);
     List<TeamOverviewVo> selectTeamOverview(@Param("params") AppHomeParams params);
 
 
-    List<String> selectRelatedPerList(@Param("userId") String userId,@Param("params") AppHomeParams params);
 
 
     @Delete("delete from partner_user where user_id=#{id}")
     @Delete("delete from partner_user where user_id=#{id}")
     void deleteByUserId(String id);
     void deleteByUserId(String id);
@@ -121,7 +120,6 @@ public interface PartnerUserMapper extends BaseMapper<PartnerUser> {
 
 
     Integer selectByUserIdNumber(@Param("userId") String userId,@Param("number")  String number, @Param("period") CommissionValidityPeriod period);
     Integer selectByUserIdNumber(@Param("userId") String userId,@Param("number")  String number, @Param("period") CommissionValidityPeriod period);
 
 
-    String getIssuerId(String issuerId);
 
 
 
 
     String queryManager(String issuerId);
     String queryManager(String issuerId);

+ 70 - 105
src/main/resources/mapper/modules/partner/PartnerUserMapper.xml

@@ -313,64 +313,6 @@ select grade,grade_name from  partner_rule
     </select>
     </select>
 
 
 
 
-    <select id="selectRelatedPerList" resultType="java.lang.String">
-        WITH RECURSIVE sub_partners AS (
-        SELECT DISTINCT
-        p1.user_id,
-        p1.user_id AS path
-        FROM
-        partner_user p1
-        LEFT JOIN sys_user u ON u.id = p1.user_id
-        WHERE
-        u.STATUS = 1  AND p1.referrer_id = #{userId}
-        <if test="params != null">
-            <if test="params.timeFrame != null and params.timeFrame.length > 0">
-                AND p1.create_time BETWEEN #{params.timeFrame[0]} AND #{params.timeFrame[1]}
-            </if>
-            <if test="params.countCycle != null">
-                <if test="params.countCycle == 'Day'">
-                    AND DATE(p1.create_time) = CURDATE()
-                </if>
-                <if test="params.countCycle == 'Week'">
-                    AND YEARWEEK(p1.create_time, 1) = YEARWEEK(CURDATE(), 1)
-                </if>
-                <if test="params.countCycle == 'Month'">
-                    AND YEAR(p1.create_time) = YEAR(CURDATE()) AND MONTH(p1.create_time) = MONTH(CURDATE())
-                </if>
-            </if>
-        </if>
-        UNION ALL
-        SELECT
-        p.user_id,
-        CONCAT( sp.path, ',', p.user_id )
-        FROM
-        partner_user p
-        LEFT JOIN sys_user u1 ON u1.id = p.user_id
-        INNER JOIN sub_partners sp ON p.referrer_id = sp.user_id
-        WHERE
-        u1.STATUS = 1
-        AND INSTR( sp.path, p.user_id ) = 0
-        <if test="params != null">
-            <if test="params.timeFrame != null and params.timeFrame.length > 0">
-                AND p.create_time BETWEEN #{params.timeFrame[0]} AND #{params.timeFrame[1]}
-            </if>
-            <if test="params.countCycle != null">
-                <if test="params.countCycle == 'Day'">
-                    AND DATE(p.create_time) = CURDATE()
-                </if>
-                <if test="params.countCycle == 'Week'">
-                    AND YEARWEEK(p.create_time, 1) = YEARWEEK(CURDATE(), 1)
-                </if>
-                <if test="params.countCycle == 'Month'">
-                    AND YEAR(p.create_time) = YEAR(CURDATE()) AND MONTH(p.create_time) = MONTH(CURDATE())
-                </if>
-            </if>
-        </if>
-        )
-        SELECT DISTINCT user_id AS total FROM sub_partners
-    </select>
-
-
     <resultMap id="SelectUserVo" type="com.ydtech.modules.partner.model.vo.SelectUserVo">
     <resultMap id="SelectUserVo" type="com.ydtech.modules.partner.model.vo.SelectUserVo">
         <result property="grade" column="grade"/>
         <result property="grade" column="grade"/>
         <result property="gradeName" column="grade_name"/>
         <result property="gradeName" column="grade_name"/>
@@ -527,7 +469,7 @@ select grade,grade_name from  partner_rule
 
 
     <select id="userCountVo" resultType="java.lang.Integer">
     <select id="userCountVo" resultType="java.lang.Integer">
         WITH RECURSIVE sub_partners AS (
         WITH RECURSIVE sub_partners AS (
-        SELECT p1.id, p1.user_id
+        SELECT p1.id, p1.user_id, CAST(p1.user_id AS CHAR(200)) AS path
         FROM partner_user p1
         FROM partner_user p1
         LEFT JOIN sys_user u ON u.id = p1.user_id
         LEFT JOIN sys_user u ON u.id = p1.user_id
         WHERE u.STATUS = 1 AND p1.referrer_id = #{userId}
         WHERE u.STATUS = 1 AND p1.referrer_id = #{userId}
@@ -548,11 +490,11 @@ select grade,grade_name from  partner_rule
             </if>
             </if>
         </if>
         </if>
         UNION ALL
         UNION ALL
-        SELECT p.id, p.user_id
+        SELECT p.id, p.user_id,CONCAT(sp.path, '->', p.user_id)
         FROM partner_user p
         FROM partner_user p
         LEFT JOIN sys_user u1 ON u1.id = p.user_id
         LEFT JOIN sys_user u1 ON u1.id = p.user_id
         INNER JOIN sub_partners sp ON p.referrer_id = sp.user_id
         INNER JOIN sub_partners sp ON p.referrer_id = sp.user_id
-        WHERE u1.STATUS = 1
+        WHERE u1.STATUS = 1  AND sp.path NOT LIKE CONCAT('%->', p.user_id, '%')
         <if test="params != null">
         <if test="params != null">
             <if test="params.timeFrame != null and params.timeFrame.length > 0">
             <if test="params.timeFrame != null and params.timeFrame.length > 0">
                 AND p.create_time BETWEEN #{params.timeFrame[0]} AND #{params.timeFrame[1]}
                 AND p.create_time BETWEEN #{params.timeFrame[0]} AND #{params.timeFrame[1]}
@@ -831,15 +773,27 @@ select grade,grade_name from  partner_rule
         </if>
         </if>
         AND p.referrer_id IN (
         AND p.referrer_id IN (
             WITH RECURSIVE cte_name AS (
             WITH RECURSIVE cte_name AS (
-
-            SELECT user_id,referrer_id,grade
-            FROM partner_user
-            WHERE user_id = #{userId}
-            UNION ALL
-            SELECT t.user_id, t.referrer_id,t.grade
-            FROM partner_user t
+            SELECT
+            user_id,
+            referrer_id,
+            grade,
+            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
             INNER JOIN cte_name ON t.user_id = cte_name.referrer_id
-            WHERE t.grade = '4'
+            WHERE
+            cte_name.path NOT LIKE CONCAT( '%->', t.user_id, '%' )
+            AND t.grade = '4'
             )
             )
             SELECT user_id FROM cte_name WHERE grade = 4
             SELECT user_id FROM cte_name WHERE grade = 4
         )
         )
@@ -876,37 +830,28 @@ select grade,grade_name from  partner_rule
     </select>
     </select>
 
 
 
 
-
-
-    <select id="getIssuerId" resultType="java.lang.String">
-        WITH RECURSIVE cte_name AS (
-
-            SELECT user_id,referrer_id,grade
-            FROM partner_user
-            WHERE user_id = #{issuerId}
-
-            UNION ALL
-            SELECT t.user_id, t.referrer_id,t.grade
-            FROM partner_user t
-                     INNER JOIN cte_name ON t.user_id = cte_name.referrer_id
-            WHERE t.grade = '4'
-        )
-        SELECT user_id FROM cte_name WHERE grade = 4
-    </select>
-
-
     <select id="queryManager" resultType="java.lang.String">
     <select id="queryManager" resultType="java.lang.String">
         WITH RECURSIVE cte_name AS (
         WITH RECURSIVE cte_name AS (
-
-            SELECT user_id,referrer_id,grade
+            SELECT
+                user_id,
+                referrer_id,
+                grade,
+                CAST(user_id AS CHAR(200)) AS path
             FROM partner_user
             FROM partner_user
             WHERE user_id = #{issuerId}
             WHERE user_id = #{issuerId}
 
 
             UNION ALL
             UNION ALL
-            SELECT t.user_id, t.referrer_id,t.grade
-            FROM partner_user t
-                     INNER JOIN cte_name ON t.user_id = cte_name.referrer_id
 
 
+            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, '%')
         )
         )
         SELECT user_id FROM cte_name WHERE grade = 3
         SELECT user_id FROM cte_name WHERE grade = 3
     </select>
     </select>
@@ -916,16 +861,26 @@ select grade,grade_name from  partner_rule
 
 
     <select id="getGzsList" resultType="java.lang.String">
     <select id="getGzsList" resultType="java.lang.String">
         WITH RECURSIVE cte_name AS (
         WITH RECURSIVE cte_name AS (
-
-            SELECT user_id,referrer_id,grade
+            SELECT
+                user_id,
+                referrer_id,
+                grade,
+                CAST(user_id AS CHAR(200)) AS path
             FROM partner_user
             FROM partner_user
-            WHERE user_id =  #{issuerId}
+            WHERE user_id = #{issuerId}
 
 
             UNION ALL
             UNION ALL
-            SELECT t.user_id, t.referrer_id,t.grade
-            FROM partner_user t
-                     INNER JOIN cte_name ON t.user_id = cte_name.referrer_id
 
 
+            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, '%')
         )
         )
         SELECT user_id FROM cte_name WHERE grade = 3
         SELECT user_id FROM cte_name WHERE grade = 3
     </select>
     </select>
@@ -934,16 +889,26 @@ select grade,grade_name from  partner_rule
 
 
     <select id="getTdList" resultType="java.lang.String">
     <select id="getTdList" resultType="java.lang.String">
         WITH RECURSIVE cte_name AS (
         WITH RECURSIVE cte_name AS (
-
-            SELECT user_id,referrer_id,grade
+            SELECT
+                user_id,
+                referrer_id,
+                grade,
+                CAST(user_id AS CHAR(200)) AS path
             FROM partner_user
             FROM partner_user
-            WHERE user_id =  #{issuerId}
+            WHERE user_id = #{issuerId}
 
 
             UNION ALL
             UNION ALL
-            SELECT t.user_id, t.referrer_id,t.grade
-            FROM partner_user t
-                     INNER JOIN cte_name ON t.user_id = cte_name.referrer_id
 
 
+            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, '%')
         )
         )
         SELECT user_id FROM cte_name WHERE grade = 4
         SELECT user_id FROM cte_name WHERE grade = 4
     </select>
     </select>