## 阶段收益入库操作;封装阶段收益使用备注等;

This commit is contained in:
cabbage 2025-09-21 10:47:40 +08:00
parent 656f6278eb
commit e3fae413a6
11 changed files with 203 additions and 67 deletions

View File

@ -2,10 +2,23 @@ package com.hzs.bonus.bonus.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.hzs.common.domain.member.bonus.CuMemberBonusStage; import com.hzs.common.domain.member.bonus.CuMemberBonusStage;
import org.apache.ibatis.annotations.Param;
import java.util.List;
/** /**
* 会员奖金-阶段收益明细表 Mapper 接口 * 会员奖金-阶段收益明细表 Mapper 接口
*/ */
public interface CuMemberBonusStageMapper extends BaseMapper<CuMemberBonusStage> { public interface CuMemberBonusStageMapper extends BaseMapper<CuMemberBonusStage> {
/**
* 删除会员阶段奖金表
*/
void deleteCuMemberBonusStage(Integer period);
/**
* 批量插入会员阶段奖
*/
void batchInsertCuMemberBonusStage(@Param("cuMemberBonusStageList") List<?> cuMemberBonusStageList);
} }

View File

@ -3,15 +3,35 @@ package com.hzs.bonus.bonus.service;
import com.baomidou.mybatisplus.extension.service.IService; import com.baomidou.mybatisplus.extension.service.IService;
import com.hzs.common.domain.member.achieve.CuMemberRetailDetail; import com.hzs.common.domain.member.achieve.CuMemberRetailDetail;
import com.hzs.common.domain.member.achieve.ext.CuMemberRetailRangeExt; import com.hzs.common.domain.member.achieve.ext.CuMemberRetailRangeExt;
import com.hzs.common.domain.member.bonus.CuMemberBonus;
import com.hzs.common.domain.member.bonus.CuMemberBonusStage; import com.hzs.common.domain.member.bonus.CuMemberBonusStage;
import com.hzs.common.domain.sale.ext.SaOrderExt;
import java.util.List;
import java.util.Map; import java.util.Map;
import java.util.Set;
/** /**
* 会员奖金-阶段收益明细表 服务类 * 会员奖金-阶段收益明细表 服务类
*/ */
public interface ICuMemberBonusStageService extends IService<CuMemberBonusStage> { public interface ICuMemberBonusStageService extends IService<CuMemberBonusStage> {
/**
* 删除会员阶段奖金表
*/
void deleteCuMemberBonusStage(Integer period);
/**
* 批量插入会员阶段奖
*/
void batchInsertCuMemberBonusStage(List<CuMemberBonusStage> cuMemberBonusStageList, Set<Long> memberIdSet);
/**
* 获取阶段收益信息
*/
CuMemberBonusStage getCuMemberBonusStage(SaOrderExt saOrderExt, CuMemberRetailRangeExt cuMemberRetailRange,
CuMemberBonus cuMemberBonus, Integer pkBonusItems);
/** /**
* 填充会员点位 * 填充会员点位
*/ */
@ -38,4 +58,5 @@ public interface ICuMemberBonusStageService extends IService<CuMemberBonusStage>
CuMemberRetailDetail newRetailDetail, CuMemberRetailDetail newParentRetailDetail, CuMemberRetailDetail newRetailDetail, CuMemberRetailDetail newParentRetailDetail,
String rangeTableName, String rangeDetailTableName, String newNode); String rangeTableName, String rangeDetailTableName, String newNode);
} }

View File

