Przeglądaj źródła

合伙人bug修改

xuqiang 1 rok temu
rodzic
commit
84785a7345

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

@@ -47,6 +47,7 @@ import com.ydtech.modules.message.constants.MessageTypeConstants;
 import com.ydtech.modules.message.entity.SystemMessage;
 import com.ydtech.modules.message.service.MessageSecretaryService;
 import com.ydtech.modules.message.service.SystemMessageService;
+import com.ydtech.modules.partner.UpdateRatioUtils;
 import com.ydtech.modules.partner.dao.PartnerRuleMapper;
 import com.ydtech.modules.partner.dao.PartnerUserGradeMapper;
 import com.ydtech.modules.partner.model.PartnerRule;
@@ -1304,7 +1305,9 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
         }
 
         // 保存新的合伙人数据
-        partnerUserService.insert(addNewPartnerRule(sysUser));
+        PartnerUser partnerUser = addNewPartnerRule(sysUser);
+        partnerUserService.insert(partnerUser);
+        UpdateRatioUtils.addDetailes(sysUser.getReferrerId(),sysUser.getGrade(), partnerUser);
         return HttpResult.ok("新增成功", sysUserMapper.selectById(userId));
     }
 

+ 42 - 5
src/main/java/com/ydtech/modules/order/service/impl/InsOrdersServiceImpl.java

@@ -72,9 +72,11 @@ import com.ydtech.modules.order.entity.vo.zj.ZjQuoteAccidentVo;
 import com.ydtech.modules.order.service.*;
 import com.ydtech.modules.partner.CalculateCommissionUtils;
 import com.ydtech.modules.partner.dao.PartnerPremiumDetailsMapper;
+import com.ydtech.modules.partner.model.PartnerKickbackChange;
 import com.ydtech.modules.partner.model.PartnerPartnerAccount;
 import com.ydtech.modules.partner.model.PartnerPremiumDetails;
 import com.ydtech.modules.partner.model.PartnerUser;
+import com.ydtech.modules.partner.service.PartnerKickbackChangeService;
 import com.ydtech.modules.partner.service.PartnerUserService;
 import com.ydtech.modules.protocol.entity.constants.PtlApiType;
 import com.ydtech.modules.protocol.entity.dto.PtlAgreementInsCompanyDto;
@@ -233,6 +235,8 @@ public class InsOrdersServiceImpl extends ServiceImpl<InsOrdersMapper, InsOrders
     @Autowired
     private SysSwitchConfigService sysSwitchConfigService;
 
+    @Autowired
+    private PartnerKickbackChangeService kickbackChangeService;
 
     public InsOrdersServiceImpl(OrderComponents orderComponents, SysUserService sysUserService,
                                 SysUserRoleService sysUserRoleService,
@@ -326,6 +330,7 @@ public class InsOrdersServiceImpl extends ServiceImpl<InsOrdersMapper, InsOrders
         String userId = insOrders.getUserid();
         List<PartnerUser> partnerUser = partnerUserService.selectByUserId(userId);
         List<PartnerPremiumDetails> list = new ArrayList<>();
+        List<PartnerKickbackChange> kickbackChange = new ArrayList<>();
         for (PartnerUser user : partnerUser) {
             PartnerPremiumDetails details = new PartnerPremiumDetails();
             details.setUserId(user.getUserId());
@@ -344,23 +349,55 @@ public class InsOrdersServiceImpl extends ServiceImpl<InsOrdersMapper, InsOrders
                     .divide(new BigDecimal("100"))).setScale(2, RoundingMode.DOWN));
             details.setStatus(0);
             details.setType(1);
+            details.setDeptId(user.getDeptId());
             details.setIndustrySector(0);
             details.setCreateTime(new Date());
             details.setLicenseno(insOrders.getLicenseno());
             details.setSource(user.getGrade());
             list.add( details);
-            //partnerPremiumDetailsMapper.insert(details);
-            saveFeeLevelInfo(user.getGrade(),user.getReferrerId(),insAreaCompany,userId,list);
+            saveFeeLevelInfo(user.getGrade(),user.getReferrerId(),insAreaCompany,userId,list,kickbackChange);
         }
         for (PartnerPremiumDetails details : list) {
             partnerPremiumDetailsMapper.insert(details);
         }
