Initial commit
This commit is contained in:
@@ -0,0 +1,57 @@
|
||||
package com.ruoyi.promo.task;
|
||||
|
||||
import com.ruoyi.domain.entity.sys.TtUser;
|
||||
import com.ruoyi.promo.domain.dto.TotalUserExpenditureDTO;
|
||||
import com.ruoyi.promo.mapper.PromoTurnoverMapper;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.util.*;
|
||||
|
||||
@Slf4j
|
||||
@Component("PromoTask")
|
||||
public class PromoTask {
|
||||
|
||||
@Autowired
|
||||
private PromoTurnoverMapper promoTurnoverMapper;
|
||||
|
||||
private Map<Integer, BigDecimal> commissionMap = new HashMap<>();
|
||||
|
||||
/**
|
||||
* 计算上月佣金
|
||||
*/
|
||||
public void calculateLastMonthCommission() {
|
||||
// 汇总所有用户上个月的充值总额
|
||||
List<TotalUserExpenditureDTO> lastMonthTotalUserExpenditure = promoTurnoverMapper.getLastMonthTotalUserExpenditure();
|
||||
for (TotalUserExpenditureDTO totalUserExpenditureDTO : lastMonthTotalUserExpenditure) {
|
||||
// 向上递归给各级代理分配佣金
|
||||
if (!Objects.isNull(totalUserExpenditureDTO.getParentId())) {
|
||||
distributeCommission(totalUserExpenditureDTO.getParentId(),
|
||||
totalUserExpenditureDTO.getCommissionRate(),
|
||||
totalUserExpenditureDTO.getAmount());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 分配佣金
|
||||
*/
|
||||
private void distributeCommission(Integer parentId,
|
||||
BigDecimal commissionRate,
|
||||
BigDecimal amount) {
|
||||
TtUser ttUser = promoTurnoverMapper.findById(parentId);
|
||||
BigDecimal parentCommissionRate = ttUser.getCommissionRate();
|
||||
BigDecimal commission = parentCommissionRate.multiply(amount).subtract(commissionRate.multiply(amount));
|
||||
System.err.println("代理:" + parentId + ",佣金比例:" + parentCommissionRate + ",获得佣金:" + commission);
|
||||
// 计算并存储该级代理的佣金
|
||||
// 将相同ID的代理佣金相加
|
||||
// 判断是否还有上级代理,有继续递归
|
||||
if (!Objects.isNull(ttUser.getParentId())) {
|
||||
distributeCommission(ttUser.getParentId(),
|
||||
ttUser.getCommissionRate(),
|
||||
amount);
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user