@ -79,6 +79,19 @@ public abstract class BonusSettleHandle {
} }
/**
* 获得 阶段收益 备注
*/
protected void stageIncomeRemark(SaOrderExt saOrderExt, CuMemberBonusStage cuMemberBonusStage,
CuMemberRetailRangeExt sourceMember, CuMemberRetailRangeExt targetMember) {
String remark = String.format(BonusMsgConstants.STAGE_INCOME, saOrderExt.getOrderCode(),
sourceMember.getMemberCode() + sourceMember.getMemberName(),
targetMember.getMemberCode() + targetMember.getMemberName(),
cuMemberBonusStage.getChildNode(), cuMemberBonusStage.getStage());
cuMemberBonusStage.setRemark(remark);
}
/** /**
* 获得 直推级差收益的备注 * 获得 直推级差收益的备注
* *

View File

@ -354,6 +354,9 @@ public class BonusSettleRangeHandle extends BonusSettleHandle {
if (cuMemberBonusPushList.size() > 0) { if (cuMemberBonusPushList.size() > 0) {
bonusRecordDetailVO.setCuMemberBonusPushList(cuMemberBonusPushList); bonusRecordDetailVO.setCuMemberBonusPushList(cuMemberBonusPushList);
} }
if (cuMemberBonusStageList.size() > 0) {
bonusRecordDetailVO.setCuMemberBonusStageList(cuMemberBonusStageList);
}
if (cuMemberBonusRangeList.size() > 0) { if (cuMemberBonusRangeList.size() > 0) {
bonusRecordDetailVO.setCuMemberBonusRangeList(cuMemberBonusRangeList); bonusRecordDetailVO.setCuMemberBonusRangeList(cuMemberBonusRangeList);
} }

View File

@ -40,22 +40,23 @@ public class BonusSettleServiceImpl implements IBonusSettleService {
@Autowired @Autowired
private IBonusOrderService iBonusOrderService; private IBonusOrderService iBonusOrderService;
@Autowired @Autowired
private ICuMemberSettlePeriodService cuMemberSettlePeriodService;
@Autowired
private BonusSettleRangeHandle bonusSettleRangeHandle; private BonusSettleRangeHandle bonusSettleRangeHandle;
@Autowired @Autowired
private ICuMemberBonusService cuMemberBonusService; private ICuMemberSettlePeriodService iCuMemberSettlePeriodService;
@Autowired @Autowired
private ICuMemberBonusPushService cuMemberBonusPushService; private ICuMemberBonusService iCuMemberBonusService;
@Autowired @Autowired
private ICuMemberBonusRangeService cuMemberBonusRangeService; private ICuMemberBonusPushService iCuMemberBonusPushService;
@Autowired @Autowired
private ICuMemberBonusDetailService cuMemberBonusDetailService; private ICuMemberBonusStageService iCuMemberBonusStageService;
@Autowired
private ICuMemberBonusRangeService iCuMemberBonusRangeService;
@Autowired
private ICuMemberBonusDetailService iCuMemberBonusDetailService;
@Autowired @Autowired
private ICuMemberRetailRangeService iCuMemberRetailRangeService; private ICuMemberRetailRangeService iCuMemberRetailRangeService;
@Autowired @Autowired
private ICuMemberService cuMemberService; private ICuMemberService iCuMemberService;
/** /**
@ -68,8 +69,8 @@ public class BonusSettleServiceImpl implements IBonusSettleService {
List<CuMemberBonus> cuMemberBonusList = setCuMemberBonusSeq(settleDate, cuMemberBonusMap); List<CuMemberBonus> cuMemberBonusList = setCuMemberBonusSeq(settleDate, cuMemberBonusMap);
if (cuMemberBonusList.size() > 0) { if (cuMemberBonusList.size() > 0) {
// 插入奖金主表 // 插入奖金主表
cuMemberBonusService.insertOrUpdateCuMemberBonus(cuMemberBonusList); iCuMemberBonusService.insertOrUpdateCuMemberBonus(cuMemberBonusList);
List<CuMemberBonus> cuMemberBonuses = cuMemberBonusService.queryCuMemberBonus(period, cuMemberBonusList); List<CuMemberBonus> cuMemberBonuses = iCuMemberBonusService.queryCuMemberBonus(period, cuMemberBonusList);
cuMemberBonuses.forEach(cuMemberBonus -> cuMemberBonusMap.put(cuMemberBonus.getPkMember(), cuMemberBonus)); cuMemberBonuses.forEach(cuMemberBonus -> cuMemberBonusMap.put(cuMemberBonus.getPkMember(), cuMemberBonus));
} }
} }
@ -79,10 +80,10 @@ public class BonusSettleServiceImpl implements IBonusSettleService {
public void calculateCuMemberBonus(String settleDate) { public void calculateCuMemberBonus(String settleDate) {
try { try {
// 结算期间 // 结算期间
Integer period = cuMemberSettlePeriodService.getCuMemberSettlePeriodByDate(settleDate).getPkId(); Integer period = iCuMemberSettlePeriodService.getCuMemberSettlePeriodByDate(settleDate).getPkId();
String yesterday = DateUtils.beforeDateStr(1, ChronoUnit.DAYS, DateUtils.YYYY_MM_DD, settleDate); String yesterday = DateUtils.beforeDateStr(1, ChronoUnit.DAYS, DateUtils.YYYY_MM_DD, settleDate);
// 结算期间前一天期间 // 结算期间前一天期间
Integer yesterdayPeriod = cuMemberSettlePeriodService.getCuMemberSettlePeriodByDate(yesterday).getPkId(); Integer yesterdayPeriod = iCuMemberSettlePeriodService.getCuMemberSettlePeriodByDate(yesterday).getPkId();
// 获取所有国家的奖金项 key = 国家 + 奖金项的值 // 获取所有国家的奖金项 key = 国家 + 奖金项的值
BonusConfigDTO bonusConfigDTO = iBonusItemsServiceApi.queryBonusConfigDTO().getData(); BonusConfigDTO bonusConfigDTO = iBonusItemsServiceApi.queryBonusConfigDTO().getData();
@ -121,10 +122,10 @@ public class BonusSettleServiceImpl implements IBonusSettleService {
// 处理奖金结算秒结表判断是否存在当天结算的秒接表从cu_member中获取网体从昨日结算表中获取累计结余数据 // 处理奖金结算秒结表判断是否存在当天结算的秒接表从cu_member中获取网体从昨日结算表中获取累计结余数据
// 今天结算期数 // 今天结算期数
String settleDate = DateUtils.parseDateToStr(DateUtils.YYYY_MM_DD, saOrderExt.getPayTime()); String settleDate = DateUtils.parseDateToStr(DateUtils.YYYY_MM_DD, saOrderExt.getPayTime());
int currentPeriod = cuMemberSettlePeriodService.getCuMemberSettlePeriodByDate(settleDate).getPkId(); int currentPeriod = iCuMemberSettlePeriodService.getCuMemberSettlePeriodByDate(settleDate).getPkId();
// 昨天结算期数 // 昨天结算期数
String beforeDay = DateUtils.parseDateToStr(DateUtils.YYYY_MM_DD, DateUtils.beforeDate(1, ChronoUnit.DAYS, saOrderExt.getPayTime())); String beforeDay = DateUtils.parseDateToStr(DateUtils.YYYY_MM_DD, DateUtils.beforeDate(1, ChronoUnit.DAYS, saOrderExt.getPayTime()));
int beforePeriod = cuMemberSettlePeriodService.getCuMemberSettlePeriodByDate(beforeDay).getPkId(); int beforePeriod = iCuMemberSettlePeriodService.getCuMemberSettlePeriodByDate(beforeDay).getPkId();
// 秒结表名 // 秒结表名
String secondRangeTableName = TableNameConstants.CU_MEMBER_RETAIL_S + currentPeriod; String secondRangeTableName = TableNameConstants.CU_MEMBER_RETAIL_S + currentPeriod;
@ -137,28 +138,28 @@ public class BonusSettleServiceImpl implements IBonusSettleService {
secondRangeTableName, beforePeriod, currentPeriod, cuMemberBonusMap, cuMemberBonusDetailList); secondRangeTableName, beforePeriod, currentPeriod, cuMemberBonusMap, cuMemberBonusDetailList);
saveCuMemberBonus(currentPeriod, settleDate, cuMemberBonusMap); saveCuMemberBonus(currentPeriod, settleDate, cuMemberBonusMap);
Set<Long> memberIdSet = cuMemberBonusService.queryMemberBonusByPeriod(currentPeriod); Set<Long> memberIdSet = iCuMemberBonusService.queryMemberBonusByPeriod(currentPeriod);
if (cuMemberBonusRangeList.size() > 0) { if (cuMemberBonusRangeList.size() > 0) {
cuMemberBonusRangeList.forEach(cuMemberBonusRange -> cuMemberBonusRangeList.forEach(cuMemberBonusRange ->
cuMemberBonusRange.setPkBonus(cuMemberBonusMap.get(cuMemberBonusRange.getPkBonus()).getPkId())); cuMemberBonusRange.setPkBonus(cuMemberBonusMap.get(cuMemberBonusRange.getPkBonus()).getPkId()));
cuMemberBonusRangeService.batchInsertCuMemberBonusRange(cuMemberBonusRangeList, memberIdSet); iCuMemberBonusRangeService.batchInsertCuMemberBonusRange(cuMemberBonusRangeList, memberIdSet);
} }
if (cuMemberBonusDetailList.size() > 0) { if (cuMemberBonusDetailList.size() > 0) {
cuMemberBonusDetailList.forEach(cuMemberBonusDetail -> cuMemberBonusDetailList.forEach(cuMemberBonusDetail ->
cuMemberBonusDetail.setPkBonus(cuMemberBonusMap.get(cuMemberBonusDetail.getPkBonus()).getPkId())); cuMemberBonusDetail.setPkBonus(cuMemberBonusMap.get(cuMemberBonusDetail.getPkBonus()).getPkId()));
cuMemberBonusDetailService.batchInsertCuMemberBonusDetail(cuMemberBonusDetailList, memberIdSet); iCuMemberBonusDetailService.batchInsertCuMemberBonusDetail(cuMemberBonusDetailList, memberIdSet);
} }
} else { } else {
// 订单撤单处理逆向 // 订单撤单处理逆向
if (!DateUtils.isSameDay(saOrderExt.getPayTime(), DateUtils.currentDate())) { if (!DateUtils.isSameDay(saOrderExt.getPayTime(), DateUtils.currentDate())) {
settleDate = DateUtils.parseDateToFormat(DateUtils.YYYY_MM_DD, DateUtils.beforeDate(1, ChronoUnit.DAYS)); settleDate = DateUtils.parseDateToFormat(DateUtils.YYYY_MM_DD, DateUtils.beforeDate(1, ChronoUnit.DAYS));
currentPeriod = cuMemberSettlePeriodService.getCuMemberSettlePeriodByDate(settleDate).getPkId(); currentPeriod = iCuMemberSettlePeriodService.getCuMemberSettlePeriodByDate(settleDate).getPkId();
} }
// 实时计算撤单数据业绩等级奖衔日奖 // 实时计算撤单数据业绩等级奖衔日奖
bonusSettleRangeHandle.calculateCuMemberBackRetailIncome(saOrderExt, bonusConfigDTO, bonusSettleRangeHandle.calculateCuMemberBackRetailIncome(saOrderExt, bonusConfigDTO,
secondRangeTableName, beforePeriod, currentPeriod); secondRangeTableName, beforePeriod, currentPeriod);
// 处理收益 // 处理收益
cuMemberBonusService.mergeBackMemberBonusIncome(saOrderExt.getPkId()); iCuMemberBonusService.mergeBackMemberBonusIncome(saOrderExt.getPkId());
} }
} }
} }
@ -177,11 +178,11 @@ public class BonusSettleServiceImpl implements IBonusSettleService {
} }
// 今天结算期数 // 今天结算期数
String settleDate = DateUtils.parseDateToStr(DateUtils.YYYY_MM_DD, orderExt.getPayTime()); String settleDate = DateUtils.parseDateToStr(DateUtils.YYYY_MM_DD, orderExt.getPayTime());
int currentPeriod = cuMemberSettlePeriodService.getCuMemberSettlePeriodByDate(settleDate).getPkId(); int currentPeriod = iCuMemberSettlePeriodService.getCuMemberSettlePeriodByDate(settleDate).getPkId();
// 秒结表名 // 秒结表名
String secondRangeTableName = TableNameConstants.CU_MEMBER_RETAIL_S + currentPeriod; String secondRangeTableName = TableNameConstants.CU_MEMBER_RETAIL_S + currentPeriod;
List<CuMemberExt> memberList = iCuMemberRetailRangeService.findParentMemberList(orderExt.getPkMember()); List<CuMemberExt> memberList = iCuMemberRetailRangeService.findParentMemberList(orderExt.getPkMember());
CuMember self = cuMemberService.getById(orderExt.getPkId()); CuMember self = iCuMemberService.getById(orderExt.getPkId());
iCuMemberRetailRangeService.updateMemberRetailSecondRangeSelf(secondRangeTableName, orderExt, self, updateType, symbol); iCuMemberRetailRangeService.updateMemberRetailSecondRangeSelf(secondRangeTableName, orderExt, self, updateType, symbol);
iCuMemberRetailRangeService.updateMemberRetailSecondRangeParent(secondRangeTableName, orderExt, memberList, updateType, symbol); iCuMemberRetailRangeService.updateMemberRetailSecondRangeParent(secondRangeTableName, orderExt, memberList, updateType, symbol);
} }
@ -193,10 +194,11 @@ public class BonusSettleServiceImpl implements IBonusSettleService {
* @param bonusRecordDetailVO 奖金明细表 * @param bonusRecordDetailVO 奖金明细表
*/ */
void insertCuMemberBonus(String settleDate, Integer period, Map<Long, CuMemberBonus> cuMemberBonusMap, BonusRecordDetailVO bonusRecordDetailVO) { void insertCuMemberBonus(String settleDate, Integer period, Map<Long, CuMemberBonus> cuMemberBonusMap, BonusRecordDetailVO bonusRecordDetailVO) {
cuMemberBonusPushService.deleteCuMemberBonusPush(period); iCuMemberBonusPushService.deleteCuMemberBonusPush(period);
cuMemberBonusDetailService.deleteCuMemberBonusDetail(period); iCuMemberBonusStageService.deleteCuMemberBonusStage(period);
cuMemberBonusRangeService.deleteCuMemberBonusRange(period); iCuMemberBonusDetailService.deleteCuMemberBonusDetail(period);
cuMemberBonusService.deleteCuMemberBonus(period); iCuMemberBonusRangeService.deleteCuMemberBonusRange(period);
iCuMemberBonusService.deleteCuMemberBonus(period);
if (cuMemberBonusMap.size() == 0) { if (cuMemberBonusMap.size() == 0) {
return; return;
} }
@ -207,11 +209,17 @@ public class BonusSettleServiceImpl implements IBonusSettleService {
List<CuMemberBonusPush> cuMemberBonusPushList = bonusRecordDetailVO.getCuMemberBonusPushList(); List<CuMemberBonusPush> cuMemberBonusPushList = bonusRecordDetailVO.getCuMemberBonusPushList();
List<CuMemberBonusDetail> cuMemberBonusDetailList = bonusRecordDetailVO.getCuMemberBonusDetailList(); List<CuMemberBonusDetail> cuMemberBonusDetailList = bonusRecordDetailVO.getCuMemberBonusDetailList();
List<CuMemberBonusRange> cuMemberBonusRangeList = bonusRecordDetailVO.getCuMemberBonusRangeList(); List<CuMemberBonusRange> cuMemberBonusRangeList = bonusRecordDetailVO.getCuMemberBonusRangeList();
// 阶段收益奖金明细
List<CuMemberBonusStage> cuMemberBonusStageList = bonusRecordDetailVO.getCuMemberBonusStageList();
if (cuMemberBonusPushList != null && cuMemberBonusPushList.size() > 0) { if (cuMemberBonusPushList != null && cuMemberBonusPushList.size() > 0) {
cuMemberBonusPushList.forEach(cuMemberBonusPush -> cuMemberBonusPushList.forEach(cuMemberBonusPush ->
cuMemberBonusPush.setPkBonus(cuMemberBonusMap.get(cuMemberBonusPush.getPkBonus()).getPkId())); cuMemberBonusPush.setPkBonus(cuMemberBonusMap.get(cuMemberBonusPush.getPkBonus()).getPkId()));
batchMemberBonusPushList.addAll(cuMemberBonusPushList); batchMemberBonusPushList.addAll(cuMemberBonusPushList);
} }
if (cuMemberBonusStageList != null && cuMemberBonusStageList.size() > 0) {
cuMemberBonusStageList.forEach(cuMemberBonusStage ->
cuMemberBonusStage.setPkBonus(cuMemberBonusMap.get(cuMemberBonusStage.getPkBonus()).getPkId()));
}
if (cuMemberBonusDetailList != null && cuMemberBonusDetailList.size() > 0) { if (cuMemberBonusDetailList != null && cuMemberBonusDetailList.size() > 0) {
cuMemberBonusDetailList.forEach(cuMemberBonusDetail -> cuMemberBonusDetailList.forEach(cuMemberBonusDetail ->
cuMemberBonusDetail.setPkBonus(cuMemberBonusMap.get(cuMemberBonusDetail.getPkBonus()).getPkId())); cuMemberBonusDetail.setPkBonus(cuMemberBonusMap.get(cuMemberBonusDetail.getPkBonus()).getPkId()));
@ -223,15 +231,16 @@ public class BonusSettleServiceImpl implements IBonusSettleService {
batchMemberBonusRangeList.addAll(cuMemberBonusRangeList); batchMemberBonusRangeList.addAll(cuMemberBonusRangeList);
} }
// 插入奖金主表 // 插入奖金主表
cuMemberBonusService.batchInsertCuMemberBonus(cuMemberBonusList); iCuMemberBonusService.batchInsertCuMemberBonus(cuMemberBonusList);
Set<Long> memberIdSet = cuMemberBonusService.queryMemberBonusByPeriod(period); Set<Long> memberIdSet = iCuMemberBonusService.queryMemberBonusByPeriod(period);
cuMemberBonusPushService.batchInsertCuMemberBonusPush(batchMemberBonusPushList, memberIdSet); iCuMemberBonusPushService.batchInsertCuMemberBonusPush(batchMemberBonusPushList, memberIdSet);
cuMemberBonusDetailService.batchInsertCuMemberBonusDetail(batchMemberBonusDetailList, memberIdSet); iCuMemberBonusStageService.batchInsertCuMemberBonusStage(cuMemberBonusStageList, memberIdSet);
cuMemberBonusRangeService.batchInsertCuMemberBonusRange(batchMemberBonusRangeList, memberIdSet); iCuMemberBonusDetailService.batchInsertCuMemberBonusDetail(batchMemberBonusDetailList, memberIdSet);
iCuMemberBonusRangeService.batchInsertCuMemberBonusRange(batchMemberBonusRangeList, memberIdSet);
} }
private List<CuMemberBonus> setCuMemberBonusSeq(String settleDate, Map<Long, CuMemberBonus> cuMemberBonusMap) { private List<CuMemberBonus> setCuMemberBonusSeq(String settleDate, Map<Long, CuMemberBonus> cuMemberBonusMap) {
List<Long> pkIdList = cuMemberBonusService.batchQueryCuMemberBonusSeq(cuMemberBonusMap.size()); List<Long> pkIdList = iCuMemberBonusService.batchQueryCuMemberBonusSeq(cuMemberBonusMap.size());
int i = 0; int i = 0;
// 判断时间重算的时候直接是已公布 // 判断时间重算的时候直接是已公布
Integer grantStatus = EGrantStatus.SETTLED.getValue(); Integer grantStatus = EGrantStatus.SETTLED.getValue();

View File

@ -5,23 +5,26 @@ import cn.hutool.core.util.ObjectUtil;
import cn.hutool.core.util.ReflectUtil; import cn.hutool.core.util.ReflectUtil;
import com.hzs.bonus.achieve.mapper.CuMemberRetailRangeMapper; import com.hzs.bonus.achieve.mapper.CuMemberRetailRangeMapper;
import com.hzs.bonus.achieve.service.ICuMemberRetailDetailService; import com.hzs.bonus.achieve.service.ICuMemberRetailDetailService;
import com.hzs.bonus.achieve.service.impl.CuMemberBonusSettle;
import com.hzs.bonus.bonus.mapper.CuMemberBonusStageMapper; import com.hzs.bonus.bonus.mapper.CuMemberBonusStageMapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.hzs.bonus.bonus.service.ICuMemberBonusStageService; import com.hzs.bonus.bonus.service.ICuMemberBonusStageService;
import com.hzs.bonus.constant.BonusConstants; import com.hzs.bonus.constant.BonusConstants;
import com.hzs.common.core.constant.MagicNumberConstants;
import com.hzs.common.core.enums.EBonusStage; import com.hzs.common.core.enums.EBonusStage;
import com.hzs.common.core.enums.ECalType;
import com.hzs.common.domain.member.achieve.CuMemberRetailDetail; import com.hzs.common.domain.member.achieve.CuMemberRetailDetail;
import com.hzs.common.domain.member.achieve.ext.CuMemberRetailRangeExt; import com.hzs.common.domain.member.achieve.ext.CuMemberRetailRangeExt;
import com.hzs.common.domain.member.bonus.CuMemberBonus;
import com.hzs.common.domain.member.bonus.CuMemberBonusStage; import com.hzs.common.domain.member.bonus.CuMemberBonusStage;
import com.hzs.common.domain.sale.ext.SaOrderExt;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import javax.annotation.Resource; import javax.annotation.Resource;
import java.lang.reflect.Field; import java.lang.reflect.Field;
import java.util.ArrayList; import java.math.BigDecimal;
import java.util.HashMap; import java.util.*;
import java.util.List;
import java.util.Map;
/** /**
* 会员奖金-阶段收益明细表 服务实现类 * 会员奖金-阶段收益明细表 服务实现类
@ -29,12 +32,63 @@ import java.util.Map;
@Service @Service
public class CuMemberBonusStageServiceImpl extends ServiceImpl<CuMemberBonusStageMapper, CuMemberBonusStage> implements ICuMemberBonusStageService { public class CuMemberBonusStageServiceImpl extends ServiceImpl<CuMemberBonusStageMapper, CuMemberBonusStage> implements ICuMemberBonusStageService {
@Autowired
private CuMemberBonusSettle cuMemberBonusSettle;
@Autowired @Autowired
private ICuMemberRetailDetailService iCuMemberRetailDetailService; private ICuMemberRetailDetailService iCuMemberRetailDetailService;
@Resource @Resource
private CuMemberRetailRangeMapper cuMemberRetailRangeMapper; private CuMemberRetailRangeMapper cuMemberRetailRangeMapper;
@Override
public void deleteCuMemberBonusStage(Integer period) {
baseMapper.deleteCuMemberBonusStage(period);
}
@Override
public void batchInsertCuMemberBonusStage(List<CuMemberBonusStage> cuMemberBonusStageList, Set<Long> memberIdSet) {
if (cuMemberBonusStageList.size() == 0) {
return;
}
List<CuMemberBonusStage> addMemberBonusStageList = new ArrayList<>();
for (CuMemberBonusStage cuMemberBonusStage : cuMemberBonusStageList) {
if (memberIdSet.contains(cuMemberBonusStage.getPkBonus())) {
addMemberBonusStageList.add(cuMemberBonusStage);
}
}
if (addMemberBonusStageList.size() == 0) {
return;
}
List<List<?>> lists = cuMemberBonusSettle.handleCutList(addMemberBonusStageList);
lists.forEach(list ->
baseMapper.batchInsertCuMemberBonusStage(list));
}
/**
* 获取阶段收益信息
*/
@Override
public CuMemberBonusStage getCuMemberBonusStage(SaOrderExt saOrderExt, CuMemberRetailRangeExt cuMemberRetailRange, CuMemberBonus cuMemberBonus, Integer pkBonusItems) {
CuMemberBonusStage cuMemberBonusStage = CuMemberBonusStage.builder()
.pkBonus(cuMemberBonus.getPkId())
.pkOrder(saOrderExt.getPkId())
.pkBonusItems(pkBonusItems)
.incomeStatus(cuMemberRetailRange.getIncomeStatus())
.calType(ECalType.VALUE.getValue())
.calAchieve(BigDecimal.ZERO)
.calValue(BigDecimal.ZERO)
.pretaxIncome(BigDecimal.ZERO)
.incomeTax(BigDecimal.ZERO)
.realIncome(BigDecimal.ZERO)
.incomeRatio(BigDecimal.ZERO)
.incomeDialRatio(BigDecimal.ZERO)
.orderDialRatio(BigDecimal.ZERO)
.build();
cuMemberBonusStage.setPkCountry(cuMemberRetailRange.getPkSettleCountry());
cuMemberBonusStage.setPkCreator(MagicNumberConstants.PK_ADMIN);
return cuMemberBonusStage;
}
private void initFieldMap() { private void initFieldMap() {
BonusConstants.FIELD_MAP = new HashMap<>(); BonusConstants.FIELD_MAP = new HashMap<>();
for (String suffix : BonusConstants.FIELD_LIST) { for (String suffix : BonusConstants.FIELD_LIST) {

View File

@ -18,10 +18,15 @@ public class BonusRecordDetailVO implements Serializable {
private Long pkMember; private Long pkMember;
/** /**
* * 直推收益见点收益
*/ */
private List<CuMemberBonusPush> cuMemberBonusPushList; private List<CuMemberBonusPush> cuMemberBonusPushList;
/**
* 阶段收益
*/
private List<CuMemberBonusStage> cuMemberBonusStageList;
/** /**
* 新零售 - 区域分红月度分红 * 新零售 - 区域分红月度分红
*/ */

View File

@ -2,31 +2,36 @@
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <!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.CuMemberBonusStageMapper"> <mapper namespace="com.hzs.bonus.bonus.mapper.CuMemberBonusStageMapper">
<!-- 通用查询映射结果 --> <!-- 删除会员阶段奖金表 -->
<resultMap id="BaseResultMap" type="com.hzs.common.domain.member.bonus.CuMemberBonusStage"> <delete id="deleteCuMemberBonusStage">
<id column="PK_ID" property="pkId"/> delete
<result column="DEL_FLAG" property="delFlag"/> from CU_MEMBER_BONUS_STAGE
<result column="PK_COUNTRY" property="pkCountry"/> where PK_BONUS in (
<result column="PK_CREATOR" property="pkCreator"/> select pk_id
<result column="CREATION_TIME" property="creationTime"/> from cu_member_bonus
<result column="PK_MODIFIED" property="pkModified"/> where period = #{period}
<result column="MODIFIED_TIME" property="modifiedTime"/> and grant_status &lt;= 2)
<result column="PK_BONUS" property="pkBonus"/> </delete>
<result column="PK_ORDER" property="pkOrder"/>
<result column="PK_BONUS_ITEMS" property="pkBonusItems"/> <!-- 批量插入会员阶段奖 -->
<result column="INCOME_STATUS" property="incomeStatus"/> <insert id="batchInsertCuMemberBonusStage">
<result column="CAL_TYPE" property="calType"/> insert ALL
<result column="CAL_ACHIEVE" property="calAchieve"/> <foreach item="item" index="index" collection="cuMemberBonusStageList" separator=" ">
<result column="CAL_VALUE" property="calValue"/> into cu_member_bonus_stage (
<result column="PRETAX_INCOME" property="pretaxIncome"/> pk_bonus, pk_order, pk_bonus_items, income_status,
<result column="INCOME_TAX" property="incomeTax"/> cal_type, cal_achieve, cal_value,
<result column="REAL_INCOME" property="realIncome"/> pretax_income, income_tax, real_income, remark,
<result column="REMARK" property="remark"/> income_ratio, income_dial_ratio, order_dial_ratio,
<result column="INCOME_RATIO" property="incomeRatio"/> pk_creator, child_node, stage, stage_num)
<result column="INCOME_DIAL_RATIO" property="incomeDialRatio"/> values (
<result column="ORDER_DIAL_RATIO" property="orderDialRatio"/> #{item.pkBonus}, #{item.pkOrder}, #{item.pkBonusItems}, #{item.incomeStatus},
<result column="STAGE" property="stage"/> #{item.calType}, #{item.calAchieve}, #{item.calValue},
<result column="STAGE_NUM" property="stageNum"/> #{item.pretaxIncome}, #{item.incomeTax}, #{item.realIncome},
</resultMap> #{item.round}, #{item.second}, #{item.remark},
#{item.incomeRatio}, #{item.incomeDialRatio}, #{item.orderDialRatio},
#{item.pkCreator}, #{item.childNode}, #{item.stage}, #{item.stageNum})
</foreach>
SELECT 1 FROM dual
</insert>
</mapper> </mapper>

View File

@ -15,6 +15,11 @@ public class BonusMsgConstants {
*/ */
public static String REPUR_DIRECT_INCOME = "订单编号%s,%s为%s贡献了第%s代见点收益,计算业绩%f,计算比例%f。"; public static String REPUR_DIRECT_INCOME = "订单编号%s,%s为%s贡献了第%s代见点收益,计算业绩%f,计算比例%f。";
/**
* 阶段 收益说明
*/
public static String STAGE_INCOME = "订单编号%s,%s为%s贡献了阶段收益,%s子点位%s阶段。";
/** /**
* 直推级差收益说明 * 直推级差收益说明
*/ */

View File

@ -50,7 +50,7 @@ public class CuMemberBonus extends BaseEntity {
private Integer pkRate; private Integer pkRate;
/** /**
* 注册直推收益- * 注册直推收益-
*/ */
@TableField("DIRECT_INCOME") @TableField("DIRECT_INCOME")
private BigDecimal directIncome; private BigDecimal directIncome;
@ -176,7 +176,7 @@ public class CuMemberBonus extends BaseEntity {
private BigDecimal repurCouponSubtotal; private BigDecimal repurCouponSubtotal;
/** /**
* 复购见点收益- * 复购见点收益-
*/ */
@TableField("GLOBAL_POINTS") @TableField("GLOBAL_POINTS")
private BigDecimal globalPoints; private BigDecimal globalPoints;
@ -188,7 +188,7 @@ public class CuMemberBonus extends BaseEntity {
private BigDecimal carAwardPoints; private BigDecimal carAwardPoints;
/** /**
* 注册阶段收益- * 注册阶段收益-
*/ */
@TableField("STORE_INCOME") @TableField("STORE_INCOME")
private BigDecimal storeIncome; private BigDecimal storeIncome;

View File

@ -7,13 +7,15 @@ import com.baomidou.mybatisplus.annotation.TableName;
import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableField;
import com.hzs.common.core.web.domain.BaseEntity; import com.hzs.common.core.web.domain.BaseEntity;
import lombok.Data; import lombok.*;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors; import lombok.experimental.Accessors;
/** /**
* 会员奖金-阶段收益明细表 * 会员奖金-阶段收益明细表
*/ */
@Builder
@AllArgsConstructor
@NoArgsConstructor
@Data @Data
@EqualsAndHashCode(callSuper = true) @EqualsAndHashCode(callSuper = true)
@Accessors(chain = true) @Accessors(chain = true)
@ -113,6 +115,12 @@ public class CuMemberBonusStage extends BaseEntity {
@TableField("ORDER_DIAL_RATIO") @TableField("ORDER_DIAL_RATIO")
private BigDecimal orderDialRatio; private BigDecimal orderDialRatio;
/**
* 会员子节点
*/
@TableField("CHILD_NODE")
private Integer childNode;
/** /**
* 三个阶段123 * 三个阶段123
*/ */