Przeglądaj źródła

代理人app开发

xuqiang 1 rok temu
rodzic
commit
d12f9d3736

+ 3 - 1
src/main/java/com/ydtech/modules/admin/service/impl/SysUserServiceImpl.java

@@ -1847,10 +1847,12 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
     public HttpResult updateUserInfo(String userId, SysUser2Vo sysUserVo) {
         SysUser sysUser = sysUserVo.getSysUser();
         int beStatus = sysUser.getStatus();
+        //  查询当前修改的用户是否是新合伙人多身份用户
+        Long count = partnerUserMapper.selectCount(new LambdaQueryWrapper<PartnerUser>().eq(PartnerUser::getUserId, sysUser.getId()));
         //查找数据库是否存在相同的身份证
         if (sysUserMapper.selectCount(new LambdaQueryWrapper<SysUser>()
                 .eq(SysUser::getIdentity, sysUserVo.getSysUser().getIdentity())
-                .ne(SysUser::getId, sysUserVo.getSysUser().getId())) > 0) {
+                .ne(SysUser::getId, sysUserVo.getSysUser().getId())) > 0 && count == 0) {
             return HttpResult.error("已存在身份证号,无法修改");
         }
 

+ 10 - 0
src/main/java/com/ydtech/modules/partner/controller/NewAppPartnerController.java

@@ -144,6 +144,16 @@ public class NewAppPartnerController extends BaseController {
         return partnerUserService.selectByIdList(partnerApp);
     }
 
