Sfoglia il codice sorgente

合伙人bug修改

xuqiang 1 anno fa
parent
commit
53cb441a9a

+ 20 - 6
src/main/java/com/ydtech/modules/partner/CalculateCommissionUtils.java

@@ -52,10 +52,15 @@ public class CalculateCommissionUtils {
     public static BigDecimal calculateCommission(String grade, String userId) {
         CommissionRulesVo rulesVo = commissionService.queryAll();
         if (rulesVo == null) return BigDecimal.ZERO;
-        BigDecimal gl = ladderCommission(StringUtils.equals("3", grade) ? "2" : grade,
-                rulesVo.getAdministrator().getRulesRatioList(), userId, rulesVo.getAdministrator());
-        BigDecimal hh = ladderCommission(grade, rulesVo.getPartner().getRulesRatioList(), userId, rulesVo.getPartner());
-       // BigDecimal hh = ladderCommission(grade, rulesVo.getPartner().getRulesRatioList(), userId, rulesVo.getPartner());
+        BigDecimal gl = BigDecimal.ZERO;
+        if (StringUtils.equals("2", grade) || StringUtils.equals("3", grade)){
+            gl = ladderCommission(StringUtils.equals("3", grade) ? "2" : grade,
+                    rulesVo.getAdministrator().getRulesRatioList(), userId, rulesVo.getAdministrator());
+        }
+        BigDecimal hh = BigDecimal.ZERO;
+        if (StringUtils.equals("3", grade) || StringUtils.equals("4", grade)){
+            hh = ladderCommission(grade, rulesVo.getPartner().getRulesRatioList(), userId, rulesVo.getPartner());
+        }
         if (StringUtils.equals("1", grade)) {
             return new BigDecimal(rulesVo.getOriginator());
         }
@@ -72,9 +77,9 @@ public class CalculateCommissionUtils {
             if (isZero(gl) && isZero(hh)) {
                 return new BigDecimal(partner.getDefaultRatio())
                         .add(subtractRatios(rulesVo.getAdministrator().getSharedRatio(), rulesVo.getAdministrator().getDefaultRatio()));
-            } else if (isZero(hh)) {
+            } else if (isZero(hh) && !isZero(gl)) {
                 return gl.add(new BigDecimal(partner.getDefaultRatio()));
-            } else if (isZero(gl)) {
+            } else if (isZero(gl) && !isZero(hh)) {
                 return new BigDecimal(partner.getSharedRatio()).subtract(hh)
                         .add(subtractRatios(rulesVo.getAdministrator().getSharedRatio(), rulesVo.getAdministrator().getDefaultRatio()));
             }else{
@@ -174,6 +179,15 @@ public class CalculateCommissionUtils {
             period.setStartDate(dateFormat.format(assessmentTime));
             period.setEndDate(dateFormat.format(addDays(assessmentTime, rules.getFixedDays())));
         } else if (StringUtils.equals("3", rules.getValidityPeriod())) {
+
+            Date fixedCycle = partnerUserMapper.selectFixedCycleTime(userId, grade);
+            if (fixedCycle == null) {
+                partnerUserMapper.updateFixedCycleTime(userId);
+                fixedCycle = partnerUserMapper.selectFixedCycleTime(userId, grade);
+                if (fixedCycle == null){
+                    return period;
+                }
+            }
             period.setStartDate(rules.getStartDate());
             period.setEndDate(rules.getEndDate());
         }

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

@@ -100,11 +100,20 @@ public interface PartnerUserMapper extends BaseMapper<PartnerUser> {
     @Select("SELECT assessment_time FROM partner_user WHERE user_id = #{userId} AND grade = #{grade}")
     Date selectAssessmentTime(@Param("userId") String userId, @Param("grade")String grade);
 
+
+    @Select("SELECT fixed_cycle_time FROM partner_user WHERE user_id = #{userId} AND grade = #{grade}")
+    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} " +
             " ) 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} " +
+            " ) WHERE  user_id = #{userId} ")
+    void updateFixedCycleTime(String userId);
+
     @Update("UPDATE partner_user SET assessment_time = #{date} WHERE  user_id = #{userId} ")
     void updateAssessmentTimeByDate(@Param("userId") String userId,@Param("date") Date date);
 

+ 14 - 0
src/main/java/com/ydtech/modules/partner/service/Impl/PartnerCommissionServiceImpl.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.service.impl.ServiceImpl;
 import com.ydtech.exception.SystemException;
 import com.ydtech.modules.partner.dao.PartnerCommissionMapper;
@@ -12,6 +13,7 @@ import com.ydtech.modules.partner.model.PartnerRatio;
 import com.ydtech.modules.partner.model.vo.CommissionRulesVo;
 import com.ydtech.modules.partner.model.vo.PartnerRulesRatio;
 import com.ydtech.modules.partner.service.PartnerCommissionService;
+import lombok.extern.slf4j.Slf4j;
 import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
@@ -20,6 +22,8 @@ import org.springframework.transaction.annotation.Transactional;
 import java.util.*;
 import java.util.stream.Collectors;
 
+
+@Slf4j
 @Service
 public class PartnerCommissionServiceImpl extends ServiceImpl<PartnerCommissionMapper, PartnerCommissionRules> implements PartnerCommissionService {
 
@@ -58,6 +62,16 @@ public class PartnerCommissionServiceImpl extends ServiceImpl<PartnerCommissionM
             baseMapper.insert(commissionRules);
         }
         List<PartnerRulesRatio> rulesRatioList = commissionRules.getRulesRatioList();
+        if (CollectionUtil.isNotEmpty(rulesRatioList)){
+            List<String> collect = rulesRatioList.stream().map(PartnerRulesRatio::getId).collect(Collectors.toList());
+            if (CollectionUtil.isNotEmpty(collect)){
+                QueryWrapper<PartnerRulesRatio> queryWrapper = new QueryWrapper<>();
+                queryWrapper.notIn("id", collect);
+                queryWrapper.eq("proportion_type", proportionType);
+                int delete = rulesRatioMapper.delete(queryWrapper);
+                log.info("删除数量:{}", delete,"proportionType====", proportionType);
+            }
+        }
         if (CollectionUtil.isNotEmpty(rulesRatioList)){
             for (PartnerRulesRatio rulesRatio : rulesRatioList) {
                 rulesRatio.setProportionType(proportionType);