Browse Source

合伙人升级bug修改

xuqiang 1 năm trước cách đây
mục cha
commit
46d7a5445f

+ 12 - 0
src/main/java/com/ydtech/modules/admin/controller/SysAgencyFeeApprovalController.java

@@ -80,6 +80,18 @@ public class SysAgencyFeeApprovalController extends BaseController {
         return this.sysAgencyFeeApprovalService.insert(sysAgencyFeeApprovalAddDto);
     }
 
+
+    /**
+     * (新APP提现申请保存)
+     * @param sysAgencyFeeApprovalAddDto 实体
+     * @return 新增结果
+     */
+    @ApiOperation(value = "提现申请保存")
+    @PostMapping("/partnerAccount")
+    public HttpResult partnerAccount(@RequestBody SysAgencyFeeApprovalAddDto sysAgencyFeeApprovalAddDto) {
+        return this.sysAgencyFeeApprovalService.partnerAccount(sysAgencyFeeApprovalAddDto);
+    }
+
     /**
      * 编辑数据
      *

+ 2 - 0
src/main/java/com/ydtech/modules/admin/service/SysAgencyFeeApprovalService.java

@@ -34,4 +34,6 @@ public interface SysAgencyFeeApprovalService extends IService<SysAgencyFeeApprov
     List<SysAgencyFeeApproval> queryOperateInfo(SysAgencyFeeApprovalDto sysAgencyFeeApprovalDto);
 
     SysAgencyFeeApprovalRecordVo operateInfo(Integer id);
+
+    HttpResult partnerAccount(SysAgencyFeeApprovalAddDto sysAgencyFeeApprovalAddDto);
 }

+ 67 - 1
src/main/java/com/ydtech/modules/admin/service/impl/SysAgencyFeeApprovalServiceImpl.java

@@ -19,6 +19,8 @@ import com.ydtech.modules.admin.service.SysAgencyFeeApprovalService;
 import com.ydtech.modules.admin.service.SysAgencyLeaderService;
 import com.ydtech.modules.base.controller.BaseController;
 import com.ydtech.modules.order.entity.BasePageResult;
+import com.ydtech.modules.partner.dao.PartnerPartnerAccountMapper;
+import com.ydtech.modules.partner.model.PartnerPartnerAccount;
 import com.ydtech.utils.StringUtils;
 import com.ydtech.utils.idgen.IdGenerate;
 import org.springframework.stereotype.Service;
@@ -55,7 +57,8 @@ public class SysAgencyFeeApprovalServiceImpl extends ServiceImpl<SysAgencyFeeApp
     @Resource
     private SysUserMapper sysUserMapper;
 
-
+    @Resource
+    private PartnerPartnerAccountMapper partnerAccountMapper;
 
 
     @Override
@@ -241,5 +244,68 @@ public class SysAgencyFeeApprovalServiceImpl extends ServiceImpl<SysAgencyFeeApp
         return sysAgencyFeeApprovalRecordVo;
     }
 
+    @Override
+    public HttpResult partnerAccount(SysAgencyFeeApprovalAddDto sysAgencyFeeApprovalAddDto) {
+        BigDecimal actualFee = sysAgencyFeeApprovalAddDto.getActualFee();
+        if (actualFee == null || actualFee.equals(new BigDecimal("0.00"))) {
+            throw new SystemException("请输入提现金额");
+        }
+        //当前登录用户
+        SysUser user = BaseController.getUser();
+        PartnerPartnerAccount account = partnerAccountMapper.selectOne(new LambdaQueryWrapper<>(PartnerPartnerAccount.class).eq(PartnerPartnerAccount::getUserId,user.getId()));
+        BigDecimal cashFee = account.getCashFee();
+        int compare = cashFee.compareTo(actualFee);
+        if (compare < 0) {
+            throw new SystemException("提现金额不能超过可提现金额");
+        }
+
+
+        SysAgencyFeeApproval sysAgencyFeeApproval = BeanUtil.copyProperties(sysAgencyFeeApprovalAddDto, SysAgencyFeeApproval.class);
+        sysAgencyFeeApproval.setUserId(user.getId());
+        sysAgencyFeeApproval.setUserName(user.getName());
+        sysAgencyFeeApproval.setDeptId(user.getDeptId());
+        SysDept sysDept = sysDeptMapper.selectOne(new LambdaQueryWrapper<SysDept>().eq(SysDept::getId, user.getDeptId()).eq(SysDept::getDelFlag, 0));
+        if (sysDept != null) {
+            sysAgencyFeeApproval.setDeptName(sysDept.getName());
+        }
+        sysAgencyFeeApproval.setNumber(IdGenerate.nextId());
+        //总保费
+        sysAgencyFeeApproval.setSumpremium(account.getSumPremium());
+        //总保费抽成费用
+        sysAgencyFeeApproval.setExtractFee(account.getExtractFee());
+        //已提现抽成费用
+//        sysAgencyFeeApproval.setHistoryFee(null);
+        //可提现抽成费用
+        sysAgencyFeeApproval.setCashFee(actualFee);
+//        sysAgencyFeeApproval.setStartTime(agencyExtractFee.getStartTime());
+//        sysAgencyFeeApproval.setProportional(agencyExtractFee.getProportional());
+        sysAgencyFeeApproval.setCreateBy(user.getName());
+        sysAgencyFeeApproval.setCreateTime(new Date());
+        sysAgencyFeeApproval.setStatus("0");
+        sysAgencyFeeApprovalMapper.insert(sysAgencyFeeApproval);
+
+
+        account.setCashFee(account.getCashFee().subtract(actualFee));
+        BigDecimal historyFee = account.getHistoryFee();
+        if (historyFee == null) {
+            account.setHistoryFee(actualFee);
+        }else {
+            account.setHistoryFee(account.getHistoryFee().add(actualFee));
+        }
+        partnerAccountMapper.updateById(account);
+
+
+        //保存添加记录
+        SysAgencyFeeApprovalRecord sysAgencyFeeApprovalRecord = BeanUtil.copyProperties(sysAgencyFeeApproval, SysAgencyFeeApprovalRecord.class);
+        sysAgencyFeeApprovalRecord.setApprovalId(sysAgencyFeeApproval.getId());
+        sysAgencyFeeApprovalRecord.setId(null);
+        boolean i = sysAgencyFeeApprovalRecordMapper.insert(sysAgencyFeeApprovalRecord)>0;
+        if (i) {
+            return HttpResult.ok("提现申请提交成功");
+        }
+        return HttpResult.error("提现申请提交失败");
+    }
+
+
 
 }

+ 1 - 3
src/main/java/com/ydtech/modules/fnc/service/impl/InsFeeAuditServiceImpl.java

@@ -475,8 +475,7 @@ public class InsFeeAuditServiceImpl extends ServiceImpl<InsFeeAuditMapper, InsFe
                 .eq(PartnerPremiumDetails::getCompanyId,  insAreaCompany.getId()));
         for (PartnerPremiumDetails detail : partnerPremiumDetails) {
             PartnerPartnerAccount account1 = partnerPartnerAccountMapper.selectOne(new LambdaQueryWrapper<PartnerPartnerAccount>()
-                    .eq(PartnerPartnerAccount::getUserId, detail.getUserId())
-                    .eq(PartnerPartnerAccount::getGrade, detail.getSource()));
+                    .eq(PartnerPartnerAccount::getUserId, detail.getUserId()));
             if (Objects.isNull(account1)){
                 PartnerPartnerAccount account = new PartnerPartnerAccount();
                 account.setUserId(detail.getUserId());
@@ -485,7 +484,6 @@ public class InsFeeAuditServiceImpl extends ServiceImpl<InsFeeAuditMapper, InsFe
                 account.setHistoryFee(new BigDecimal("0"));
                 account.setCashFee(detail.getExtractFee());
                 account.setCreateTime(new Date());
-                account.setGrade(detail.getSource());
                 partnerPartnerAccountMapper.insert(account);
             }else {
                 account1.setSumPremium(account1.getSumPremium().add(detail.getSumpremium()));

+ 2 - 3
src/main/java/com/ydtech/modules/partner/controller/NewAppPartnerController.java

@@ -48,7 +48,6 @@ public class NewAppPartnerController extends BaseController {
     @ApiOperation(value = "APP首页信息")
     public HttpResult<AppPartnerNumVo> getHomePage(@RequestBody AppHomeParams params){
         params.setUserId(getUserId());
-        //SpringUtil.getBean(UpdateRatioUtils.class).loginChange(getUserId());
         return partnerUserService.getHomePage(params);
     }
 
@@ -166,8 +165,8 @@ public class NewAppPartnerController extends BaseController {
      * @return
      */
     @GetMapping("/myPerformanceDetails")