+
+    /**
+     * (新)人员列表详情数据查询 通过用户ID  查询
+     */
+    @GetMapping("/selectByIdList")
+    @ApiOperation(value = "人员列表详情数据查询")
+    public HttpResult selectByIdList(@RequestParam("id") String id){
+        return partnerUserService.selectByIdListData(id);
+    }
+
     public Page buildPageRequest(PartnerApp partnerApp) {
         if (partnerApp.getPageNum() == null || partnerApp.getPageSize() == null){
             throw new SystemException("分页参数不能为空");

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

@@ -102,13 +102,6 @@ public interface PartnerUserMapper extends BaseMapper<PartnerUser> {
 
     Integer selectByUserIdNumber(@Param("userId") String userId,@Param("number")  String number, @Param("period") CommissionValidityPeriod period);
 
-
-    String queryManager(String issuerId);
-
-    String getGzsList(String issuerId);
-
-    String getTdList(String issuerId);
-
     PartnerUser queryUser(@Param("referrerId")String referrerId,@Param("grade") Integer grade);
 
     Integer selectNumber4(@Param("userId") String userId,@Param("number") String number,@Param("period") CommissionValidityPeriod period);
@@ -147,6 +140,9 @@ public interface PartnerUserMapper extends BaseMapper<PartnerUser> {
     @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}")
     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}")
     List<PartnerUser> selectAllListVo(@Param("ew") QueryWrapper<PartnerUser> queryWrapper);
 

+ 75 - 0
src/main/java/com/ydtech/modules/partner/service/Impl/PartnerUserServiceImpl.java

@@ -388,6 +388,9 @@ public class PartnerUserServiceImpl extends ServiceImpl<PartnerUserMapper, Partn
         PartnerRuleEntity partnerRuleEntity = ruleService.selectByGrade(grade);
         partnerRuleEntity.setStrategyArray(null);
         CommissionValidityPeriod period = ruleService.getCommissionValidityPeriod(partnerRuleEntity.getCycle(), userId, grade);
+        if (Objects.isNull( period) || period.getStartDate() == null){
+            return HttpResult.error("时间范围不能为空");
+        }
         partnerRuleEntity.setAssessmentEndDate(period.getEndDate().split(" ")[0]);
         BigDecimal bf = baseMapper.subordinateMembersInsurancePremiums(userId, grade, period);
         BigDecimal p = ruleService.getInviteData(userId, grade, period);
@@ -426,6 +429,28 @@ public class PartnerUserServiceImpl extends ServiceImpl<PartnerUserMapper, Partn
         return baseMapper.selectByUserIdMax(referrerId);
     }
 
+    @Override
+    public HttpResult selectByIdListData(String id) {
+        if (StringUtils.isEmpty(id)) {
+            return HttpResult.error("ID不能为空");
+        }
+        PartnerUser partnerUser = baseMapper.selectById(id);
+        if (ObjectUtils.isEmpty(partnerUser)) {
+            return HttpResult.error("人员不存在");
+        }
+        JSONObject referrerInfo = new JSONObject();
+        referrerInfo.put("referrerGrade",baseMapper.selectByUserIdGrade(partnerUser.getUserId()));
+        referrerInfo.put("referrerName",baseMapper.selectByUserIdUserName(partnerUser.getUserId()));
+        referrerInfo.put("mobile",partnerUser.getMobile());
+        referrerInfo.put("userName",partnerUser.getName());
+        HashMap<String, Object> map = new HashMap<>();
+        List<JSONObject> list = getLevelUserList(partnerUser.getUserId(), partnerUser.getGrade(), null, getRule());
+        map.put("list",list);
+        map.put("referrer",referrerInfo);
+        map.put("parentStatus",partnerUser.isIdentityStatus() ? "2" : "1");
+        return HttpResult.ok(map);
+    }
+
 
     private List<MyUserLevel> getUserLevels(String userId, List<PartnerRule> partnerRules, Map<Integer, PartnerUser> userMap) {
         List<MyUserLevel> list = new ArrayList<>();
@@ -908,6 +933,56 @@ public class PartnerUserServiceImpl extends ServiceImpl<PartnerUserMapper, Partn
         return sort1;
     }
 
+    public List<JSONObject> getLevelUserList(String userId,Integer grade,PartnerApp partnerApp, Map<Integer, String> rule){
+        Integer sort = grade + 1;
+        QueryWrapper<PartnerUser> queryWrapper = new QueryWrapper<>();
+        queryWrapper.eq("p.referrer_id",userId);
+        queryWrapper.eq("grade",sort);
+        queryWrapper.eq("u.`status`",1);
+        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);
+            }
+        }
+
+        List<PartnerUser> list = baseMapper.selectListDb( queryWrapper);
+        if (CollectionUtil.isEmpty(list)) {
+            return  new ArrayList<>(0);
+        }
+        List<String> userIds = list.stream().map(PartnerUser::getUserId).collect(Collectors.toList());
+
+        // 使用参数绑定防止SQL注入,合并查询条件
+        QueryWrapper<PartnerPremiumDetails> wrapper = new QueryWrapper<>();
+        wrapper.in("user_id", userIds);
+        wrapper.eq("source", sort);
+        wrapper.groupBy("user_id");
+
+        // 合并查询结果处理
+        List<Map<String, Object>> resultMapList = detailsMapper.selectCombinedStatistics(wrapper);
+
+        // 简化Map转换逻辑
+        Map<String, BigDecimal> premiumMapDict = new HashMap<>();
+        Map<String, BigDecimal> commissionMapDict = new HashMap<>();
+
+        for (Map<String, Object> map : resultMapList) {
+            String userIdTemp = String.valueOf(map.get("userId"));
+            BigDecimal premium = new BigDecimal(String.valueOf(map.get("premium")));
+            BigDecimal commission = new BigDecimal(String.valueOf(map.get("commission")));
+            premiumMapDict.put(userIdTemp, premium);
+            commissionMapDict.put(userIdTemp, commission);
+        }
+        List<JSONObject> jsonList = new ArrayList<>();
+        for (PartnerUser partnerUser : list) {
+            JSONObject jsonObject = getJsonObject(rule, partnerUser);
+            jsonObject.put("number", countByUserIdLevel(partnerUser.getUserId(),partnerUser.getGrade() + 1));
+            String currentUserId = partnerUser.getUserId();
+            jsonObject.put("premium", premiumMapDict.getOrDefault(currentUserId, BigDecimal.ZERO));
+            jsonObject.put("commission", commissionMapDict.getOrDefault(currentUserId, BigDecimal.ZERO));
+            jsonList.add(jsonObject);
+        }
+        List<JSONObject> sort1 = getSort(jsonList);
+        return sort1;
+    }
 
     public Page getLevelUser(String userId,Integer grade,PartnerApp partnerApp, Map<Integer, String> rule){
         Integer sort = grade + 1;

+ 2 - 0
src/main/java/com/ydtech/modules/partner/service/PartnerUserService.java

@@ -80,4 +80,6 @@ public interface PartnerUserService extends IService<PartnerUser> {
     HttpResult degradedTask(String grade,String userId);
 
     Integer selectByUserIdMax(String referrerId);
+
+    HttpResult selectByIdListData(String id);
 }

+ 5 - 171
src/main/resources/mapper/modules/partner/PartnerUserMapper.xml

@@ -545,7 +545,7 @@ SELECT
 
     <select id="userCountVo" resultType="java.lang.Integer">
         WITH RECURSIVE sub_partners AS (
-        SELECT p1.id, p1.user_id,p1.grade, CAST(p1.user_id AS CHAR(200)) AS path
+        SELECT p1.id, p1.user_id,p1.grade
         FROM partner_user p1
         LEFT JOIN sys_user u ON u.id = p1.user_id
         WHERE u.STATUS = 1 AND p1.referrer_id = #{userId} and p1.grade = #{grade}
@@ -566,11 +566,11 @@ SELECT
             </if>
         </if>
         UNION ALL
-        SELECT p.id, p.user_id,p.grade,CONCAT(sp.path, '->', p.user_id)
+        SELECT p.id, p.user_id,p.grade
         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 p.grade = (sp.grade + 1) AND sp.path NOT LIKE CONCAT('%->', p.user_id, '%')
+        WHERE u1.STATUS = 1 AND p.grade = (sp.grade + 1)
         <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]}
