## 拓展收益延缓发放相关处理;

This commit is contained in:
cabbage 2025-04-17 15:00:01 +08:00
parent 157d586044
commit 45b54b0753
16 changed files with 375 additions and 52 deletions

View File

@ -110,4 +110,11 @@ public interface IGradeServiceApi {
*/
R<BdGrade> getLastGrade(BigDecimal achieve, Integer pkCountry);
/**
* 获取所有等级
*
* @return
*/
R<Map<Integer, BdGrade>> getGrade();
}

View File

@ -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);
}

View File

@ -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);
}

View File

@ -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);
}
}
}
}

View File

@ -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);
}
}
/**
* 记录需要修改的会员结算表数据, 安置的
*

View File

@ -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;
}

View File

@ -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);
}
}

View File

@ -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 &lt;= 2)
</delete>
<!-- 批量插入会员延缓发放明细表 -->
<insert id="batchInsertCuMemberBonusDelayDetail">
insert ALL
<foreach item="item" index="index" collection="CuMemberBonusDelayDetail" separator=" ">

View File

@ -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 &lt;= 2)
where period = #{period}
and grant_status &lt;= 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>

View File

@ -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,

View File

@ -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

View File

@ -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);
}
}

View File

@ -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);

View File

@ -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;
}

View File

@ -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;
}

View File

@ -64,7 +64,7 @@ public class BdGrade extends BaseEntity {
*/
@Excel(name = "注册金额/业绩")
@TableField("START_VALUE")
@BigDecimalFormat()
@BigDecimalFormat
private BigDecimal startValue;
/**
* 注册权限