+        for (PartnerPremiumDetails details : list) {
+            BigDecimal latest = CalculateCommissionUtils.calculateCommission(String.valueOf(details.getSource()),details.getUserId(),details.getIssuerId());
+            BigDecimal mostRecent = kickbackChangeService.mostRecentRecord(details.getUserId());
+            getPartnerKickbackChange(latest, mostRecent, details, kickbackChange);
+        }
 
+        for (PartnerKickbackChange change : kickbackChange) {
+            kickbackChangeService.saveKickbackChange(change);
+        }
+    }
 
+
+    public void getPartnerKickbackChange(BigDecimal latest,BigDecimal mostRecent,PartnerPremiumDetails details,List<PartnerKickbackChange> list){
+        if (mostRecent == null){
+            PartnerKickbackChange change = getChange(null,latest, details);
+            list.add( change);
+        }else {
+            if (latest.compareTo(mostRecent) != 0){
+                PartnerKickbackChange change = getChange(latest, mostRecent, details);
+                list.add( change);
+            }
+        }
     }
 
+    private static PartnerKickbackChange getChange(BigDecimal bigDecimal, BigDecimal mostRecent, PartnerPremiumDetails details) {
+        PartnerKickbackChange change = new PartnerKickbackChange();
+        change.setUserId(details.getUserId());
+        change.setUserGrade(String.valueOf(details.getSource()));
+        change.setOriginalCommission(mostRecent);
+        change.setAfterChange(bigDecimal);
+        String reason = CalculateCommissionUtils.getReason(String.valueOf(details.getSource()), details.getUserId(), details.getIssuerId());
+        change.setChangeReason(reason);
+        change.setDeptId(details.getDeptId());
+        change.setChangeTime(new Date());
+        return change;
+    }
 
-    public void saveFeeLevelInfo(Integer grade,String referrerId,InsAreaCompany insAreaCompany,String userId,List<PartnerPremiumDetails> list) {
+    public void saveFeeLevelInfo(Integer grade,String referrerId,InsAreaCompany insAreaCompany,String userId,List<PartnerPremiumDetails> list,List<PartnerKickbackChange> kickbackChange) {
 
         InsOrders insOrders = getById(insAreaCompany.getOrderno());
         grade -- ;
@@ -388,13 +425,13 @@ public class InsOrdersServiceImpl extends ServiceImpl<InsOrdersMapper, InsOrders
                 .divide(new BigDecimal("100"))).setScale(2, RoundingMode.DOWN));
         details.setStatus(0);
         details.setType(1);
+        details.setDeptId(partnerUser.getDeptId());
         details.setIndustrySector(0);
         details.setCreateTime(new Date());
         details.setLicenseno(insOrders.getLicenseno());
         details.setSource(partnerUser.getGrade());
         list.add( details);
-        //partnerPremiumDetailsMapper.insert(details);
-        saveFeeLevelInfo(grade,partnerUser.getReferrerId(),insAreaCompany,userId,list);
+        saveFeeLevelInfo(grade,partnerUser.getReferrerId(),insAreaCompany,userId,list,kickbackChange);
 
     }
 

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

