|
@@ -7,6 +7,7 @@ import com.ydtech.modules.partner.dao.PartnerUserMapper;
|
|
|
import com.ydtech.modules.partner.model.PartnerCommissionRules;
|
|
import com.ydtech.modules.partner.model.PartnerCommissionRules;
|
|
|
import com.ydtech.modules.partner.model.PartnerPremiumDetails;
|
|
import com.ydtech.modules.partner.model.PartnerPremiumDetails;
|
|
|
import com.ydtech.modules.partner.model.PartnerRatio;
|
|
import com.ydtech.modules.partner.model.PartnerRatio;
|
|
|
|
|
+import com.ydtech.modules.partner.model.PartnerUser;
|
|
|
import com.ydtech.modules.partner.model.param.CommissionValidityPeriod;
|
|
import com.ydtech.modules.partner.model.param.CommissionValidityPeriod;
|
|
|
import com.ydtech.modules.partner.model.vo.CommissionRulesVo;
|
|
import com.ydtech.modules.partner.model.vo.CommissionRulesVo;
|
|
|
import com.ydtech.modules.partner.model.vo.PartnerRulesRatio;
|
|
import com.ydtech.modules.partner.model.vo.PartnerRulesRatio;
|
|
@@ -49,17 +50,30 @@ public class CalculateCommissionUtils {
|
|
|
public void init() {
|
|
public void init() {
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
- public static BigDecimal calculateCommission(String grade, String userId) {
|
|
|
|
|
|
|
+
|
|
|
|
|
+// public Map<String,BigDecimal> calculateUserProportion(String grade,String userId){
|
|
|
|
|
+// HashMap<Object, Object> map = new HashMap<>();
|
|
|
|
|
+//
|
|
|
|
|
+// }
|
|
|
|
|
+
|
|
|
|
|
+
|
|
|
|
|
+
|
|
|
|
|
+
|
|
|
|
|
+
|
|
|
|
|
+ public static BigDecimal calculateCommission(String grade, String userId,String issuerId) {
|
|
|
CommissionRulesVo rulesVo = commissionService.queryAll();
|
|
CommissionRulesVo rulesVo = commissionService.queryAll();
|
|
|
if (rulesVo == null) return BigDecimal.ZERO;
|
|
if (rulesVo == null) return BigDecimal.ZERO;
|
|
|
BigDecimal gl = BigDecimal.ZERO;
|
|
BigDecimal gl = BigDecimal.ZERO;
|
|
|
|
|
+ if (StringUtils.equals("1", grade)){
|
|
|
|
|
+ gl = BigDecimal.ZERO;
|
|
|
|
|
+ }
|
|
|
if (StringUtils.equals("2", grade) || StringUtils.equals("3", grade)){
|
|
if (StringUtils.equals("2", grade) || StringUtils.equals("3", grade)){
|
|
|
- gl = ladderCommission(StringUtils.equals("3", grade) ? "2" : grade,
|
|
|
|
|
- rulesVo.getAdministrator().getRulesRatioList(), userId, rulesVo.getAdministrator());
|
|
|
|
|
|
|
+ gl = ladderCommission("gl" , grade,
|
|
|
|
|
+ rulesVo.getAdministrator().getRulesRatioList(), userId, rulesVo.getAdministrator(),issuerId);
|
|
|
}
|
|
}
|
|
|
BigDecimal hh = BigDecimal.ZERO;
|
|
BigDecimal hh = BigDecimal.ZERO;
|
|
|
if (StringUtils.equals("3", grade) || StringUtils.equals("4", grade)){
|
|
if (StringUtils.equals("3", grade) || StringUtils.equals("4", grade)){
|
|
|
- hh = ladderCommission(grade, rulesVo.getPartner().getRulesRatioList(), userId, rulesVo.getPartner());
|
|
|
|
|
|
|
+ hh = ladderCommission(StringUtils.equals("3",grade) ? "levelGzs" :"gzs",grade, rulesVo.getPartner().getRulesRatioList(), userId, rulesVo.getPartner(),issuerId);
|
|
|
}
|
|
}
|
|
|
if (StringUtils.equals("1", grade)) {
|
|
if (StringUtils.equals("1", grade)) {
|
|
|
return new BigDecimal(rulesVo.getOriginator());
|
|
return new BigDecimal(rulesVo.getOriginator());
|
|
@@ -100,40 +114,37 @@ public class CalculateCommissionUtils {
|
|
|
return new BigDecimal(a).subtract(new BigDecimal(b));
|
|
return new BigDecimal(a).subtract(new BigDecimal(b));
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
- public static BigDecimal ladderCommission(String grade, List<PartnerRulesRatio> rulesRatioList, String userId, PartnerCommissionRules rules) {
|
|
|
|
|
- if (CollectionUtil.isEmpty(rulesRatioList) || StringUtils.equals("1", grade)) {
|
|
|
|
|
- return BigDecimal.ZERO;
|
|
|
|
|
- }
|
|
|
|
|
|
|
+ public static BigDecimal ladderCommission(String type,String grade, List<PartnerRulesRatio> rulesRatioList, String userId, PartnerCommissionRules rules,String issuerId) {
|
|
|
CommissionValidityPeriod period = getCommissionValidityPeriod(rules, userId, grade);
|
|
CommissionValidityPeriod period = getCommissionValidityPeriod(rules, userId, grade);
|
|
|
List<PartnerRulesRatio> sortedList = rulesRatioList.stream()
|
|
List<PartnerRulesRatio> sortedList = rulesRatioList.stream()
|
|
|
.sorted(Comparator.comparing(PartnerRulesRatio::getKickback).reversed())
|
|
.sorted(Comparator.comparing(PartnerRulesRatio::getKickback).reversed())
|
|
|
.collect(Collectors.toList());
|
|
.collect(Collectors.toList());
|
|
|
- Set<String> userIdList = getUserIdList(userId);
|
|
|
|
|
BigDecimal sumPremium = BigDecimal.ZERO;
|
|
BigDecimal sumPremium = BigDecimal.ZERO;
|
|
|
- if (CollectionUtil.isNotEmpty(userIdList)) {
|
|
|
|
|
- try {
|
|
|
|
|
- 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);
|
|
|
|
|
- } catch (Exception e) {
|
|
|
|
|
- log.error("查询保费失败", e);
|
|
|
|
|
|
|
+ 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());
|
|
|
}
|
|
}
|
|
|
- } else {
|
|
|
|
|
- return BigDecimal.ZERO;
|
|
|
|
|
|
|
+ BigDecimal totalSumPremium = partnerPremiumDetailsMapper.selectTotalSumPremium(queryWrapper);
|
|
|
|
|
+ sumPremium = Optional.ofNullable(totalSumPremium).orElse(BigDecimal.ZERO);
|
|
|
}
|
|
}
|
|
|
Integer number;
|
|
Integer number;
|
|
|
- switch (grade) {
|
|
|
|
|
- case "2":
|
|
|
|
|
- number = partnerUserMapper.selectNumber(userId, "4", period);
|
|
|
|
|
|
|
+ switch (type) {
|
|
|
|
|
+ case "gl":
|
|
|
|
|
+ String id = partnerUserMapper.queryManager(issuerId);
|
|
|
|
|
+ number = partnerUserMapper.selectNumber(id, "4", period);
|
|
|
break;
|
|
break;
|
|
|
- case "3":
|
|
|
|
|
- number = partnerUserMapper.selectNumber(userId, "5", period);
|
|
|
|
|
|
|
+ case "levelGzs":
|
|
|
|
|
+ number = partnerUserMapper.selectNumber3(issuerId, "5", period);
|
|
|
break;
|
|
break;
|
|
|
- case "4":
|
|
|
|
|
|
|
+ case "gzs":
|
|
|
number = partnerUserMapper.selectByUserIdNumber(userId, "5", period);
|
|
number = partnerUserMapper.selectByUserIdNumber(userId, "5", period);
|
|
|
break;
|
|
break;
|
|
|
default:
|
|
default:
|
|
@@ -144,16 +155,31 @@ public class CalculateCommissionUtils {
|
|
|
int allSatisfied = ratio.getAllSatisfied();
|
|
int allSatisfied = ratio.getAllSatisfied();
|
|
|
List<PartnerRatio> ratioList = ratio.getPartnerRatioList();
|
|
List<PartnerRatio> ratioList = ratio.getPartnerRatioList();
|
|
|
if (CollectionUtil.isEmpty(ratioList)) continue;
|
|
if (CollectionUtil.isEmpty(ratioList)) continue;
|
|
|
-
|
|
|
|
|
BigDecimal min = ratioList.get(0).getMin();
|
|
BigDecimal min = ratioList.get(0).getMin();
|
|
|
BigDecimal min1 = ratioList.get(1).getMin();
|
|
BigDecimal min1 = ratioList.get(1).getMin();
|
|
|
- if (allSatisfied == 1) {
|
|
|
|
|
- if (numberBD.compareTo(min) >= 0 && sumPremium.compareTo(min1) >= 0) {
|
|
|
|
|
- return ratio.getKickback();
|
|
|
|
|
|
|
+ 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 ratio.getKickback();
|
|
|
|
|
+ }
|
|
|
|
|
+ } else {
|
|
|
|
|
+ if (numberBD.compareTo(min) >= 0 || sumPremium.compareTo(min1) >= 0) {
|
|
|
|
|
+ return ratio.getKickback();
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ }else if (ry && !bf){
|
|
|
|
|
+ if (allSatisfied != 1) {
|
|
|
|
|
+ if (numberBD.compareTo(min) >= 0) {
|
|
|
|
|
+ return ratio.getKickback();
|
|
|
|
|
+ }
|
|
|
}
|
|
}
|
|
|
- } else {
|
|
|
|
|
- if (numberBD.compareTo(min) >= 0 || sumPremium.compareTo(min1) >= 0) {
|
|
|
|
|
- return ratio.getKickback();
|
|
|
|
|
|
|
+ }else if (!ry && bf){
|
|
|
|
|
+ if (allSatisfied != 1) {
|
|
|
|
|
+ if (sumPremium.compareTo(min1) >= 0) {
|
|
|
|
|
+ return ratio.getKickback();
|
|
|
|
|
+ }
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|