## 拓展收益延缓发放相关处理;
This commit is contained in:
parent
c96f623372
commit
02e8e4b802
|
@ -110,4 +110,11 @@ public interface IGradeServiceApi {
|
|||
*/
|
||||
R<BdGrade> getLastGrade(BigDecimal achieve, Integer pkCountry);
|
||||
|
||||
/**
|
||||
* 获取所有等级
|
||||
*
|
||||
* @return
|
||||
*/
|
||||
R<Map<Integer, BdGrade>> getGrade();
|
||||
|
||||
}
|
||||
|
|
|
@ -2,9 +2,12 @@ package com.hzs.bonus.bonus.mapper;
|
|||
|
||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||
import com.hzs.common.domain.member.bonus.CuMemberBonusDelay;
|
||||
import com.hzs.common.domain.member.bonus.ext.CuMemberBonusDelayExt;
|
||||
import com.hzs.common.domain.member.ext.CuMemberSettleExt;
|
||||
import org.apache.ibatis.annotations.Param;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Set;
|
||||
|
||||
/**
|
||||
* 会员奖金-拓展收益延缓表 Mapper 接口
|
||||
|
@ -28,4 +31,16 @@ public interface CuMemberBonusDelayMapper extends BaseMapper<CuMemberBonusDelay>
|
|||
*/
|
||||
void batchInsertCuMemberBonusDelay(@Param("cuMemberBonusDelayList") List<?> cuMemberBonusDelayList);
|
||||
|
||||
/**
|
||||
* 查询当天没有产生过奖金,但是还有延缓发放奖金的列表
|
||||
*
|
||||
* @param currentSettleTableName
|
||||
* @param pkMemberSet
|
||||
* @param yesterdayPeriod
|
||||
* @return
|
||||
*/
|
||||
List<CuMemberSettleExt> listDelayNotBonus(@Param("currentSettleTableName") String currentSettleTableName,
|
||||
@Param("pkMemberSet") Set<Long> pkMemberSet,
|
||||
@Param("yesterdayPeriod") Integer yesterdayPeriod);
|
||||
|
||||
}
|
||||
|
|
|
@ -2,6 +2,7 @@ package com.hzs.bonus.bonus.service;
|
|||
|
||||
import com.baomidou.mybatisplus.extension.service.IService;
|
||||
import com.hzs.common.domain.member.bonus.CuMemberBonusDelay;
|
||||
import com.hzs.common.domain.member.ext.CuMemberSettleExt;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Set;
|
||||
|
@ -28,4 +29,14 @@ public interface ICuMemberBonusDelayService extends IService<CuMemberBonusDelay>
|
|||
*/
|
||||
void batchInsertCuMemberBonusDelay(List<CuMemberBonusDelay> cuMemberBonusDelayList, Set<Long> memberIdSet);
|
||||
|
||||
/**
|
||||
* 查询当天没有产生过奖金,但是还有延缓发放奖金的列表
|
||||
*
|
||||
* @param currentSettleTableName
|
||||
* @param pkMemberSet
|
||||
* @param yesterdayPeriod
|
||||
* @return
|
||||
*/
|
||||
List<CuMemberSettleExt> listDelayNotBonus(String currentSettleTableName, Set<Long> pkMemberSet, Integer yesterdayPeriod);
|
||||
|
||||
}
|
||||
|
|
|
@ -2,7 +2,7 @@ package com.hzs.bonus.bonus.service.impl;
|
|||
|
||||
import cn.hutool.core.bean.BeanUtil;
|
||||
import cn.hutool.core.collection.CollectionUtil;
|
||||
import com.hzs.bonus.base.service.ICuMemberService;
|
||||
import com.hzs.bonus.bonus.service.ICuMemberBonusDelayService;
|
||||
import com.hzs.bonus.bonus.vo.BonusRecordDetailVO;
|
||||
import com.hzs.common.core.constant.*;
|
||||
import com.hzs.common.core.constant.msg.BonusMsgConstants;
|
||||
|
@ -48,7 +48,7 @@ public class BonusSettleFirstPurchaseHandle extends BonusSettleHandle {
|
|||
IGradeServiceApi iGradeServiceApi;
|
||||
|
||||
@Autowired
|
||||
private ICuMemberService iCuMemberService;
|
||||
private ICuMemberBonusDelayService iCuMemberBonusDelayService;
|
||||
|
||||
/**
|
||||
* @param settleTableName 结算表
|
||||
|
@ -1221,13 +1221,14 @@ public class BonusSettleFirstPurchaseHandle extends BonusSettleHandle {
|
|||
* 处理拓展延缓发放
|
||||
*/
|
||||
public void handleDelayExpand(BonusRecordDetailVO recordDetailVO, Map<Long, CuMemberBonus> cuMemberBonusMap, BonusConfigDTO bonusConfigDTO,
|
||||
Map<Long, CuMemberSettleExt> cuMemberSettleExtMap, Integer period) {
|
||||
// TODO new 这处理的都是今天有收益的,还需要处理今天没有收益,但是历史还有是延缓未发放奖金的
|
||||
|
||||
Map<Long, CuMemberSettleExt> cuMemberSettleExtMap, Integer period, Integer yesterdayPeriod, String currentSettleTableName,
|
||||
Map<Integer, BdGrade> gradeMap) {
|
||||
// 量奖(拓展收益)延缓发放主表量奖(拓展收益)延缓发放主表
|
||||
List<CuMemberBonusDelay> cuMemberBonusDelayList = new ArrayList<>();
|
||||
// 量奖(拓展收益)延缓发放列表
|
||||
// 量奖(拓展收益)延缓发放明细列表
|
||||
List<CuMemberBonusDelayDetail> cuMemberBonusDelayDetailList = new ArrayList<>();
|
||||
// 已经追加拓展延缓明细的会员会员列表
|
||||
Set<Long> pkMemberSet = new HashSet<>();
|
||||
|
||||
Map<Long, CuMemberBonusDelayDetail> bonusDelayDetailAddMap = recordDetailVO.getBonusDelayDetailAddMap();
|
||||
if (bonusDelayDetailAddMap.size() > 0) {
|
||||
|
@ -1242,8 +1243,8 @@ public class BonusSettleFirstPurchaseHandle extends BonusSettleHandle {
|
|||
|
||||
// 发放收益 = 发放前收益 + 首购 + 复购
|
||||
BigDecimal pretaxIncome = cuMemberBonusDelayAddDetail.getBeforePretaxIncome().add(cuMemberBonusDelayAddDetail.getFirPretaxIncome()).add(cuMemberBonusDelayAddDetail.getRepPretaxIncome());
|
||||
// 发放后收益 = 发放前 + 新加入的收益
|
||||
BigDecimal afterPretaxIncome = cuMemberBonusDelayAddDetail.getBeforePretaxIncome().add(pretaxIncome);
|
||||
// 发放后收益 = 发放前收益 + 首购 + 复购
|
||||
BigDecimal afterPretaxIncome = pretaxIncome;
|
||||
// 获取计算后的值
|
||||
cuMemberBonusDelayAddDetail.setAfterPretaxIncome(pretaxIncome);
|
||||
|
||||
|
@ -1253,13 +1254,12 @@ public class BonusSettleFirstPurchaseHandle extends BonusSettleHandle {
|
|||
// 封顶值 小于 收益,使用封顶值
|
||||
pretaxIncome = cuMemberBonusDelayAddDetail.getExpandCapping();
|
||||
}
|
||||
// 发放后收益 = 发放前 + 新加入的收益 - 本次发放的收益
|
||||
afterPretaxIncome = afterPretaxIncome.subtract(pretaxIncome);
|
||||
// 记录已经追加拓展延缓明细的会员
|
||||
pkMemberSet.add(pkMember);
|
||||
|
||||
// 结算会员信息
|
||||
CuMemberSettleExt cuMemberSettleExt = cuMemberSettleExtMap.get(pkMember);
|
||||
|
||||
// TODO new 生成一条拓展收益明细,并且添加收益奖金
|
||||
// 追加会员奖金收益
|
||||
// TODO new 追加会员奖金拓展收益
|
||||
CuMemberBonus cuMemberBonus = this.getCuMemberBonus(period, cuMemberBonusMap, pkMember,
|
||||
cuMemberSettleExt.getIncomeStatus(), cuMemberSettleExt.getPkSettleCountry(), cuMemberSettleExt.getPkRate());
|
||||
cuMemberBonus.setExpandIncome(pretaxIncome);
|
||||
|
@ -1296,7 +1296,6 @@ public class BonusSettleFirstPurchaseHandle extends BonusSettleHandle {
|
|||
BdBonusDeduct bdBonusDeduct = setDeplyBonusDetailDeduct(bonusConfigDTO, cuMemberBonusExpand);
|
||||
// 处理实发小计、实发收益总计
|
||||
setFirstPurchaseTotal(bdBonusDeduct, cuMemberBonus, cuMemberBonusExpand);
|
||||
|
||||
// TODO new 追加的一条延缓收益生成的拓展收益明细
|
||||
recordDetailVO.getCuMemberBonusExpandList().add(cuMemberBonusExpand);
|
||||
|
||||
|
@ -1308,16 +1307,17 @@ public class BonusSettleFirstPurchaseHandle extends BonusSettleHandle {
|
|||
.pretaxIncome(pretaxIncome)
|
||||
.afterPretaxIncome(cuMemberBonusDelayAddDetail.getAfterPretaxIncome().subtract(pretaxIncome))
|
||||
.incomeTax(cuMemberBonusExpand.getIncomeTax())
|
||||
.repPretaxIncome(cuMemberBonusExpand.getPretaxIncome())
|
||||
.realIncome(cuMemberBonusExpand.getRealIncome())
|
||||
.type(EInfusingWaterType.BANK_TRANSFER.getValue())
|
||||
.pkBonus(cuMemberBonusDelayAddDetail.getPkBonus())
|
||||
.expandCapping(cuMemberBonusDelayAddDetail.getExpandCapping())
|
||||
.build();
|
||||
cuMemberBonusDelayGrantDetail.setPkCreator(cuMemberBonusDelayAddDetail.getPkCreator());
|
||||
cuMemberBonusDelayGrantDetail.setPkCountry(cuMemberBonusDelayAddDetail.getPkCountry());
|
||||
|
||||
// TODO new 增加一条减少的延缓收益明细
|
||||
cuMemberBonusDelayDetailList.add(cuMemberBonusDelayGrantDetail);
|
||||
|
||||
afterPretaxIncome = cuMemberBonusDelayGrantDetail.getAfterPretaxIncome();
|
||||
}
|
||||
|
||||
// 添加延缓主表
|
||||
|
@ -1331,12 +1331,121 @@ public class BonusSettleFirstPurchaseHandle extends BonusSettleHandle {
|
|||
.build();
|
||||
cuMemberBonusDelay.setPkCreator(cuMemberBonusDelayAddDetail.getPkCreator());
|
||||
cuMemberBonusDelay.setPkCountry(cuMemberBonusDelayAddDetail.getPkCountry());
|
||||
// TODO new 增加一条延缓主表
|
||||
cuMemberBonusDelayList.add(cuMemberBonusDelay);
|
||||
}
|
||||
}
|
||||
|
||||
// 处理当天没有奖金的延缓发放
|
||||
this.handleNotGrantDelay(recordDetailVO, cuMemberBonusMap, bonusConfigDTO, cuMemberSettleExtMap, period, yesterdayPeriod, currentSettleTableName,
|
||||
gradeMap, pkMemberSet, cuMemberBonusDelayList, cuMemberBonusDelayDetailList);
|
||||
|
||||
recordDetailVO.setCuMemberBonusDelayList(cuMemberBonusDelayList);
|
||||
recordDetailVO.setCuMemberBonusDelayDetailList(cuMemberBonusDelayDetailList);
|
||||
}
|
||||
|
||||
/**
|
||||
* 处理当天没有奖金的延缓发放
|
||||
*/
|
||||
private void handleNotGrantDelay(BonusRecordDetailVO recordDetailVO, Map<Long, CuMemberBonus> cuMemberBonusMap, BonusConfigDTO bonusConfigDTO,
|
||||
Map<Long, CuMemberSettleExt> cuMemberSettleExtMap, Integer period, Integer yesterdayPeriod, String currentSettleTableName,
|
||||
Map<Integer, BdGrade> gradeMap, Set<Long> pkMemberSet,
|
||||
List<CuMemberBonusDelay> cuMemberBonusDelayList, List<CuMemberBonusDelayDetail> cuMemberBonusDelayDetailList) {
|
||||
// TODO new 需要今天没有奖金产生,但是还有延缓奖金没发放的会员
|
||||
List<CuMemberSettleExt> notGrantDelayExtList = iCuMemberBonusDelayService.listDelayNotBonus(currentSettleTableName, pkMemberSet, yesterdayPeriod);
|
||||
if (CollectionUtil.isNotEmpty(notGrantDelayExtList)) {
|
||||
for (CuMemberSettleExt cuMemberSettleExt : notGrantDelayExtList) {
|
||||
// 会员ID
|
||||
Long pkMember = cuMemberSettleExt.getPkMember();
|
||||
// 拓展收益
|
||||
BigDecimal pretaxIncome = cuMemberSettleExt.getAfterGrantIncome();
|
||||
BdGrade bdGrade = gradeMap.get(cuMemberSettleExt.getPkGrade());
|
||||
// 等级封顶值
|
||||
BigDecimal expandCapping = bdGrade.getExpandCapping();
|
||||
|
||||
if (expandCapping.compareTo(pretaxIncome) < 0) {
|
||||
// 封顶值 小于 收益,使用封顶值
|
||||
pretaxIncome = expandCapping;
|
||||
}
|
||||
|
||||
// 结算会员信息
|
||||
getMemberSettle(cuMemberSettleExtMap, cuMemberSettleExt);
|
||||
|
||||
// TODO new 生成一条拓展收益明细,并且添加收益奖金
|
||||
// 追加会员奖金收益
|
||||
CuMemberBonus cuMemberBonus = this.getCuMemberBonus(period, cuMemberBonusMap, pkMember,
|
||||
cuMemberSettleExt.getIncomeStatus(), cuMemberSettleExt.getPkSettleCountry(), cuMemberSettleExt.getPkRate());
|
||||
cuMemberBonus.setExpandIncome(pretaxIncome);
|
||||
cuMemberBonus.setExpandNoCapping(pretaxIncome);
|
||||
cuMemberBonus.setExpandCapping(expandCapping);
|
||||
|
||||
// 获取拓展收益奖项
|
||||
Integer pkBonusItems = getPkBonusItems(bonusConfigDTO, cuMemberSettleExt.getPkSettleCountry(), EBonusItems.EXPANSION_INCOME.getValue());
|
||||
// 创建一条拓展收益明细
|
||||
CuMemberBonusExpand cuMemberBonusExpand = CuMemberBonusExpand.builder()
|
||||
.pkBonus(pkMember)
|
||||
.pkBonusItems(pkBonusItems)
|
||||
.incomeStatus(EBonusIncomeStatus.NORMAL.getValue())
|
||||
.pkOrder(0L)
|
||||
.calType(ECalType.RATIO.getValue())
|
||||
.calValue(bdGrade.getExpandRatio())
|
||||
.calAchieve(BigDecimal.ZERO)
|
||||
.pretaxIncome(pretaxIncome)
|
||||
.expandNoCapping(pretaxIncome)
|
||||
.expandCapping(expandCapping)
|
||||
.expandNormalHalf(ComputeUtil.computeMultiplyHalf(expandCapping))
|
||||
.expandNormalReal(ComputeUtil.computeMultiplyHalf(pretaxIncome))
|
||||
.remark(String.format(BonusMsgConstants.BONUS_EXPAND_DELAY, cuMemberSettleExt.getMemberCode() + cuMemberSettleExt.getMemberName()))
|
||||
.currentTouch(0)
|
||||
.expandTouch(0)
|
||||
.addTouch(BigDecimal.ZERO)
|
||||
.incomeRatio(BigDecimal.ZERO)
|
||||
.incomeDialRatio(BigDecimal.ZERO)
|
||||
.orderDialRatio(BigDecimal.ZERO)
|
||||
.build();
|
||||
cuMemberBonusExpand.setPkCreator(MagicNumberConstants.PK_ADMIN);
|
||||
cuMemberBonusExpand.setPkCountry(cuMemberSettleExt.getPkCountry());
|
||||
// 处理扣项,计算最终收益
|
||||
BdBonusDeduct bdBonusDeduct = setDeplyBonusDetailDeduct(bonusConfigDTO, cuMemberBonusExpand);
|
||||
// 处理实发小计、实发收益总计
|
||||
setFirstPurchaseTotal(bdBonusDeduct, cuMemberBonus, cuMemberBonusExpand);
|
||||
// TODO new 追加的一条延缓收益生成的拓展收益明细
|
||||
recordDetailVO.getCuMemberBonusExpandList().add(cuMemberBonusExpand);
|
||||
|
||||
// 封装延缓发放减少明细
|
||||
CuMemberBonusDelayDetail cuMemberBonusDelayGrantDetail = CuMemberBonusDelayDetail.builder()
|
||||
.pkMember(pkMember)
|
||||
.period(period)
|
||||
.beforePretaxIncome(cuMemberSettleExt.getAfterGrantIncome())
|
||||
.pretaxIncome(pretaxIncome)
|
||||
.afterPretaxIncome(cuMemberSettleExt.getAfterGrantIncome().subtract(pretaxIncome))
|
||||
.incomeTax(cuMemberBonusExpand.getIncomeTax())
|
||||
.realIncome(cuMemberBonusExpand.getRealIncome())
|
||||
.type(EInfusingWaterType.BANK_TRANSFER.getValue())
|
||||
.pkBonus(pkMember)
|
||||
.expandCapping(expandCapping)
|
||||
.build();
|
||||
cuMemberBonusDelayGrantDetail.setPkCreator(MagicNumberConstants.PK_ADMIN);
|
||||
cuMemberBonusDelayGrantDetail.setPkCountry(cuMemberSettleExt.getPkCountry());
|
||||
// TODO new 增加一条减少的延缓收益明细
|
||||
cuMemberBonusDelayDetailList.add(cuMemberBonusDelayGrantDetail);
|
||||
|
||||
// 添加延缓主表
|
||||
CuMemberBonusDelay cuMemberBonusDelay = CuMemberBonusDelay.builder()
|
||||
.pkMember(pkMember)
|
||||
.period(period)
|
||||
.beforeGrantIncome(cuMemberSettleExt.getAfterGrantIncome())
|
||||
.grantIncome(pretaxIncome)
|
||||
.afterGrantIncome(cuMemberSettleExt.getAfterGrantIncome().subtract(pretaxIncome))
|
||||
.pkBonus(pkMember)
|
||||
.build();
|
||||
cuMemberBonusDelay.setPkCreator(MagicNumberConstants.PK_ADMIN);
|
||||
cuMemberBonusDelay.setPkCountry(cuMemberSettleExt.getPkCountry());
|
||||
// TODO new 增加一条延缓主表
|
||||
cuMemberBonusDelayList.add(cuMemberBonusDelay);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
|
|
@ -205,6 +205,79 @@ public abstract class BonusSettleHandle {
|
|||
return pkMemberSettleMap;
|
||||
}
|
||||
|
||||
/**
|
||||
* 记录需要修改的会员结算表数据, 安置的
|
||||
*
|
||||
* @param cuMemberSettleExtMap 会员结算
|
||||
* @param cuMemberSettleExt 查询出来的结算数据
|
||||
*/
|
||||
protected void getMemberSettle(Map<Long, CuMemberSettleExt> cuMemberSettleExtMap, CuMemberSettleExt cuMemberSettleExt) {
|
||||
if (cuMemberSettleExtMap.containsKey(cuMemberSettleExt.getPkMember())) {
|
||||
CuMemberSettleExt memberSettleExt = cuMemberSettleExtMap.get(cuMemberSettleExt.getPkMember());
|
||||
if (memberSettleExt.getPkParent() == null) {
|
||||
memberSettleExt.setPkParent(cuMemberSettleExt.getPkParent());
|
||||
}
|
||||
if (memberSettleExt.getPkPlaceParent() == null) {
|
||||
memberSettleExt.setPkPlaceParent(cuMemberSettleExt.getPkPlaceParent());
|
||||
}
|
||||
if (memberSettleExt.getPlaceDept() == null) {
|
||||
memberSettleExt.setPlaceDept(cuMemberSettleExt.getPlaceDept());
|
||||
}
|
||||
if (memberSettleExt.getPkGrade() == null) {
|
||||
memberSettleExt.setPkGrade(cuMemberSettleExt.getPkGrade());
|
||||
}
|
||||
if (memberSettleExt.getGradeValue() == null) {
|
||||
memberSettleExt.setGradeValue(cuMemberSettleExt.getGradeValue());
|
||||
}
|
||||
if (memberSettleExt.getPkAwards() == null) {
|
||||
memberSettleExt.setPkAwards(cuMemberSettleExt.getPkAwards());
|
||||
}
|
||||
if (memberSettleExt.getRegisterAuthority() == null) {
|
||||
memberSettleExt.setRegisterAuthority(cuMemberSettleExt.getRegisterAuthority());
|
||||
}
|
||||
if (memberSettleExt.getCustomerType() == null) {
|
||||
memberSettleExt.setCustomerType(cuMemberSettleExt.getCustomerType());
|
||||
}
|
||||
if (memberSettleExt.getIsMakerSpace() == null) {
|
||||
memberSettleExt.setIsMakerSpace(cuMemberSettleExt.getIsMakerSpace());
|
||||
}
|
||||
if (memberSettleExt.getIsMakerGift() == null) {
|
||||
memberSettleExt.setIsMakerGift(cuMemberSettleExt.getIsMakerGift());
|
||||
}
|
||||
if (memberSettleExt.getPkVertex() == null) {
|
||||
memberSettleExt.setPkVertex(cuMemberSettleExt.getPkVertex());
|
||||
}
|
||||
if (memberSettleExt.getUnGrantIncome() == null) {
|
||||
memberSettleExt.setUnGrantIncome(cuMemberSettleExt.getUnGrantIncome());
|
||||
}
|
||||
} else {
|
||||
cuMemberSettleExt.setANewAmount(BigDecimal.ZERO);
|
||||
cuMemberSettleExt.setANewPv(BigDecimal.ZERO);
|
||||
cuMemberSettleExt.setBNewAmount(BigDecimal.ZERO);
|
||||
cuMemberSettleExt.setBNewPv(BigDecimal.ZERO);
|
||||
cuMemberSettleExt.setRepANewAmount(BigDecimal.ZERO);
|
||||
cuMemberSettleExt.setRepBNewAmount(BigDecimal.ZERO);
|
||||
cuMemberSettleExt.setRepANewPv(BigDecimal.ZERO);
|
||||
cuMemberSettleExt.setRepBNewPv(BigDecimal.ZERO);
|
||||
cuMemberSettleExt.setRegisterNewAmount(BigDecimal.ZERO);
|
||||
cuMemberSettleExt.setRegisterNewPv(BigDecimal.ZERO);
|
||||
cuMemberSettleExt.setUpgradeNewAmount(BigDecimal.ZERO);
|
||||
cuMemberSettleExt.setUpgradeNewPv(BigDecimal.ZERO);
|
||||
cuMemberSettleExt.setRepurchaseNewAmount(BigDecimal.ZERO);
|
||||
cuMemberSettleExt.setRepurchaseNewPv(BigDecimal.ZERO);
|
||||
cuMemberSettleExt.setHiFunNewAmount(BigDecimal.ZERO);
|
||||
cuMemberSettleExt.setHiFunNewPv(BigDecimal.ZERO);
|
||||
cuMemberSettleExt.setMallNewAmount(BigDecimal.ZERO);
|
||||
cuMemberSettleExt.setMallNewPv(BigDecimal.ZERO);
|
||||
cuMemberSettleExt.setRegisterBloNewPv(BigDecimal.ZERO);
|
||||
cuMemberSettleExt.setUpgradeBloNewPv(BigDecimal.ZERO);
|
||||
cuMemberSettleExt.setRepurchaseBloNewPv(BigDecimal.ZERO);
|
||||
cuMemberSettleExt.setHiFunBloNewPv(BigDecimal.ZERO);
|
||||
cuMemberSettleExt.setMallBloNewPv(BigDecimal.ZERO);
|
||||
cuMemberSettleExtMap.put(cuMemberSettleExt.getPkMember(), cuMemberSettleExt);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 记录需要修改的会员结算表数据, 安置的
|
||||
*
|
||||
|
|
|
@ -45,6 +45,7 @@ import com.hzs.common.domain.member.swing.ext.CuMemberSwingNetDetailExt;
|
|||
import com.hzs.common.domain.member.swing.ext.CuMemberSwingNetExt;
|
||||
import com.hzs.common.domain.sale.ext.SaOrderExt;
|
||||
import com.hzs.common.domain.system.config.BdAwards;
|
||||
import com.hzs.common.domain.system.config.BdGrade;
|
||||
import com.hzs.common.domain.system.config.BdRangeAwards;
|
||||
import com.hzs.member.base.IMemberServiceApi;
|
||||
import com.hzs.sale.order.ISaOrderServiceApi;
|
||||
|
@ -368,6 +369,7 @@ public class BonusSettleServiceImpl implements IBonusSettleService {
|
|||
iCuMemberTreeService.initCuMemberTreeTable(yesterdayTableName, currentSettleTableName);
|
||||
|
||||
Map<String, BdAwards> awardsMap = iAwardsServiceApi.getAwards().getData();
|
||||
Map<Integer, BdGrade> gradeMap = iGradeServiceApi.getGrade().getData();
|
||||
|
||||
// 查看是否有特殊业务,有特殊业务的处理,特殊业务,注水处理
|
||||
List<CuMemberAchieveLog> cuMemberAchieveLogList = iCuMemberAchieveLogService.queryMemberAchieveLogByPeriod(period);
|
||||
|
@ -460,7 +462,7 @@ public class BonusSettleServiceImpl implements IBonusSettleService {
|
|||
// 计算奖金(主入口)
|
||||
// 乐学易考奖金计算,回写代金券数量
|
||||
LeXueRangeParam leXueRangeParam = calculateBonusBySaOrderList(settleDate, period, yesterdayPeriod, currentSettleTableName,
|
||||
firPurchaseOrderList, repurchaseOrderList, mallOrderList, awardsMap, bonusConfigDTO, cuMemberBonusMap,
|
||||
firPurchaseOrderList, repurchaseOrderList, mallOrderList, awardsMap, gradeMap, bonusConfigDTO, cuMemberBonusMap,
|
||||
recordDetailVO, cuMemberSettleExtMap);
|
||||
// 计算复购券
|
||||
calculateRepurchaseCoupons(DateUtils.parseDate(settleDate), firPurchaseOrderList, period, bonusConfigDTO, cuMemberBonusMap,
|
||||
|
@ -786,15 +788,16 @@ public class BonusSettleServiceImpl implements IBonusSettleService {
|
|||
* @param period 期间
|
||||
* @param yesterdayPeriod 昨日期间
|
||||
* @param currentSettleTableName 结算日表
|
||||
* @param awardsMap 奖项
|
||||
* @param awardsMap 奖衔
|
||||
* @param gradeMap 等级
|
||||
* @param bonusConfigDTO 奖金配置
|
||||
* @param cuMemberBonusMap 最终的奖金列表
|
||||
* @param cuMemberSettleExtMap 会员结算map
|
||||
*/
|
||||
private LeXueRangeParam calculateBonusBySaOrderList(String settleDate, Integer period, Integer yesterdayPeriod, String currentSettleTableName,
|
||||
List<SaOrderExt> firPurchaseOrderList, List<SaOrderExt> repurchaseOrderList, List<SaOrderExt> mallOrderList,
|
||||
Map<String, BdAwards> awardsMap, BonusConfigDTO bonusConfigDTO, Map<Long, CuMemberBonus> cuMemberBonusMap,
|
||||
BonusRecordDetailVO recordDetailVO, Map<Long, CuMemberSettleExt> cuMemberSettleExtMap) {
|
||||
Map<String, BdAwards> awardsMap, Map<Integer, BdGrade> gradeMap, BonusConfigDTO bonusConfigDTO,
|
||||
Map<Long, CuMemberBonus> cuMemberBonusMap, BonusRecordDetailVO recordDetailVO, Map<Long, CuMemberSettleExt> cuMemberSettleExtMap) {
|
||||
LeXueRangeParam leXueRangeParam = null;
|
||||
Map<Long, CuAwardsControl> cuAwardsControlMap = getCuAwardsControlMap();
|
||||
Map<Long, CuMemberBonus> weekMemberBonusMap = getWeekMemberBonusMap(settleDate, period);
|
||||
|
@ -830,7 +833,8 @@ public class BonusSettleServiceImpl implements IBonusSettleService {
|
|||
}
|
||||
|
||||
// 处理拓展延缓发放
|
||||
bonusSettleFirstPurchaseHandle.handleDelayExpand(recordDetailVO, cuMemberBonusMap, bonusConfigDTO, cuMemberSettleExtMap, period);
|
||||
bonusSettleFirstPurchaseHandle.handleDelayExpand(recordDetailVO, cuMemberBonusMap, bonusConfigDTO, cuMemberSettleExtMap,
|
||||
period, yesterdayPeriod, currentSettleTableName, gradeMap);
|
||||
|
||||
return leXueRangeParam;
|
||||
}
|
||||
|
|
|
@ -5,6 +5,7 @@ import com.hzs.bonus.bonus.mapper.CuMemberBonusDelayMapper;
|
|||
import com.hzs.bonus.bonus.service.ICuMemberBonusDelayService;
|
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
import com.hzs.common.domain.member.bonus.CuMemberBonusDelay;
|
||||
import com.hzs.common.domain.member.ext.CuMemberSettleExt;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
|
@ -48,4 +49,9 @@ public class CuMemberBonusDelayServiceImpl extends ServiceImpl<CuMemberBonusDela
|
|||
baseMapper.batchInsertCuMemberBonusDelay(list));
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<CuMemberSettleExt> listDelayNotBonus(String currentSettleTableName, Set<Long> pkMemberSet, Integer yesterdayPeriod) {
|
||||
return baseMapper.listDelayNotBonus(currentSettleTableName, pkMemberSet, yesterdayPeriod);
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -2,6 +2,7 @@
|
|||
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
|
||||
<mapper namespace="com.hzs.bonus.bonus.mapper.CuMemberBonusDelayDetailMapper">
|
||||
|
||||
<!-- 删除会员延缓发放明细表 -->
|
||||
<delete id="deleteCuMemberBonusDelayDetail">
|
||||
delete
|
||||
from CU_MEMBER_BONUS_DELAY_DETAIL
|
||||
|
@ -11,6 +12,7 @@
|
|||
where period = #{period} and grant_status <= 2)
|
||||
</delete>
|
||||
|
||||
<!-- 批量插入会员延缓发放明细表 -->
|
||||
<insert id="batchInsertCuMemberBonusDelayDetail">
|
||||
insert ALL
|
||||
<foreach item="item" index="index" collection="CuMemberBonusDelayDetail" separator=" ">
|
||||
|
|
|
@ -2,15 +2,18 @@
|
|||
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
|
||||
<mapper namespace="com.hzs.bonus.bonus.mapper.CuMemberBonusDelayMapper">
|
||||
|
||||
<!-- 删除会员延缓发放主表 -->
|
||||
<delete id="deleteCuMemberBonusDelay">
|
||||
delete
|
||||
from CU_MEMBER_BONUS_DELAY
|
||||
where PK_BONUS in (
|
||||
select pk_id
|
||||
from cu_member_bonus
|
||||
where period = #{period} and grant_status <= 2)
|
||||
where period = #{period}
|
||||
and grant_status <= 2)
|
||||
</delete>
|
||||
|
||||
<!-- 批量插入会员延缓发放主表 -->
|
||||
<insert id="batchInsertCuMemberBonusDelay">
|
||||
insert ALL
|
||||
<foreach item="item" index="index" collection="cuMemberBonusDelayList" separator=" ">
|
||||
|
@ -26,4 +29,45 @@
|
|||
SELECT 1 FROM dual
|
||||
</insert>
|
||||
|
||||
<!-- 查询当天没有产生过奖金,但是还有延缓发放奖金的列表 -->
|
||||
<select id="listDelayNotBonus" resultType="com.hzs.common.domain.member.ext.CuMemberSettleExt">
|
||||
select cmbd.period, cmbd.pk_country,
|
||||
cmbd.before_grant_income, cmbd.grant_income, cmbd.after_grant_income,
|
||||
a.pk_member, a.member_code, a.member_name,
|
||||
a.pk_place_parent, a.place_dept, a.pk_grade, a.pk_awards,
|
||||
a.account_status, a.income_status, a.pk_settle_country,
|
||||
a.purchase_status, a.share_status, a.register_authority,
|
||||
a.a_balance, a.b_balance, a.r_a_balance, a.r_b_balance,
|
||||
a.rep_a_balance, a.rep_b_balance, a.r_rep_a_balance, a.r_rep_b_balance,
|
||||
a.register_amount, a.register_pv, a.upgrade_amount, a.upgrade_pv,
|
||||
a.repurchase_amount, a.repurchase_pv,
|
||||
a.hi_fun_amount, a.hi_fun_pv,
|
||||
a.mall_amount, a.mall_pv,
|
||||
a.pk_center_code, a.pk_vertex, a.category,
|
||||
a.min_achieve, a.round, a.second,
|
||||
a.store_level, a.expire_status,
|
||||
a.pk_rate
|
||||
from (
|
||||
select cmbd.pk_member,
|
||||
cmbd.period,
|
||||
cmbd.pk_creator,
|
||||
cmbd.pk_country,
|
||||
cmbd.before_grant_income,
|
||||
cmbd.grant_income,
|
||||
cmbd.after_grant_income
|
||||
from cu_member_bonus_delay cmbd
|
||||
where cmbd.del_flag = 0
|
||||
and cmbd.period = #{yesterdayPeriod}
|
||||
and cmbd.after_grant_income > 0
|
||||
<if test="pkMemberSet.size > 0">
|
||||
and cmbd.pk_member not in
|
||||
<foreach collection="pkMemberSet" item="item" open="(" close=")" separator=" union ">
|
||||
select #{item} from dual
|
||||
</foreach>
|
||||
</if>
|
||||
) cmbd
|
||||
left join ${currentSettleTableName} a
|
||||
on a.pk_member = cmbd.pk_member
|
||||
</select>
|
||||
|
||||
</mapper>
|
||||
|
|
|
@ -250,19 +250,18 @@
|
|||
</where>
|
||||
order by b.period,b.pk_bonus_items,b.real_income desc
|
||||
</select>
|
||||
|
||||
<select id="queryMemberBonusDetailByConditionForServer" resultMap="CuMemberBonusDetail">
|
||||
select b.period,cp.settle_date,so.order_code,so.order_type,bt.short_name source_country_name,
|
||||
cu.member_code source_member_code,cu.member_name
|
||||
source_member_name,so.pk_rate,bc.out_exchange_rate,so.order_amount,
|
||||
so.order_achieve,b.pk_country,b.pk_bonus_items,b.pretax_income,b.income_tax,b.real_income,b.income_status,
|
||||
select b.period,cp.settle_date,
|
||||
so.order_code,so.order_type,bt.short_name source_country_name,
|
||||
cu.member_code source_member_code,cu.member_name source_member_name,
|
||||
nvl(so.pk_rate, 1) pk_rate, nvl(bc.out_exchange_rate, 1) out_exchange_rate,
|
||||
nvl(so.order_amount, 0) order_amount, nvl(so.order_achieve, 0) order_achieve,
|
||||
b.pk_country,b.pk_bonus_items,b.pretax_income,b.income_tax,b.real_income,b.income_status,
|
||||
tar.member_code,tar.member_name,bg.pk_transaction pk_settle_grade,ba.pk_transaction
|
||||
pk_awards,bv.vertex_name,ct.team_name,
|
||||
b.remark,b.income_ratio,b.income_dial_ratio,b.order_dial_ratio,bct.short_name settle_country from (
|
||||
select pk_id,pk_member,order_code,order_type,pk_rate,pk_country,order_amount,order_achieve from sa_order
|
||||
union
|
||||
select pk_id,pk_member,order_code,order_type,pk_rate,pk_country,order_amount,order_achieve from sa_t_order
|
||||
) so
|
||||
inner join (
|
||||
b.remark,b.income_ratio,b.income_dial_ratio,b.order_dial_ratio,bct.short_name settle_country
|
||||
from (
|
||||
select * from (
|
||||
select
|
||||
cb.pk_member,cd.pk_order,cb.period,cb.pk_country,cd.pk_bonus_items,cd.income_status,cd.CAL_ACHIEVE,cd.pretax_income,cd.income_tax,cd.real_income,
|
||||
|
@ -360,12 +359,15 @@
|
|||
)
|
||||
</if>
|
||||
) b
|
||||
left join (
|
||||
select pk_id,pk_member,order_code,order_type,pk_rate,pk_country,order_amount,order_achieve from sa_order
|
||||
) so
|
||||
on so.pk_id = b.pk_order
|
||||
inner join cu_member tar
|
||||
left join cu_member tar
|
||||
on b.pk_member = tar.pk_id
|
||||
inner join cu_member cu
|
||||
left join cu_member cu
|
||||
on so.pk_member = cu.pk_id
|
||||
inner join cu_member_settle_period cp
|
||||
left join cu_member_settle_period cp
|
||||
on b.period = cp.pk_id
|
||||
left join bd_vertex bv
|
||||
on bv.pk_id = tar.pk_vertex
|
||||
|
@ -432,6 +434,7 @@
|
|||
<otherwise>order by tar.pk_teamcode</otherwise>
|
||||
</choose>
|
||||
</select>
|
||||
|
||||
<select id="queryMemberBonusDetailByBonusItemsForServer" resultMap="CuMemberBonusDetail">
|
||||
select b.period,cp.settle_date,so.order_code,so.order_type,bt.short_name source_country_name,
|
||||
cu.member_code source_member_code,cu.member_name source_member_name,nvl(so.pk_rate,b.pk_rate) pk_rate,
|
||||
|
|
|
@ -167,22 +167,23 @@
|
|||
</where>
|
||||
order by b.period,b.pk_bonus_items,b.real_income desc
|
||||
</select>
|
||||
|
||||
<select id="queryMemberBonusExpandByBonusItemsForServer" resultMap="CuMemberBonusExpand">
|
||||
select b.period,cp.settle_date,so.order_code,so.order_type,bt.short_name source_country_name,
|
||||
cu.member_code source_member_code,cu.member_name source_member_name,so.pk_rate,bc.out_exchange_rate,so.order_amount,
|
||||
so.order_achieve,b.pk_country,b.pk_bonus_items,b.pretax_income,b.income_tax,b.real_income,b.income_status,
|
||||
select b.period, cp.settle_date,
|
||||
so.order_code,so.order_type,bt.short_name source_country_name,
|
||||
cu.member_code source_member_code,cu.member_name source_member_name,
|
||||
nvl(so.pk_rate, 1) pk_rate, nvl(bc.out_exchange_rate, 1) out_exchange_rate,
|
||||
nvl(so.order_amount, 0) order_amount, nvl(so.order_achieve, 0) order_achieve,
|
||||
b.pk_country,b.pk_bonus_items,b.pretax_income,b.income_tax,b.real_income,b.income_status,
|
||||
tar.member_code,tar.member_name,bg.pk_transaction pk_settle_grade,ba.pk_transaction pk_awards,bv.vertex_name,ct.team_name,
|
||||
b.remark,b.income_ratio,b.income_dial_ratio,b.order_dial_ratio,b.current_touch,b.expand_touch,
|
||||
b.expand_no_capping,b.expand_capping,b.expand_normal_half,b.expand_normal_real,bct.short_name settle_country from (
|
||||
select pk_id,pk_member,order_code,order_type,pk_rate,pk_country,order_amount,order_achieve from sa_order
|
||||
union
|
||||
select pk_id,pk_member,order_code,order_type,pk_rate,pk_country,order_amount,order_achieve from sa_t_order
|
||||
) so
|
||||
inner join (
|
||||
select cb.pk_member,ce.pk_order,cb.period,cb.pk_country,ce.pk_bonus_items,ce.income_status,ce.CAL_ACHIEVE,ce.pretax_income,ce.income_tax,ce.real_income,
|
||||
b.expand_no_capping,b.expand_capping,b.expand_normal_half,b.expand_normal_real,bct.short_name settle_country
|
||||
from (
|
||||
select
|
||||
cb.pk_member,ce.pk_order,cb.period,cb.pk_country,ce.pk_bonus_items,ce.income_status,ce.CAL_ACHIEVE,ce.pretax_income,ce.income_tax,ce.real_income,
|
||||
ce.remark,ce.income_ratio,ce.income_dial_ratio,ce.order_dial_ratio,ce.current_touch,ce.expand_touch,
|
||||
ce.expand_no_capping,ce.expand_capping,ce.expand_normal_half,ce.expand_normal_real from
|
||||
cu_member_bonus cb
|
||||
ce.expand_no_capping,ce.expand_capping,ce.expand_normal_half,ce.expand_normal_real
|
||||
from cu_member_bonus cb
|
||||
inner join cu_member_bonus_expand ce
|
||||
on cb.pk_id = ce.pk_bonus
|
||||
where 1=1
|
||||
|
@ -215,12 +216,15 @@
|
|||
)
|
||||
</if>
|
||||
) b
|
||||
left join (
|
||||
select pk_id,pk_member,order_code,order_type,pk_rate,pk_country,order_amount,order_achieve from sa_order
|
||||
) so
|
||||
on so.pk_id = b.pk_order
|
||||
inner join cu_member tar
|
||||
left join cu_member tar
|
||||
on b.pk_member = tar.pk_id
|
||||
inner join cu_member cu
|
||||
left join cu_member cu
|
||||
on so.pk_member = cu.pk_id
|
||||
inner join cu_member_settle_period cp
|
||||
left join cu_member_settle_period cp
|
||||
on b.period = cp.pk_id
|
||||
left join bd_vertex bv
|
||||
on bv.pk_id = tar.pk_vertex
|
||||
|
|
|
@ -3,6 +3,7 @@ package com.hzs.system.config.provider;
|
|||
import cn.hutool.core.bean.BeanUtil;
|
||||
import cn.hutool.core.collection.CollectionUtil;
|
||||
import com.hzs.common.core.domain.R;
|
||||
import com.hzs.common.domain.system.config.BdAwards;
|
||||
import com.hzs.common.domain.system.config.BdGrade;
|
||||
import com.hzs.common.domain.system.ext.BdGradeScopeExt;
|
||||
import com.hzs.system.config.IGradeServiceApi;
|
||||
|
@ -173,4 +174,14 @@ public class GradeServiceProvider implements IGradeServiceApi {
|
|||
return R.ok(iBdGradeService.getLastGrade(achieve, pkCountry));
|
||||
}
|
||||
|
||||
@Override
|
||||
public R<Map<Integer, BdGrade>> getGrade() {
|
||||
Map<Integer, BdGrade> gradeMap = new HashMap<>();
|
||||
|
||||
List<BdGrade> gradeList = iBdGradeService.queryGradeConfigByCondition(null);
|
||||
for (BdGrade bdGrade : gradeList) {
|
||||
gradeMap.put(bdGrade.getPkId(), bdGrade);
|
||||
}
|
||||
return R.ok(gradeMap);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -72,7 +72,9 @@ public class BdGradeServiceImpl extends ServiceImpl<BdGradeMapper, BdGrade> impl
|
|||
@Override
|
||||
public List<BdGrade> queryGradeConfigByCondition(Integer pkCountry) {
|
||||
LambdaQueryWrapper<BdGrade> queryWrapper = new LambdaQueryWrapper<>();
|
||||
queryWrapper.eq(BdGrade::getPkCountry, pkCountry);
|
||||
if (pkCountry != null) {
|
||||
queryWrapper.eq(BdGrade::getPkCountry, pkCountry);
|
||||
}
|
||||
queryWrapper.eq(BdGrade::getEnableState, EnableStatus.ENABLE.getValue());
|
||||
queryWrapper.le(BdGrade::getGradeValue, EGrade.S_VIP.getValue());
|
||||
queryWrapper.orderByDesc(BdGrade::getGradeValue);
|
||||
|
|
|
@ -0,0 +1,19 @@
|
|||
package com.hzs.common.domain.member.bonus.ext;
|
||||
|
||||
import com.hzs.common.domain.member.bonus.CuMemberBonusDelay;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
|
||||
/**
|
||||
* 会员奖金-拓展收益延缓表 扩散表
|
||||
*/
|
||||
@EqualsAndHashCode(callSuper = true)
|
||||
@Data
|
||||
public class CuMemberBonusDelayExt extends CuMemberBonusDelay {
|
||||
|
||||
/**
|
||||
* 会员等级
|
||||
*/
|
||||
private Integer pkGrade;
|
||||
|
||||
}
|
|
@ -1,5 +1,6 @@
|
|||
package com.hzs.common.domain.member.ext;
|
||||
|
||||
import com.baomidou.mybatisplus.annotation.TableField;
|
||||
import com.hzs.common.domain.member.achieve.CuMemberTree;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
|
@ -423,5 +424,17 @@ public class CuMemberSettleExt extends CuMemberTree {
|
|||
* 拓展收益延缓发放奖金
|
||||
*/
|
||||
private BigDecimal unGrantIncome;
|
||||
/**
|
||||
* 收益发放前
|
||||
*/
|
||||
private BigDecimal beforeGrantIncome;
|
||||
/**
|
||||
* 发放收益
|
||||
*/
|
||||
private BigDecimal grantIncome;
|
||||
/**
|
||||
* 收益发放后
|
||||
*/
|
||||
private BigDecimal afterGrantIncome;
|
||||
|
||||
}
|
||||
|
|
|
@ -64,7 +64,7 @@ public class BdGrade extends BaseEntity {
|
|||
*/
|
||||
@Excel(name = "注册金额/业绩")
|
||||
@TableField("START_VALUE")
|
||||
@BigDecimalFormat()
|
||||
@BigDecimalFormat
|
||||
private BigDecimal startValue;
|
||||
/**
|
||||
* 注册权限
|
||||
|
|
Loading…
Reference in New Issue