@@ -56,7 +56,21 @@ public class CalculateCommissionUtils {
 //
 //    }
 
-
+    public static String getReason(String grade, String userId,String issuerId) {
+        CommissionRulesVo rulesVo = commissionService.queryAll();
+        if (rulesVo == null) return null;
+        if (StringUtils.equals("1", grade)){
+            return null;
+        }
+        if (StringUtils.equals("2", grade) || StringUtils.equals("3", grade)){
+            return   obtainReason("gl" , grade,
+                    rulesVo.getAdministrator().getRulesRatioList(), userId, rulesVo.getAdministrator(),issuerId);
+        }
+        if (StringUtils.equals("3", grade) || StringUtils.equals("4", grade)){
+           return obtainReason(StringUtils.equals("3",grade) ? "levelGzs" :"gzs",grade, rulesVo.getPartner().getRulesRatioList(), userId, rulesVo.getPartner(),issuerId);
+        }
+        return null;
+    }
 
 
 
@@ -186,18 +200,98 @@ public class CalculateCommissionUtils {
         return BigDecimal.ZERO;
     }
 
+
+
+
+    public static String obtainReason(String type,String grade, List<PartnerRulesRatio> rulesRatioList, String userId, PartnerCommissionRules rules,String issuerId) {
+        CommissionValidityPeriod period = getCommissionValidityPeriod(rules, userId, grade);
+        List<PartnerRulesRatio> sortedList = rulesRatioList.stream()
+                .sorted(Comparator.comparing(PartnerRulesRatio::getKickback).reversed())
+                .collect(Collectors.toList());
+        BigDecimal sumPremium = BigDecimal.ZERO;
+        Set<String> userIdList = new HashSet<>(0);
+        if (StringUtils.equals("3",grade) || StringUtils.equals("2",grade)){
+            userIdList = getUserIdList(partnerUserMapper.getGzsList(issuerId));
+        }
+        if (StringUtils.equals("4",grade)){
+            userIdList = getUserIdList(partnerUserMapper.getTdList(issuerId));
+        }
+        if (CollectionUtil.isNotEmpty(userIdList)){ QueryWrapper<PartnerPremiumDetails> queryWrapper = new QueryWrapper<>();
+            queryWrapper.in("user_id", userIdList);
+            if (StringUtils.isNotEmpty(period.getStartDate()) && StringUtils.isNotEmpty(period.getEndDate())) {
+                queryWrapper.between("create_time", period.getStartDate(), period.getEndDate());
+            }
+            BigDecimal totalSumPremium = partnerPremiumDetailsMapper.selectTotalSumPremium(queryWrapper);
+            sumPremium = Optional.ofNullable(totalSumPremium).orElse(BigDecimal.ZERO);
+        }
+        Integer number;
+        switch (type) {
+            case "gl":
+                String id = partnerUserMapper.queryManager(issuerId);
+                number = partnerUserMapper.selectNumber(id, "4", period);
+                break;
+            case "levelGzs":
+                number = partnerUserMapper.selectNumber3(issuerId, "5", period);
+                break;
+            case "gzs":
+                number = partnerUserMapper.selectByUserIdNumber(userId, "5", period);
+                break;
+            default:
+                return "";
+        }
+        BigDecimal numberBD = BigDecimal.valueOf(number);
+        for (PartnerRulesRatio ratio : sortedList) {
+            int allSatisfied = ratio.getAllSatisfied();
+            List<PartnerRatio> ratioList = ratio.getPartnerRatioList();
+            if (CollectionUtil.isEmpty(ratioList)) continue;
+            BigDecimal min = ratioList.get(0).getMin();
+            BigDecimal min1 = ratioList.get(1).getMin();
+            boolean ry = ratioList.get(0).isRy();
+            boolean bf = ratioList.get(1).isBf();
+            if (ry && bf) {
+                if (allSatisfied == 1) {
+                    if (numberBD.compareTo(min) >= 0 && sumPremium.compareTo(min1) >= 0) {
+                        return "邀请人达" + min + "人,累计保费达" + min1 + "元";
+                    }
+                } else {
+                    if (numberBD.compareTo(min) >= 0) {
+                        return "邀请人达" + min + "人";
+                    }else if(sumPremium.compareTo(min1) >= 0){
+                        return "累计保费达" + min1 + "元";
+                    }
+
+                }
+            }else if (ry && !bf){
+                if (allSatisfied != 1) {
+                    if (numberBD.compareTo(min) >= 0) {
+                        return "邀请人达" + min + "人";
+                    }
+                }
+            }else if (!ry && bf){
+                if (allSatisfied != 1) {
+                    if (sumPremium.compareTo(min1) >= 0) {
+                        return "累计保费达" + min1 + "元";
+                    }
+                }
+            }
+        }
+        return null;
+    }
+
+
+
     public static CommissionValidityPeriod getCommissionValidityPeriod(PartnerCommissionRules rules, String userId, String grade) {
         CommissionValidityPeriod period = new CommissionValidityPeriod();
         SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
-        Date assessmentTime = partnerUserMapper.selectAssessmentTime(userId, grade);
-        if (assessmentTime == null) {
-            partnerUserMapper.updateAssessmentTime(userId);
-            assessmentTime = partnerUserMapper.selectAssessmentTime(userId, grade);
-            if (assessmentTime == null) return period;
-        }
         if (StringUtils.equals("1", rules.getValidityPeriod())) {
             return period;
         } else if (StringUtils.equals("2", rules.getValidityPeriod())) {
+            Date assessmentTime = partnerUserMapper.selectAssessmentTime(userId, grade);
+            if (assessmentTime == null) {
+                partnerUserMapper.updateAssessmentTime(userId);
+                assessmentTime = partnerUserMapper.selectAssessmentTime(userId, grade);
+                if (assessmentTime == null) return period;
+            }
             if (isAfterNDays(assessmentTime, rules.getFixedDays())) {
                 updateAssessmentTimeRecursively(assessmentTime,rules.getFixedDays(),userId );
                 assessmentTime = partnerUserMapper.selectAssessmentTime(userId, grade);

+ 24 - 0
src/main/java/com/ydtech/modules/partner/dao/PartnerKickbackChangeMapper.java

@@ -1,10 +1,34 @@
 package com.ydtech.modules.partner.dao;
 
 
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.ydtech.modules.partner.model.PartnerKickbackChange;
 import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+import org.apache.ibatis.annotations.Select;
+
+import java.math.BigDecimal;
 
 @Mapper
 public interface PartnerKickbackChangeMapper extends BaseMapper<PartnerKickbackChange> {
+
+    @Select("SELECT original_commission FROM partner_kickback_change WHERE user_id = #{userId} ORDER BY change_time DESC LIMIT 1")
+    BigDecimal mostRecentRecord(String userId);
+
+    @Select("SELECT " +
+            " c.user_id, " +
+            " u.`name`, " +
+            " u.mobile, " +
+            " c.user_grade, " +
+            " c.original_commission, " +
+            " c.after_change, " +
+            " c.change_reason,c.change_time, " +
+            " d.`name` deptName  " +
+            "FROM " +
+            " partner_kickback_change c " +
+            " LEFT JOIN sys_dept d ON d.id = c.dept_id " +
+            " LEFT JOIN sys_user u ON u.id =  c.user_id ")
+    Page<PartnerKickbackChange> queryPage(Page page,@Param("ew") QueryWrapper<PartnerKickbackChange> wrapper);
 }

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

@@ -41,4 +41,7 @@ public interface PartnerPremiumDetailsMapper extends BaseMapper<PartnerPremiumDe
             " partner_premium_details d " +
             " LEFT JOIN sys_user u ON u.id = d.user_id  ${ew.customSqlSegment}")
     Page<PartnerPremiumDetails> queryPage(@Param("page") Page page, @Param("ew") Wrapper<PartnerPremiumDetails> queryWrapper);
+
+    @Select("SELECT SUM(extract_fee) FROM partner_premium_details ${ew.customSqlSegment} ")
+    BigDecimal selectTotalCommission(@Param("ew")QueryWrapper<PartnerPremiumDetails> wrapper);
 }

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

@@ -107,12 +107,12 @@ public interface PartnerUserMapper extends BaseMapper<PartnerUser> {
     Date selectFixedCycleTime(@Param("userId") String userId, @Param("grade")String grade);
 
     @Update("UPDATE partner_user SET assessment_time = ( " +
-            " SELECT approve_time FROM sys_user_track WHERE user_id = #{userId} " +
+            " SELECT DATE(approve_time) FROM sys_user_track WHERE `status` = 1 AND user_id = #{userId} LIMIT 1 " +
             " ) WHERE  user_id = #{userId} ")
     void updateAssessmentTime(String userId);
 
     @Update("UPDATE partner_user SET fixed_cycle_time = ( " +
-            " SELECT approve_time FROM sys_user_track WHERE user_id = #{userId} " +
+            " SELECT DATE(approve_time) FROM sys_user_track WHERE `status` = 1 AND user_id = #{userId} LIMIT 1 " +
             " ) WHERE  user_id = #{userId} ")
     void updateFixedCycleTime(String userId);
 
@@ -132,4 +132,9 @@ public interface PartnerUserMapper extends BaseMapper<PartnerUser> {
 
     @Select("SELECT * FROM partner_user WHERE user_id = #{issuerId} ")
     PartnerUser selectByIssuerId(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);
+
 }

+ 3 - 0
src/main/java/com/ydtech/modules/partner/model/PartnerPremiumDetails.java

@@ -124,4 +124,7 @@ public class PartnerPremiumDetails {
     @TableField(exist = false)
     private String mobile;
 
+    @TableField(exist = false)
+    private String deptId;
+
 }

+ 25 - 9
src/main/java/com/ydtech/modules/partner/service/Impl/PartnerKickbackChangeImpl.java

@@ -2,6 +2,7 @@ package com.ydtech.modules.partner.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.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.ydtech.core.page.HttpResult;
@@ -12,17 +13,26 @@ import com.ydtech.modules.partner.service.PartnerKickbackChangeService;
 import org.apache.commons.lang3.StringUtils;
 import org.springframework.stereotype.Service;
 
+import java.math.BigDecimal;
 import java.util.List;
 
 @Service
 public class PartnerKickbackChangeImpl extends ServiceImpl<PartnerKickbackChangeMapper, PartnerKickbackChange> implements PartnerKickbackChangeService {
     @Override
     public Page queryPage(PartnerKickbackChangeParam changeParam) {
-        LambdaQueryWrapper<PartnerKickbackChange> wrapper = new LambdaQueryWrapper<>();
-        wrapper.like(StringUtils.isNotBlank(changeParam.getName()),PartnerKickbackChange::getName,changeParam.getName());
-        wrapper.like(StringUtils.isNotBlank(changeParam.getMobile()),PartnerKickbackChange::getMobile,changeParam.getMobile());
-        wrapper.like(StringUtils.isNotBlank(changeParam.getUserId()),PartnerKickbackChange::getUserId,changeParam.getUserId());
-        wrapper.eq(StringUtils.isNotBlank(changeParam.getUserGrade()),PartnerKickbackChange::getUserGrade,changeParam.getUserGrade());
+        QueryWrapper<PartnerKickbackChange> wrapper = new QueryWrapper<>();
+        if (StringUtils.isNotBlank(changeParam.getName())){
+            wrapper.like("u.name",changeParam.getName());
+        }
+        if (StringUtils.isNotBlank(changeParam.getMobile())) {
+            wrapper.like("u.mobile",changeParam.getMobile());
+        }
+        if (StringUtils.isNotBlank(changeParam.getUserId())){
+            wrapper.like("c.user_id",changeParam.getUserId());
+        }
+        if (StringUtils.isNotBlank(changeParam.getUserGrade())){
+            wrapper.eq("c.user_grade",changeParam.getUserGrade());
+        }
         List<String> changeTimes = changeParam.getChangeTimes();
         if (CollectionUtil.isNotEmpty(changeTimes)){
             String startTime = changeTimes.get(0);
@@ -31,18 +41,24 @@ public class PartnerKickbackChangeImpl extends ServiceImpl<PartnerKickbackChange
                 endTime = changeTimes.get(1);
             }
             if (StringUtils.isNotBlank(startTime) && StringUtils.isNotBlank(endTime)) {
-                wrapper.between(PartnerKickbackChange::getChangeTime, startTime, endTime);
+                wrapper.between("c.change_time", startTime, endTime);
             } else if (startTime != null) {
-                wrapper.ge(PartnerKickbackChange::getChangeTime, startTime);
+                wrapper.ge("c.change_time", startTime);
             } else if (endTime != null) {
-                wrapper.le(PartnerKickbackChange::getChangeTime, endTime);
+                wrapper.le("c.change_time", endTime);
             }
         }
-        return baseMapper.selectPage(changeParam.buildPageRequest(changeParam),wrapper);
+        Page objectPage = changeParam.buildPageRequest(changeParam);
+        return baseMapper.queryPage(objectPage,wrapper);
     }
 
     @Override
     public HttpResult saveKickbackChange(PartnerKickbackChange entity) {
         return baseMapper.insert(entity) > 0 ? HttpResult.ok("保存成功") : HttpResult.error("保存失败");
     }
+
+    @Override
+    public BigDecimal mostRecentRecord(String userId) {
+        return baseMapper.mostRecentRecord(userId);
+    }
 }

+ 15 - 3
src/main/java/com/ydtech/modules/partner/service/Impl/PartnerUserServiceImpl.java

@@ -9,6 +9,7 @@ import cn.hutool.core.bean.BeanUtil;
 import cn.hutool.core.collection.CollectionUtil;
 import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
@@ -24,6 +25,7 @@ import com.ydtech.modules.order.entity.api.zhongmei.constants.TimeConstants;
 import com.ydtech.modules.order.entity.po.InsUploadFiles;
 import com.ydtech.modules.partner.CalculateCommissionUtils;
 import com.ydtech.modules.partner.dao.PartnerPartnerAccountMapper;
+import com.ydtech.modules.partner.dao.PartnerPremiumDetailsMapper;
 import com.ydtech.modules.partner.dao.PartnerUserMapper;
 import com.ydtech.modules.partner.model.*;
 import com.ydtech.modules.partner.model.param.AppHomeParams;
@@ -62,6 +64,9 @@ public class PartnerUserServiceImpl extends ServiceImpl<PartnerUserMapper, Partn
     @Autowired
     private PartnerPartnerAccountMapper partnerPartnerAccountMapper;
 
+    @Autowired
+    private PartnerPremiumDetailsMapper detailsMapper;
+
 
     @Override
     public int insert(PartnerUser partnerUser) {
@@ -587,15 +592,22 @@ public class PartnerUserServiceImpl extends ServiceImpl<PartnerUserMapper, Partn
         }
         List<PartnerUser> partnerUsers = baseMapper.selectList(queryWrapper);
         for (PartnerUser partnerUser : partnerUsers) {
+            Set<String> set = new HashSet<>();
+            set.add(partnerUser.getUserId());
+            getLevelUserId(partnerUser.getUserId(), set);
+            QueryWrapper<PartnerPremiumDetails> wrapper = new QueryWrapper<>();
+            wrapper.in("user_id",set);
             JSONObject jsonObject = new JSONObject();
             jsonObject.put("id",partnerUser.getId());
             jsonObject.put("userName", partnerUser.getName());
             jsonObject.put("grade", partnerUser.getGrade());
             jsonObject.put("createTime", partnerUser.getCreateTime());
-            jsonObject.put("gradeName", rule.getOrDefault(Integer.valueOf(partnerUser.getGrade()), ""));
+            jsonObject.put("gradeName", rule.getOrDefault(Integer.valueOf(partnerUser.getGrade() + 1), ""));
             jsonObject.put("number", countByUserIdLevel(partnerUser.getUserId()));
-            jsonObject.put("premium", BigDecimal.ZERO);
-            jsonObject.put("commission",BigDecimal.ZERO);
+            BigDecimal premium = detailsMapper.selectTotalSumPremium(wrapper);
+            jsonObject.put("premium", premium == null ? BigDecimal.ZERO : premium);
+            BigDecimal commission = detailsMapper.selectTotalCommission(wrapper);
+            jsonObject.put("commission",commission == null ? BigDecimal.ZERO : commission);
             list.add(jsonObject);
             //getLevelUser( partnerUser.getUserId(), list, rule);
         }

+ 3 - 0
src/main/java/com/ydtech/modules/partner/service/PartnerKickbackChangeService.java

@@ -5,6 +5,8 @@ import com.ydtech.core.page.HttpResult;
 import com.ydtech.modules.partner.model.PartnerKickbackChange;
 import com.ydtech.modules.partner.model.param.PartnerKickbackChangeParam;
 
+import java.math.BigDecimal;
+
 public interface PartnerKickbackChangeService {
 
 
@@ -15,4 +17,5 @@ public interface PartnerKickbackChangeService {
     HttpResult saveKickbackChange(PartnerKickbackChange kickbackChange);
 
 
+    BigDecimal mostRecentRecord(String userId);
 }

+ 20 - 0
src/main/resources/mapper/modules/partner/PartnerUserMapper.xml

@@ -845,6 +845,22 @@ select grade,grade_name from  partner_rule
         )
     </select>
 
+
+
+    <select id="selectNumber4" resultType="java.lang.Integer">
+        SELECT
+        COUNT( p.user_id )
+        FROM
+        partner_user p
+        LEFT JOIN sys_user_track t ON t.user_id = p.user_id
+        WHERE
+        t.`status` = 1 AND grade = #{number}
+        <if test="period.startDate != null and period.endDate != null">
+            AND t.approve_time BETWEEN #{period.startDate} AND #{period.endDate}
+        </if>
+        AND p.referrer_id = #{userId}
+    </select>
+
     <select id="selectByUserIdNumber" resultType="java.lang.Integer">
         SELECT
         COUNT( p.user_id )
@@ -932,4 +948,8 @@ select grade,grade_name from  partner_rule
         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>
+
 </mapper>