-    public HttpResult myPerformance(@RequestParam String ordersNo) {
-        return partnerUserService.myPerformanceDetails(ordersNo);
+    public HttpResult myPerformance(@RequestParam("ordersNo") String ordersNo) {
+        return partnerUserService.myPerformanceDetails(ordersNo,getUserId());
     }
 
 

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

@@ -65,8 +65,6 @@ public interface PartnerUserMapper extends BaseMapper<PartnerUser> {
 
     Integer userCountIdsVo(@Param("ids") List<String> ids,@Param("params")  AppHomeParams params);
 
-    @Select(" SELECT DISTINCT user_id FROM partner_user WHERE referrer_id = #{userId} ")
-    List<String> selectByLevelUserId(String userId);
 
     @Select(" SELECT COUNT(1) FROM partner_user WHERE referrer_id = #{userId} AND grade = #{grade} ")
     Integer userCountLevel(String userId, int grade);
@@ -77,7 +75,7 @@ public interface PartnerUserMapper extends BaseMapper<PartnerUser> {
 
     JSONObject myPerformanceTotal(@Param("map")Map<String, String> map, @Param("list") Set<String> list);
 
-    List<JSONObject> queryDataList(@Param("map")Map<String, String> map, @Param("list") Set<String> list);
+    List<JSONObject> queryDataList(@Param("map")Map<String, String> map);
 
 
     Integer selectNumber(@Param("userId") String userId, @Param("number") String number,@Param("period") CommissionValidityPeriod period);
@@ -148,4 +146,6 @@ public interface PartnerUserMapper extends BaseMapper<PartnerUser> {
     Set<String> querySubordinateUserId(@Param("levelUserId") String levelUserId);
 
     Set<String> querySubordinate(String levelUserId);
+
+    Set<String> getLevelAllUserId(String userId);
 }

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

@@ -244,10 +244,10 @@ public class PartnerUserServiceImpl extends ServiceImpl<PartnerUserMapper, Partn
 
     @Override
     public HttpResult getHomePage(AppHomeParams params) {
-        Set<String> list = new HashSet<>();
-        getLevelUserId(params.getUserId(),list);
-        //List<String> strings = baseMapper.selectRelatedPerList(params.getUserId(), params);
-        list.add(params.getUserId());
+        if (StringUtils.isBlank(params.getUserId())){
+            return HttpResult.error("参数不能为空");
+        }
+        Set<String> list = baseMapper.getLevelAllUserId(params.getUserId());
         params.setRelatedPerList(list);
         params.setCountCycle("Day");
         HomeVo homeVo = new HomeVo();
@@ -280,25 +280,6 @@ public class PartnerUserServiceImpl extends ServiceImpl<PartnerUserMapper, Partn
         return HttpResult.ok(homeVo);
     }
 
-    @Override
-    public void getLevelUserId(String userId,Set<String> list){
-        List<String> level = baseMapper.selectByLevelUserId(userId);
-        if (CollectionUtil.isNotEmpty(level)){
-            level.removeIf(s -> s.equals(userId));
-        }
-        if (CollectionUtil.isEmpty(level)){
-            return;
-        }
-        if ( containsOnlyId(level, userId)){
-            return;
-        }
-        if (CollectionUtil.isNotEmpty(level)){
-            list.addAll(level);
-            for (String s : level) {
-                getLevelUserId(s,list);
-            }
-        }
-    }
 
     @Override
     public List<String> getUserGradeList(String userId) {
@@ -510,47 +491,101 @@ public class PartnerUserServiceImpl extends ServiceImpl<PartnerUserMapper, Partn
                 List<JSONObject> jsonList = new ArrayList<>();
                 object = buildUserHierarchyResult(partnerUser.getUserId(),partnerUser.getGrade(),paeramsMap,rule,jsonList);
             }
+            HashMap<String, Object> hashMap = new HashMap<>();
+            hashMap.put("commission",sumField(object,"commission"));
+            hashMap.put("numberOrders",object.size());
+            hashMap.put("totalPremium",sumField(object,"premium"));
             map.put("data",object);
+            map.put("total",hashMap);
             list.add(map);
         }
         return HttpResult.ok(list);
     }
 
+
+    public static BigDecimal sumField(List<JSONObject> jsonList, String fieldName) {
+        return jsonList.stream()
+                .map(jsonObj -> {
+                    try {
+                        Object value = jsonObj.get(fieldName);
+                        if (value instanceof BigDecimal) {
+                            return (BigDecimal) value;
+                        } else if (value instanceof Number) {
+                            return BigDecimal.valueOf(((Number) value).doubleValue());
+                        } else if (value instanceof String) {
+                            return new BigDecimal((String) value);
+                        }
+                        return null;
+                    } catch (Exception e) {
+                        return null;
+                    }
+                })
+                .filter(value -> value != null)
+                .reduce(BigDecimal.ZERO, BigDecimal::add);
+    }
+
+
     @Override
     public Object myPerformance(Map<String, String> map) {
-        Set<String> setList = new HashSet<>();
-        getLevelUserId(map.get("userId"),setList);
-        JSONObject totalMap = baseMapper.myPerformanceTotal(map,setList);
-        List<JSONObject> datalist = baseMapper.queryDataList(map,setList);
+        if (StringUtils.isBlank(map.get("grade"))){
+            return HttpResult.error("用户不能为空");
+        }
+        List<JSONObject> datalist = baseMapper.queryDataList(map);
         HashMap<String, Object> hashMap = new HashMap<>();
+        JSONObject totalMap = new JSONObject();
+        totalMap.put("numberOrders",datalist.size());
+        totalMap.put("totalPremium",sumField(datalist,"premium"));
+        totalMap.put("commission",sumField(datalist,"commission"));
         hashMap.put("data",datalist);
         hashMap.put("total",totalMap);
         return hashMap;
     }
 
     @Override
-    public HttpResult myPerformanceDetails(String ordersNo) {
+    public HttpResult myPerformanceDetails(String ordersNo,String userId) {
+
+
+        List<PartnerPremiumDetails> details = detailsMapper.selectList(new LambdaQueryWrapper<>(PartnerPremiumDetails.class).eq(PartnerPremiumDetails::getOrderno, ordersNo)
+                .eq(PartnerPremiumDetails::getUserId, userId).orderByAsc(PartnerPremiumDetails::getSource));
+
+        PartnerPremiumDetails partnerPremiumDetails = new PartnerPremiumDetails();
+        if (CollectionUtil.isNotEmpty( details)){
+            partnerPremiumDetails = details.get(0);
+        }
         JSONObject jsonObject = new JSONObject();
-        jsonObject.put("ordersNo",1);
-        jsonObject.put("carId",1);
+        jsonObject.put("ordersNo",partnerPremiumDetails.getOrderno());
+        jsonObject.put("carId",partnerPremiumDetails.getLicenseno());
         //收入类型
-        jsonObject.put("incomeType",1);
+        jsonObject.put("incomeType",partnerPremiumDetails.getIndustrySector());
         //代理人
-        jsonObject.put("agent",1);
+        jsonObject.put("agent",partnerPremiumDetails.getIssuerName());
         //所属团队
         jsonObject.put("belongingTeam",1);
         // 保费
-        jsonObject.put("premium",1);
+        jsonObject.put("premium",partnerPremiumDetails.getSumpremium());
+        BigDecimal reduce = details.stream().map(detail -> detail.getExtractFee()).reduce(BigDecimal.ZERO, BigDecimal::add);
         //佣金
-        jsonObject.put("commission",1);
+        jsonObject.put("commission",reduce);
         //出单时间
-        jsonObject.put("orderTime",1);
-        // 佣金比例
+        jsonObject.put("orderTime",partnerPremiumDetails.getCreateTime());
+        //佣金比例
         ArrayList<Object> list = new ArrayList<>();
-        JSONObject object = new JSONObject();
-        object.put("grade","我的创始人佣金");
-        object.put("commission","26738.48*1%=140");
-        list.add(object);
+        for (PartnerPremiumDetails detail : details) {
+            JSONObject object = new JSONObject();
+            if (detail.getSource() == 1) {
+                object.put("grade","我的创始人佣金");
+            }else if (detail.getSource() == 2) {
+                object.put("grade","我的管理人佣金");
+            }else if (detail.getSource() == 3) {
+                object.put("grade","我的合伙人佣金");
+            }else if (detail.getSource() == 4) {
+                object.put("grade","我的工作室佣金");
+            }else {
+
+            }
+            object.put("commission",detail.getSumpremium() + "*" + detail.getProportional() + "=" + detail.getExtractFee());
+            list.add(object);
+        }
         jsonObject.put("commissionRatio",list);
         return HttpResult.ok(jsonObject);
     }
@@ -958,11 +993,6 @@ public class PartnerUserServiceImpl extends ServiceImpl<PartnerUserMapper, Partn
         if (CollectionUtil.isEmpty(partnerUsers)){
             return HttpResult.error("用户无权益信息");
         }
-//        BigDecimal totalAmountSafe = partnerUsers.stream()
-//                .map(PartnerUser::getCommissionRate)
-//                .filter(Objects::nonNull)
-//                .reduce(BigDecimal.ZERO, BigDecimal::add);
-
         BigDecimal totalAmountSafe = BigDecimal.ZERO;
         for (PartnerUser partnerUser : partnerUsers) {
             BigDecimal bigDecimal = CalculateCommissionUtils.calculateCommission(String.valueOf(partnerUser.getGrade()),partnerUser.getUserId(),"");

+ 1 - 4
src/main/java/com/ydtech/modules/partner/service/PartnerUserService.java

@@ -54,7 +54,7 @@ public interface PartnerUserService extends IService<PartnerUser> {
 
     Object myPerformance(Map<String, String> map);
 
-    HttpResult myPerformanceDetails(String carId);
+    HttpResult myPerformanceDetails(String carId,String userId);
 
     HttpResult avatarUpdate(PartnerUser partnerUser);
 
@@ -72,9 +72,6 @@ public interface PartnerUserService extends IService<PartnerUser> {
 
     PartnerPartnerAccount newGetFee(String userId);
 
-
-    void  getLevelUserId(String userId, Set<String> list);
-
     List<String> getUserGradeList(String userId);
 
     HttpResult addUserIdentity(Map<String, Object> map);

+ 184 - 86
src/main/resources/mapper/modules/partner/PartnerUserMapper.xml

@@ -155,7 +155,7 @@ select grade,grade_name from  partner_rule
                 partner_user p
                 LEFT JOIN sys_user u ON u.id = p.user_id
                 WHERE
-                u.STATUS = 1 AND p.user_id != #{params.userId}
+                u.STATUS = 1
                 AND p.referrer_id = #{params.userId}
                 AND p.grade = 2),0
             ) v1,
@@ -164,18 +164,19 @@ select grade,grade_name from  partner_rule
                 COUNT(u1.id)
                 FROM
                 partner_user u1
-                LEFT JOIN sys_user_track u ON u.user_id = u1.user_id
+                LEFT JOIN sys_user u ON u.id = u1.user_id
                 WHERE
-                u.`status` = 1 AND
-                u1.user_id != #{params.userId} AND
+                u.`status` = 1 AND u1.grade = 3 AND
                 u1.referrer_id IN (
-                SELECT
-                user_id
-                FROM
-                partner_user u
-                WHERE
-                u.grade = 2
-                AND u.referrer_id = #{params.userId}
+                    SELECT
+                      p.user_id
+                    FROM
+                    partner_user p
+                    LEFT JOIN sys_user u ON u.id = p.user_id
+                    WHERE
+                    u.STATUS = 1
+                    AND p.referrer_id = #{params.userId}
+                    AND p.grade = 2
                 ) ),0
             ) v2,
             ifnull(
@@ -183,63 +184,92 @@ select grade,grade_name from  partner_rule
                 COUNT( p.id )
                 FROM
                 partner_user p
-                LEFT JOIN sys_user_track u ON u.user_id = p.user_id
+                LEFT JOIN sys_user u ON u.id = p.user_id
                 WHERE
-                u.STATUS = 1 AND p.user_id != #{params.userId}
+                u.STATUS = 1
                 AND p.referrer_id = #{params.userId}
                 AND p.grade = 2
-                AND to_days(u.approve_time) = to_days(now()) ),0
+                AND to_days(p.create_time) = to_days(now()) ),0
             ) v3,
             ifnull(
                 (SELECT
             COUNT(u1.id)
             FROM
             partner_user u1
-            LEFT JOIN sys_user_track u ON u.user_id = u1.user_id
+            LEFT JOIN sys_user u ON u.id = u1.user_id
             WHERE
-
-            u.`status` = 1 AND to_days(u.approve_time) = to_days(now()) AND
-            u1.user_id != #{params.userId} AND
+            u.`status` = 1 and  u1.grade = 3 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_track t ON t.user_id = u.user_id
-            WHERE
-            t.`status` = 1 AND
-            u.grade = 2
-            AND u.referrer_id = #{params.userId}
+                SELECT
+                u.user_id
+                FROM
+                partner_user u
+                LEFT JOIN sys_user t ON t.id = u.user_id
+                WHERE
+                t.`status` = 1 AND
+                u.grade = 2
+                AND u.referrer_id = #{params.userId}
             )),0
             ) v4
         </if>
         <if test="grade == 2">
             SELECT
             ifnull(
-                ( SELECT count(1) FROM partner_user WHERE grade = 3 and referrer_id = #{params.userId}),0
+                ( SELECT count(1) FROM partner_user left join sys_user on sys_user.id = partner_user.user_id WHERE partner_user.grade = 3 and partner_user.referrer_id = #{params.userId}),0
             ) v1,
 --  合伙人的工作室
             ifnull(
-                ( SELECT COUNT(1) FROM partner_user WHERE grade = 4 AND referrer_id in (
-            SELECT user_id FROM partner_user WHERE grade = 3 and referrer_id = #{params.userId})),0
+                (
+                SELECT count(1) FROM partner_user
+                LEFT JOIN sys_user ON sys_user.id = partner_user.user_id
+                WHERE partner_user.referrer_id IN (
+                SELECT
+                user_id
+                FROM
+                partner_user
+                LEFT JOIN sys_user ON sys_user.id = partner_user.user_id
+                WHERE sys_user.`status` = 1 AND
+                partner_user.referrer_id = #{params.userId}
+                AND grade = 3
+                ) AND grade = 4 AND sys_user.`status` = 1
+            ),0
             ) v2,
 --                     我今日新增的合伙人
             ifnull(
-        (SELECT count(1) FROM partner_user WHERE grade = 3 and referrer_id = #{params.userId} and  to_days(create_time) = to_days(now())),0
-            ) v3,
-            ifnull( (
-            SELECT COUNT(1) FROM partner_user WHERE  grade = 4 and  to_days(create_time) = to_days(now()) AND referrer_id in (
-            SELECT user_id FROM partner_user WHERE grade = 3 and referrer_id = #{params.userId})
+        (
+            SELECT
+            count( 1 )
+            FROM
+            partner_user p
+            LEFT JOIN sys_user u ON u.id = p.user_id
+            WHERE
+            p.grade = 3
+            AND p.referrer_id = #{params.userId}
+            AND to_days( p.create_time ) = to_days(
+            now())
             ),0
-
-            ) v4,
+            ) v3,
+            ifnull( (SELECT
+            count( 1 )
+            FROM
+            partner_user p
+            LEFT JOIN sys_user u ON u.id = p.user_id
+            WHERE
+            p.grade = 4 and  to_days(p.create_time) = to_days(now())
+            AND p.referrer_id IN (
+            SELECT
+            user_id
+            FROM
+            partner_user p
+            LEFT JOIN sys_user u ON u.id = p.user_id
+            WHERE
+            p.grade = 3
+            AND p.referrer_id = #{params.userId}
+            )),0) v4,
             ifnull(
                 (
                 SELECT SUM(db.sumpremium) FROM (
-                SELECT sumpremium FROM partner_premium_details WHERE  to_days(create_time) = to_days(now()) AND user_id in
-                <foreach collection="params.relatedPerList" item="item" index="index" separator="," open="(" close=")">
-                    #{item}
-                </foreach>
+                SELECT sumpremium FROM partner_premium_details WHERE  to_days(create_time) = to_days(now()) AND user_id = #{params.userId} and source = #{params.grade}
                 GROUP BY issuer_id,sumpremium ) db
                 ),0
             ) v5,
@@ -249,32 +279,55 @@ select grade,grade_name from  partner_rule
         </if>
         <if test="grade == 3">
             SELECT
-            ifnull((SELECT count(1) FROM partner_user WHERE grade = 4 and referrer_id = #{params.userId}),0) v1,
+            ifnull((SELECT count(1) FROM partner_user left join sys_user on sys_user.id = partner_user.user_id WHERE partner_user.grade = 4 and partner_user.referrer_id = #{params.userId}),0) v1,
             ifnull((
-                SELECT COUNT(1) FROM partner_user WHERE referrer_id IN (
-                SELECT user_id FROM partner_user WHERE grade = 4 and referrer_id = #{params.userId} )
+                    SELECT count(1) FROM partner_user
+                    LEFT JOIN sys_user ON sys_user.id = partner_user.user_id
+                    WHERE partner_user.referrer_id IN (
+                    SELECT
+                    user_id
+                    FROM
+                    partner_user
+                    LEFT JOIN sys_user ON sys_user.id = partner_user.user_id
+                    WHERE sys_user.`status` = 1 AND
+                    partner_user.referrer_id = #{params.userId}
+                    AND grade = 4
+                    ) AND grade = 5 AND sys_user.`status` = 1
             ),0) v2,
-            ifnull((
+            ifnull(  (
                 SELECT
-                COUNT( 1 )
+                count( 1 )
                 FROM
-                partner_user
+                partner_user p
+                LEFT JOIN sys_user u ON u.id = p.user_id
                 WHERE
-                grade = 4
-                AND to_days(create_time) = to_days(now()) and  referrer_id = #{params.userId}
+                p.grade = 4
+                AND p.referrer_id = #{params.userId}
+                AND to_days( p.create_time ) = to_days(
+                now())
                 ),0
             ) v3,
-            ifnull((
-                SELECT COUNT(1) FROM partner_user WHERE  to_days(create_time) = to_days(now()) and referrer_id IN (
-                SELECT user_id FROM partner_user WHERE grade = 4 and referrer_id = #{params.userId} )
-                ),0
+            ifnull( (SELECT
+                count( 1 )
+                FROM
+                partner_user p
+                LEFT JOIN sys_user u ON u.id = p.user_id
+                WHERE
+                p.grade = 5 and  to_days(p.create_time) = to_days(now())
+                AND p.referrer_id IN (
+                SELECT
+                user_id
+                FROM
+                partner_user p
+                LEFT JOIN sys_user u ON u.id = p.user_id
+                WHERE
+                p.grade = 4
+                AND p.referrer_id = #{params.userId}
+                )),0
             ) v4,
             ifnull((
                 SELECT SUM(db.sumpremium) FROM (
-                SELECT sumpremium FROM partner_premium_details WHERE  to_days(create_time) = to_days(now()) AND user_id in
-                <foreach collection="params.relatedPerList" item="item" index="index" separator="," open="(" close=")">
-                    #{item}
-                </foreach>
+                SELECT sumpremium FROM partner_premium_details WHERE  to_days(create_time) = to_days(now()) AND user_id = #{params.userId} and source = #{params.grade}
                 GROUP BY issuer_id,sumpremium ) db
                 ),0
             ) v5,
@@ -284,28 +337,53 @@ select grade,grade_name from  partner_rule
         </if>
         <if test="grade == 4">
             SELECT
-            ifnull( (SELECT COUNT( 1 ) FROM partner_user WHERE grade = 5 and referrer_id = #{params.userId}),0 ) v1,
-            ifnull( (SELECT COUNT( 1 ) FROM partner_user WHERE grade = 6 and referrer_id = #{params.userId}),0 ) v2,
+            ifnull((SELECT count(1) FROM partner_user left join sys_user on sys_user.id = partner_user.user_id WHERE partner_user.grade = 5 and partner_user.referrer_id = #{params.userId}),0) v1,
             ifnull(
-                (
-                SELECT
-                COUNT( 1 )
-                FROM
-                partner_user
-                WHERE
-                grade = 5
-                AND to_days(create_time) = to_days(now())
-                ),0
+            (
+            SELECT count(1) FROM partner_user
+            LEFT JOIN sys_user ON sys_user.id = partner_user.user_id
+            WHERE partner_user.referrer_id IN (
+            SELECT
+            user_id
+            FROM
+            partner_user
+            LEFT JOIN sys_user ON sys_user.id = partner_user.user_id
+            WHERE sys_user.`status` = 1 AND
+            partner_user.referrer_id = #{params.userId}
+            AND grade = 5
+            ) AND grade = 6 AND sys_user.`status` = 1
+            ),0
+            ) v2,
+            ifnull(  (
+            SELECT
+            count( 1 )
+            FROM
+            partner_user p
+            LEFT JOIN sys_user u ON u.id = p.user_id
+            WHERE
+            p.grade = 5
+            AND p.referrer_id = #{params.userId}
+            AND to_days( p.create_time ) = to_days(
+            now())
+            ),0
             ) v3,
-            ifnull((
-                SELECT
-                COUNT( 1 )
-                FROM
-                partner_user
-                WHERE
-                grade = 6
-                AND to_days(create_time) = to_days(now())
-                ),0
+            ifnull( (SELECT
+            count( 1 )
+            FROM
+            partner_user p
+            LEFT JOIN sys_user u ON u.id = p.user_id
+            WHERE
+            p.grade = 6 and  to_days(p.create_time) = to_days(now())
+            AND p.referrer_id IN (
+            SELECT
+            user_id
+            FROM
+            partner_user p
+            LEFT JOIN sys_user u ON u.id = p.user_id
+            WHERE
+            p.grade = 5
+            AND p.referrer_id = #{params.userId}
+            )),0
             ) v4,
             ifnull( (SELECT SUM(sumpremium) FROM partner_premium_details WHERE user_id = #{params.userId} AND to_days(create_time) = to_days(now())),0 ) v5,
             ifnull( (SELECT SUM(extract_fee) FROM partner_premium_details WHERE user_id = #{params.userId} AND to_days(create_time) = to_days(now())),0 ) v6
@@ -727,21 +805,16 @@ select grade,grade_name from  partner_rule
             issuer_name agent,
             sumpremium premium,
             extract_fee commission,
-            create_time issuanceTime
+            create_time issuanceTime,
+            source,
+            user_id userId
         FROM
             partner_premium_details
         WHERE
-            user_id = #{map.userId}
+            user_id = #{map.userId} and source = #{map.grade}
             <if test="map.startTime != '' and map.startTime != null">
                 and DATE(create_time) BETWEEN #{map.startTime} AND #{map.endTime}
             </if>
-        GROUP BY
-            orderno,
-            licenseno,
-            issuer_name,
-            sumpremium,
-            extract_fee,
-            create_time
     </select>
 
 
@@ -998,4 +1071,29 @@ select grade,grade_name from  partner_rule
     </select>
 
 
+
+
+
+    <select id="getLevelAllUserId" 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 = #{userId} AND grade = (SELECT min(grade) 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.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>
+
+
 </mapper>