@@ -620,57 +620,6 @@ SELECT
         </if>
     </select>
 
-<!--
-
- WITH RECURSIVE sub_partners AS (
-        SELECT p1.id, p1.user_id,p1.create_time
-        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.id, p.user_id,p.create_time
-        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
-        <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 DATE_FORMAT( create_time, '%Y-%m-%d' ) AS createTime, count( id ) AS total FROM sub_partners GROUP BY createTime
-
-
--->
-
 
     <select id="userCountVo2" resultType="java.util.Map">
         SELECT
@@ -869,89 +818,6 @@ SELECT
     </select>
 
 
-    <select id="queryManager" 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 user_id = #{issuerId}
-
-            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, '%')
-        )
-        SELECT user_id FROM cte_name WHERE grade = 3
-    </select>
-
-
-
-
-    <select id="getGzsList" 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 user_id = #{issuerId}
-
-            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, '%')
-        )
-        SELECT user_id FROM cte_name WHERE grade = 3
-    </select>
-
-
-
-    <select id="getTdList" 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 user_id = #{issuerId}
-
-            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, '%')
-        )
-        SELECT user_id FROM cte_name WHERE grade = 4
-    </select>
-
     <select id="queryUser" resultType="com.ydtech.modules.partner.model.PartnerUser">
         SELECT * from  partner_user where user_id = #{referrerId} and grade = #{grade}
     </select>
@@ -963,8 +829,6 @@ SELECT
     </select>
 
 
-
-
     <select id="assessment" resultType="java.lang.Integer">
         SELECT
         COUNT( 1 )
@@ -978,41 +842,12 @@ SELECT
     </select>
 
 
-
-
-    <select id="selectTotalSumPremium" resultType="java.math.BigDecimal">
-        SELECT SUM(DISTINCT sumpremium) FROM partner_premium_details WHERE user_id IN(
-            WITH RECURSIVE cte_name AS (
-                SELECT
-                    user_id,
-                    referrer_id,
-                    CAST(user_id AS CHAR(200)) AS path
-                FROM partner_user
-                WHERE user_id = #{userId} AND grade = #{grade}
-                UNION ALL
-                SELECT
-                    t.user_id,
-                    t.referrer_id,
-                    CONCAT(cte_name.path, '->', t.user_id)
-                FROM partner_user t
-                         INNER JOIN cte_name ON t.referrer_id = cte_name.user_id
-                WHERE cte_name.path NOT LIKE CONCAT('%->', t.user_id, '%')
-            )
-            SELECT DISTINCT user_id FROM cte_name
-        )
-        <if test="period.startDate != null and period.endDate != null">
-            AND create_time BETWEEN #{period.startDate} AND #{period.endDate}
-        </if>
-    </select>
-
-
     <select id="querySuperiors" resultType="java.lang.String">
         WITH RECURSIVE cte_name AS (
             SELECT
                 user_id,
                 referrer_id,
-                grade,
-                CAST(user_id AS CHAR(1000)) AS path
+                grade
             FROM
                 partner_user
             WHERE
@@ -1021,8 +856,7 @@ SELECT
             SELECT
                 t.user_id,
                 t.referrer_id,
-                t.grade,
-                CONCAT(cte_name.path, ',', t.user_id) AS path
+                t.grade
             FROM
                 partner_user t
                     INNER JOIN cte_name ON t.user_id = cte_name.referrer_id