Initial commit

This commit is contained in:
2026-04-23 16:58:11 +08:00
commit 267eba1eca
2582 changed files with 273338 additions and 0 deletions
@@ -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);
}
}
}