## 复购见点收益;

This commit is contained in:
cabbage 2025-07-23 18:45:52 +08:00
parent 4dc86fe750
commit a481c891d5
36 changed files with 307 additions and 568 deletions

View File

@ -1,19 +1,12 @@
package com.hzs.system.config.dto;
import com.baomidou.mybatisplus.annotation.TableField;
import com.hzs.common.core.annotation.Transaction;
import com.hzs.common.core.constant.EnumsPrefixConstants;
import lombok.Data;
import java.io.Serializable;
import java.math.BigDecimal;
/**
* @Description: 极差的配置
* @Author: sui q
* @Time: 2023/1/3 13:42
* @Classname: RangeDTO
* @PackageName: com.hzs.system.config.dto
* 极差的配置
*/
@Data
public class RangeDTO implements Serializable {

View File

@ -168,22 +168,6 @@ public interface CuMemberTreeMapper extends BaseMapper<CuMemberTree> {
List<CuMemberSettleExt> queryMemberSettleBySaOrder(@Param("settleTableName") String settleTableName,
@Param("memberPkList") List<?> memberPkList);
/*
* @description: 查询所有有奖衔的会员
* @param: null null
**/
List<CuMemberSettleExt> queryMemberSettleByAwards(@Param("settleTableName") String settleTableName, @Param("rangeTableName") String rangeTableName,
@Param("startPeriod") Integer startPeriod, @Param("endPeriod") Integer endPeriod);
/**
* 根据订单查询出网体中记录的会员数据及推荐人
*
* @param settleTableName 结算表
* @param serviceMemberSet 会员编号
* @return: List<CuMemberSettleExt>
*/
List<CuMemberSettleExt> batchQueryMemberSettleParentByMemberPk(@Param("settleTableName") String settleTableName, @Param("memberPkList") List<?> serviceMemberSet);
/**
* 查询会员结算表查询出结算表中会员伞下左右区满足等级
*
@ -230,26 +214,6 @@ public interface CuMemberTreeMapper extends BaseMapper<CuMemberTree> {
List<CuMemberSettleExt> batchQueryCuMemberSettleParent(@Param("settleTableName") String settleTableName,
@Param("pkMemberList") List<?> pkMemberList);
/**
* 批量根据量奖信息查询会员结算表中的父级血缘数据
*
* @param settleTableName 结算表
* @param pkMemberList 有量奖的会员列表
* @return: Map<Long, List < CuMemberSettleExt>>
*/
List<CuMemberSettleExt> batchQuerySpecialCuMemberSettleParent(@Param("settleTableName") String settleTableName,
@Param("pkMemberList") List<?> pkMemberList);
/**
* 批量根据量奖信息查询会员结算表中的父级血缘数据
*
* @param settleTableName 结算表
* @param pkMemberList 有量奖的会员列表
* @return: Map<Long, List < CuMemberSettleExt>>
*/
List<CuMemberSettleExt> batchQueryCuMemberSettleParentForSpecial(@Param("settleTableName") String settleTableName,
@Param("pkMemberList") List<?> pkMemberList);
/**
* 更新会员网体奖衔数据更新月表结算表
*

View File

@ -183,21 +183,6 @@ public interface ICuMemberTreeService extends IService<CuMemberTree> {
*/
List<CuMemberSettleExt> batchQueryMemberSettleByMemberPk(String settleTableName, Set<Long> serviceMemberSet);
/*
* @description: 查询所有有奖衔的会员
* @param: null null
**/
List<CuMemberSettleExt> queryMemberSettleByAwards(String settleTableName, String rangeTableName, Integer startPeriod, Integer endPeriod);
/**
* 根据订单查询出网体中记录的会员数据及推荐人
*
* @param settleTableName 结算表
* @param serviceMemberSet 会员编号
* @return: List<CuMemberSettleExt>
*/
List<CuMemberSettleExt> batchQueryMemberSettleParentByMemberPk(String settleTableName, Set<Long> serviceMemberSet);
/**
* 批量根据订单信息查询会员结算表中的父级安置数据
*
@ -225,24 +210,6 @@ public interface ICuMemberTreeService extends IService<CuMemberTree> {
*/
List<CuMemberSettleExt> listMemberMonthAssess(String settleTableName, String settleTableNameMonthLast, List<Long> pkMemberList);
/**
* 批量根据量奖信息查询会员结算表中的父级血缘数据
*
* @param settleTableName 结算表
* @param expandMemberSet 有量奖的会员
* @return: Map<Long, CuMemberSettleExt> 主键通过推荐人向上找父级
*/
List<CuMemberSettleExt> batchQuerySpecialCuMemberSettleParent(String settleTableName, Set<Long> expandMemberSet);
/**
* 批量根据量奖信息查询会员结算表中的父级血缘数据
*
* @param settleTableName 结算表
* @param expandMemberSet 有量奖的会员列表
* @return: Map<Long, List < CuMemberSettleExt>>
*/
List<CuMemberSettleExt> batchQueryCuMemberSettleParentForSpecial(String settleTableName, Set<Long> expandMemberSet);
/**
* 更新会员树的累计业绩
*

View File

@ -115,7 +115,7 @@ public class CuMemberAchieveServiceImpl extends ServiceImpl<CuMemberAchieveMappe
List<MemberAchieveParam> memberAchieveParamList = new ArrayList<>();
memberAchieveParamMap.forEach((key, memberAchieveParam) ->
memberAchieveParamList.add(memberAchieveParam));
List<List<?>> listList = cuMemberBonusSettle.handleCutList(memberAchieveParamList, MagicNumberConstants.DELETE_DATA_BATCH_UPDATE_NUM);
List<List<?>> listList = cuMemberBonusSettle.handleCutList(memberAchieveParamList, MagicNumberConstants.BATCH_UPDATE_NUM);
listList.forEach(list -> {
baseMapper.updateCuMemberBackAchieveEveryDay(list, tablaName);
});
@ -134,7 +134,7 @@ public class CuMemberAchieveServiceImpl extends ServiceImpl<CuMemberAchieveMappe
List<MemberAchieveParam> memberAchieveParamList = new ArrayList<>();
memberAchieveParamMap.forEach((key, memberAchieveParam) ->
memberAchieveParamList.add(memberAchieveParam));
List<List<?>> listList = cuMemberBonusSettle.handleCutList(memberAchieveParamList, MagicNumberConstants.DELETE_DATA_BATCH_UPDATE_NUM);
List<List<?>> listList = cuMemberBonusSettle.handleCutList(memberAchieveParamList, MagicNumberConstants.BATCH_UPDATE_NUM);
listList.forEach(list -> {
baseMapper.updateCuMemberBackOldAchieveEveryDay(list, tablaName);
});

View File

@ -38,7 +38,7 @@ public class CuMemberRangeServiceImpl extends ServiceImpl<CuMemberRangeMapper, C
@Override
public Map<Long, List<CuMemberRangeExt>> queryCuMemberRangeParent(String tableName, List<SaOrderExt> saOrderExtList) {
List<CuMemberRangeExt> cuMemberRangeExtList = new ArrayList<>();
List<List<?>> cutOrderList = cuMemberBonusSettle.handleCutList(saOrderExtList, MagicNumberConstants.DELETE_DATA_BATCH_UPDATE_NUM);
List<List<?>> cutOrderList = cuMemberBonusSettle.handleCutList(saOrderExtList, MagicNumberConstants.BATCH_UPDATE_NUM);
cutOrderList.forEach(orderList ->
cuMemberRangeExtList.addAll(baseMapper.queryCuMemberRangeParent(tableName, orderList)));
return packageMemberRangeMap(cuMemberRangeExtList);

View File

@ -296,28 +296,11 @@ public class CuMemberTreeServiceImpl extends ServiceImpl<CuMemberTreeMapper, CuM
return getCuMemberSettleExtList(settleTableName, serviceMemberSet);
}
@Override
public List<CuMemberSettleExt> queryMemberSettleByAwards(String settleTableName, String rangeTableName, Integer startPeriod, Integer endPeriod) {
return baseMapper.queryMemberSettleByAwards(settleTableName, rangeTableName, startPeriod, endPeriod);
}
@Override
public List<CuMemberSettleExt> batchQueryMemberSettleParentByMemberPk(String settleTableName, Set<Long> serviceMemberSet) {
List<CuMemberSettleExt> cuMemberSettleExtList = new ArrayList<>();
if (serviceMemberSet.size() > 0) {
List<Long> memberPkList = Arrays.asList(serviceMemberSet.toArray(new Long[]{}));
List<List<?>> listList = cuMemberBonusSettle.handleCutList(memberPkList);
listList.forEach(list ->
cuMemberSettleExtList.addAll(baseMapper.batchQueryMemberSettleParentByMemberPk(settleTableName, list)));
}
return cuMemberSettleExtList;
}
@Override
public Map<Long, List<CuMemberSettleExt>> batchQueryCuMemberSettlePlaceParent(String settleTableName, Integer period, List<SaOrderExt> firPurchaseOrderList) {
// 查询出所有父级安置人
List<CuMemberSettleExt> cuMemberSettleExtList = new ArrayList<>();
List<List<?>> listList = cuMemberBonusSettle.handleCutList(firPurchaseOrderList, MagicNumberConstants.DELETE_DATA_BATCH_UPDATE_NUM);
List<List<?>> listList = cuMemberBonusSettle.handleCutList(firPurchaseOrderList, MagicNumberConstants.BATCH_UPDATE_NUM);
listList.forEach(list ->
cuMemberSettleExtList.addAll(baseMapper.batchQueryCuMemberSettlePlaceParent(settleTableName, period, list)));
// key订单IDvalue订单向上找安置人列表
@ -334,19 +317,6 @@ public class CuMemberTreeServiceImpl extends ServiceImpl<CuMemberTreeMapper, CuM
return memberSettleMap;
}
@Override
public List<CuMemberSettleExt> batchQuerySpecialCuMemberSettleParent(String settleTableName, Set<Long> expandMemberSet) {
List<CuMemberSettleExt> cuMemberSettleExtList = new ArrayList<>();
if (expandMemberSet == null || expandMemberSet.size() == 0) {
return cuMemberSettleExtList;
}
List<Long> memberPkList = Arrays.asList(expandMemberSet.toArray(new Long[]{}));
List<List<?>> listList = cuMemberBonusSettle.handleCutList(memberPkList, MagicNumberConstants.DELETE_DATA_BATCH_UPDATE_NUM);
listList.forEach(list ->
cuMemberSettleExtList.addAll(baseMapper.batchQuerySpecialCuMemberSettleParent(settleTableName, list)));
return cuMemberSettleExtList;
}
@Override
public List<CuMemberSettleExt> batchQueryCuMemberSettleParent(String settleTableName, Set<Long> expandMemberSet) {
List<CuMemberSettleExt> cuMemberSettleExtList = new ArrayList<>();
@ -354,7 +324,7 @@ public class CuMemberTreeServiceImpl extends ServiceImpl<CuMemberTreeMapper, CuM
return cuMemberSettleExtList;
}
List<Long> memberPkList = Arrays.asList(expandMemberSet.toArray(new Long[]{}));
List<List<?>> listList = cuMemberBonusSettle.handleCutList(memberPkList, MagicNumberConstants.DELETE_DATA_BATCH_UPDATE_NUM);
List<List<?>> listList = cuMemberBonusSettle.handleCutList(memberPkList, MagicNumberConstants.BATCH_UPDATE_NUM);
listList.forEach(list ->
cuMemberSettleExtList.addAll(baseMapper.batchQueryCuMemberSettleParent(settleTableName, list)));
return cuMemberSettleExtList;
@ -366,22 +336,12 @@ public class CuMemberTreeServiceImpl extends ServiceImpl<CuMemberTreeMapper, CuM
if (CollectionUtil.isEmpty(pkMemberList)) {
return cuMemberSettleExtList;
}
List<List<?>> listList = cuMemberBonusSettle.handleCutList(pkMemberList, MagicNumberConstants.DELETE_DATA_BATCH_UPDATE_NUM);
List<List<?>> listList = cuMemberBonusSettle.handleCutList(pkMemberList, MagicNumberConstants.BATCH_UPDATE_NUM);
listList.forEach(list ->
cuMemberSettleExtList.addAll(baseMapper.listMemberMonthAssess(settleTableName, settleTableNameMonthLast, list)));
return cuMemberSettleExtList;
}
@Override
public List<CuMemberSettleExt> batchQueryCuMemberSettleParentForSpecial(String settleTableName, Set<Long> expandMemberSet) {
List<CuMemberSettleExt> cuMemberSettleExtList = new ArrayList<>();
List<Long> memberPkList = Arrays.asList(expandMemberSet.toArray(new Long[]{}));
List<List<?>> listList = cuMemberBonusSettle.handleCutList(memberPkList, MagicNumberConstants.DELETE_DATA_BATCH_UPDATE_NUM);
listList.forEach(list ->
cuMemberSettleExtList.addAll(baseMapper.batchQueryCuMemberSettleParentForSpecial(settleTableName, list)));
return cuMemberSettleExtList;
}
@Override
public void updateCuMemberSettle(String settleTableName, Map<Long, CuMemberSettleExt> cuMemberTreeMap) {
List<List<?>> treeList = setUpdCuMemberTreeLists(cuMemberTreeMap);
@ -416,7 +376,7 @@ public class CuMemberTreeServiceImpl extends ServiceImpl<CuMemberTreeMapper, CuM
@Override
public List<CuMemberSettleExt> queryCuMemberSecondParent(String secondTableName, List<?> cuMemberTreeList) {
List<CuMemberSettleExt> cuMemberSettleExtList = new ArrayList<>();
List<List<?>> listList = cuMemberBonusSettle.handleCutList(cuMemberTreeList, MagicNumberConstants.DELETE_DATA_BATCH_UPDATE_NUM);
List<List<?>> listList = cuMemberBonusSettle.handleCutList(cuMemberTreeList, MagicNumberConstants.BATCH_UPDATE_NUM);
listList.forEach(list -> cuMemberSettleExtList.addAll(baseMapper.queryCuMemberSecondParent(secondTableName, list)));
return cuMemberSettleExtList;
}

View File

@ -184,10 +184,6 @@ public class BonusGrantServiceImpl implements IBonusGrantService {
packAccountTrade(cuMemberTradeList, bdAccountValueMap, EAccount.REPEAT.getValue(), currentDateTime, cuMemberBonus, ComputeUtil.computeMultiply(cuMemberBonus.getBackPoints(), currencyDTO.getOutExchangeRate()), settleDate);
// 复购券
packAccountTrade(cuMemberTradeList, bdAccountValueMap, EAccount.REPURCHASE.getValue(), currentDateTime, cuMemberBonus, ComputeUtil.computeMultiply(cuMemberBonus.getRepurCouponSubtotal(), currencyDTO.getOutExchangeRate()), settleDate);
// 环球积分
// packAccountTrade(cuMemberTradeList, bdAccountValueMap, EAccount.GLOBAL_POINTS.getValue(), currentDateTime, cuMemberBonus, ComputeUtil.computeMultiply(cuMemberBonus.getGlobalPoints(), currencyDTO.getOutExchangeRate()), settleDate);
// 车奖积分
// packAccountTrade(cuMemberTradeList, bdAccountValueMap, EAccount.CAR_AWARD_POINTS.getValue(), currentDateTime, cuMemberBonus, ComputeUtil.computeMultiply(cuMemberBonus.getCarAwardPoints(), currencyDTO.getOutExchangeRate()), settleDate);
});
List<Long> seqList = iCuMemberTradeService.batchQueryCuMemberTradeSeq(cuMemberTradeList.size());
// 新增流水明细,记录奖金明细的发放状态消费明细
@ -246,10 +242,6 @@ public class BonusGrantServiceImpl implements IBonusGrantService {
packAccountTrade(cuMemberTradeList, bdAccountValueMap, EAccount.REPEAT.getValue(), currentDateTime, cuMemberBonus, ComputeUtil.computeMultiply(cuMemberBonus.getBackPoints(), currencyDTO.getOutExchangeRate()), settleDate);
// 复购券
packAccountTrade(cuMemberTradeList, bdAccountValueMap, EAccount.REPURCHASE.getValue(), currentDateTime, cuMemberBonus, ComputeUtil.computeMultiply(cuMemberBonus.getRepurCouponSubtotal(), currencyDTO.getOutExchangeRate()), settleDate);
// 环球积分
// packAccountTrade(cuMemberTradeList, bdAccountValueMap, EAccount.GLOBAL_POINTS.getValue(), currentDateTime, cuMemberBonus, ComputeUtil.computeMultiply(cuMemberBonus.getGlobalPoints(), currencyDTO.getOutExchangeRate()), settleDate);
// 车奖积分
// packAccountTrade(cuMemberTradeList, bdAccountValueMap, EAccount.CAR_AWARD_POINTS.getValue(), currentDateTime, cuMemberBonus, ComputeUtil.computeMultiply(cuMemberBonus.getCarAwardPoints(), currencyDTO.getOutExchangeRate()), settleDate);
});
List<Long> seqList = iCuMemberTradeService.batchQueryCuMemberTradeSeq(cuMemberTradeList.size());
// 新增流水明细,记录奖金明细的发放状态消费明细

View File

@ -803,8 +803,7 @@ public class BonusSettleFirstPurchaseHandle extends BonusSettleHandle {
}
/**
* @Description: 计算服务中心奖
* @return: CuMemberBonusDetail
* 计算服务中心奖
*/
CuMemberBonusDetail calculateServiceBonusOne(String settleDate, Map<Long, CuMemberAssess> cuMemberAssessMap, Map<Long, CuMemberSettleExt> cuMemberSettleExtMap, BonusConfigDTO bonusConfigDTO, Integer period, Map<Long, CuMemberBonus> cuMemberBonusMap, SaOrderExt saOrderExt) {
CuMemberSettleExt sourceMemberSettleExt = cuMemberSettleExtMap.get(saOrderExt.getPkMember());

View File

@ -635,7 +635,7 @@ public abstract class BonusSettleHandle {
}
/**
* 获得 差收益的备注
* 获得 差收益的备注
*
* @param saOrderExt 订单编号
* @param cuMemberBonusRange 报单服务费
@ -654,7 +654,7 @@ public abstract class BonusSettleHandle {
}
/**
* 获得 差收益的备注
* 获得 差收益的备注
*
* @param saOrderExt 订单编号
* @param cuMemberBonusRange 报单服务费
@ -671,7 +671,7 @@ public abstract class BonusSettleHandle {
}
/**
* 获得 差收益的备注
* 获得 差收益的备注
*
* @param saOrderExt 订单编号
* @param cuMemberBonusRange 报单服务费
@ -738,6 +738,20 @@ public abstract class BonusSettleHandle {
return iCuMemberAssessService.queryCuMemberAssessByMember(assessTableName, assessPeriod, EAssessmentType.REPURCHASE_ASSESS.getValue(), cuMemberSettleExtList);
}
/**
* 获得 复购见点收益备注
*/
protected void repurchasePointRemark(SaOrderExt saOrderExt, CuMemberBonusCoach cuMemberBonusCoach,
CuMemberSettleExt sourceMemberRangeExt, CuMemberSettleExt targetMemberRangeExt,
int algebra) {
String remark = String.format(BonusMsgConstants.REPURCHASE_POINT, algebra, 1, saOrderExt.getOrderCode(),
sourceMemberRangeExt.getMemberCode() + sourceMemberRangeExt.getMemberName(),
targetMemberRangeExt.getMemberCode() + targetMemberRangeExt.getMemberName(),
cuMemberBonusCoach.getCalAchieve(), cuMemberBonusCoach.getCalValue());
cuMemberBonusCoach.setRemark(remark);
}
/**
* 获取会员奖金汇总表
*
@ -946,7 +960,7 @@ public abstract class BonusSettleHandle {
}
/**
* 根据订单获取会员的血缘父级用于嗨粉推荐复购极
* 根据订单获取会员的血缘父级用于复购级
*
* @param cuMemberSettleExtMap 树关系
* @param settleTableName 结算表
@ -961,7 +975,7 @@ public abstract class BonusSettleHandle {
}
/**
* 获取会员的差等级验证会员是否有奖衔
* 获取会员的差等级验证会员是否有奖衔
*
* @param awardsMap 奖衔
* @param parentMemberTree 会员树历史记录
@ -982,7 +996,7 @@ public abstract class BonusSettleHandle {
}
/**
* 获取会员的差等级验证会员是否有奖衔
* 获取会员的差等级验证会员是否有奖衔
*
* @param awardsMap 奖衔
* @param parentMemberTree 会员树历史记录

View File

@ -2,7 +2,6 @@ package com.hzs.bonus.bonus.service.impl;
import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.collection.CollectionUtil;
import com.hzs.activity.pick.IAcPickServiceApi;
import com.hzs.bonus.bonus.vo.BonusRecordDetailVO;
import com.hzs.common.core.constant.CountryConstants;
import com.hzs.common.core.constant.MagicNumberConstants;
@ -24,7 +23,6 @@ import com.hzs.system.config.dto.BonusExpandDTO;
import com.hzs.system.config.dto.BonusRepurchasePushDTO;
import com.hzs.system.config.dto.RangeDTO;
import lombok.extern.slf4j.Slf4j;
import org.apache.dubbo.config.annotation.DubboReference;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
@ -180,7 +178,7 @@ public class BonusSettlePurchaseHandle extends BonusSettleHandle {
Map<String, String> systemConfigMap, Integer period, Map<Long, CuMemberBonus> weekMemberBonusMap,
Map<Long, CuMemberBonus> cuMemberBonusMap, SaOrderExt saOrderExt,
List<CuMemberSettleExt> cuMemberSettleExtList, String settleDateStr, BigDecimal addTouch, BigDecimal expandRatio, Integer expandNumber) {
// 复购订单计算复购复购拓展
// 复购订单计算复购复购拓展
return calculateRepurchaseExpandBonusOne(riskControlMap, settleTableName, cuMemberSettleExtMap, bonusConfigDTO, systemConfigMap, period, weekMemberBonusMap, cuMemberBonusMap,
saOrderExt, cuMemberSettleExtList, addTouch, expandRatio, expandNumber);
}
@ -375,7 +373,7 @@ public class BonusSettlePurchaseHandle extends BonusSettleHandle {
}
/**
* 计算复购
* 计算复购
*
* @param period 期间
* @param bonusConfigDTO 参数
@ -487,38 +485,6 @@ public class BonusSettlePurchaseHandle extends BonusSettleHandle {
cuMemberBonusRangeList.add(cuMemberBonusRange);
}
/**
* 乐学复购极差找下一个等级的推荐人
*
* @param cuMemberTreeMap
* @param bonusConfigDTO
* @param sourceMemberTree
* @param parentMemberTree
* @param cuMemberAssessMap
* @param pkGrade
* @return
*/
private CuMemberSettleExt getSpecialRangeCuMemberTree(Map<Long, CuMemberSettleExt> cuMemberTreeMap, BonusConfigDTO bonusConfigDTO,
CuMemberSettleExt sourceMemberTree, CuMemberSettleExt parentMemberTree,
Map<Long, CuMemberAssess> cuMemberAssessMap, int pkGrade) {
if (null == parentMemberTree) {
return null;
}
if (ECategory.NORMAL.getValue() != parentMemberTree.getCategory()
|| EAccountStatus.STOP_INCOME.getValue() == parentMemberTree.getAccountStatus()
|| validatePkBonusItems(bonusConfigDTO, parentMemberTree.getPkSettleCountry(), EBonusItems.REPURCHASE_RANGE_INCOME.getValue())
|| parentMemberTree.getPkGrade() < pkGrade
|| parentMemberTree.getPkGrade() <= sourceMemberTree.getPkGrade()) {
// 推荐人非正常点位 停算收益 没有配置该奖项 等级小于计算等级 等级小于等于下级会员等级则跳过该推荐人向上继续找
parentMemberTree = cuMemberTreeMap.get(parentMemberTree.getPkParent());
if (null == parentMemberTree) {
return null;
}
parentMemberTree = getSpecialRangeCuMemberTree(cuMemberTreeMap, bonusConfigDTO, sourceMemberTree, parentMemberTree, cuMemberAssessMap, pkGrade);
}
return parentMemberTree;
}
/**
* 计算复购量碰
*
@ -578,12 +544,11 @@ public class BonusSettlePurchaseHandle extends BonusSettleHandle {
targetMemberSettleExt.setRepBBalance(ComputeUtil.computeSubtractAbs(targetMemberSettleExt.getRepBBalance(), calAchieve));
}
// 计算收益 先计算出会员最大的收益 -- TODO new 目前看下面这俩比例计算出来的值一样
// 计算收益 先计算出会员最大的收益
// maxIncome = 业绩 * 等级扩展比例
BigDecimal maxIncome = ComputeUtil.computeBonusMultiply(cuMemberBonusExpand.getCalAchieve(), gradeExpandRatio);
// actualIncome = 业绩 * 等级扩展比例
BigDecimal actualIncome = ComputeUtil.computeBonusMultiply(cuMemberBonusExpand.getCalAchieve(), countryExpandRatio);
// log.info("复购. maxIncome: {}, gradeExpandRatio: {}; actualIncome: {}, countryExpandRatio: {}", maxIncome, gradeExpandRatio, actualIncome, countryExpandRatio);
// 获取等级对应的封顶值累计复购扩展 + 当前等级对应订单的最大收益
BigDecimal expandIncome = ComputeUtil.computeAdd(ComputeUtil.computeAdd(cuMemberBonus.getRepurExpandIncome(), actualIncome), weekRepExpandIncome);
@ -760,4 +725,122 @@ public class BonusSettlePurchaseHandle extends BonusSettleHandle {
});
}
/**
* 计算见点收益
*/
List<CuMemberBonusCoach> calculateRepurchasePointBonus(Map<Long, CuMemberSettleExt> cuMemberSettleExtMap, String settleTableName, Integer period,
BonusConfigDTO bonusConfigDTO, List<SaOrderExt> purchaseOrderList, Map<Long, CuMemberBonus> cuMemberBonusMap,
Map<Integer, BdGrade> gradeMap) {
List<CuMemberBonusCoach> cuMemberBonusCoachList = new ArrayList<>();
if (purchaseOrderList.size() > 0) {
// 处理血缘上网体信息
getMemberParentBySaOrder(cuMemberSettleExtMap, settleTableName, purchaseOrderList);
for (SaOrderExt saOrderExt : purchaseOrderList) {
// 来源会员
CuMemberSettleExt sourceMemberSettleExt = cuMemberSettleExtMap.get(saOrderExt.getPkMember());
// 订单产生的见点收益
List<CuMemberBonusCoach> orderBonusCoachList = new ArrayList<>();
// 推荐人
Long pkParent = cuMemberSettleExtMap.get(saOrderExt.getPkMember()).getPkParent();
// 一共拿多少代最多20代
int pointAlgebra = MagicNumberConstants.POINT_ALGEBRA_START;
// 最多20代
while (pointAlgebra <= MagicNumberConstants.POINT_ALGEBRA_END) {
// 当前需要拿奖金的会员
CuMemberSettleExt targetMemberSettleExt = cuMemberSettleExtMap.get(pkParent);
if (null == targetMemberSettleExt) {
break;
}
pkParent = targetMemberSettleExt.getPkParent();
if (ECategory.NORMAL.getValue() != targetMemberSettleExt.getCategory()
|| EAccountStatus.STOP_INCOME.getValue() == targetMemberSettleExt.getAccountStatus()
|| EYesNo.NO.getIntValue() == targetMemberSettleExt.getIsMakerSpace()) {
// 会员状态不正常 或者 停算收益 或者 考核不通过
continue;
}
if (validatePkBonusItems(bonusConfigDTO, targetMemberSettleExt.getPkSettleCountry(), EBonusItems.REPURCHASE_POINT_INCOME.getValue())) {
// 校验当前国家是否有该奖项见点收益
continue;
}
// 前10代默认拿10%
BigDecimal pointRatio = MagicNumberConstants.BONUS_POINT_10;
if (pointAlgebra > 10) {
// 后10代拿5%
pointRatio = MagicNumberConstants.BONUS_POINT_20;
}
// 根据等级获取可以拿的代数
BdGrade targetGrade = gradeMap.get(targetMemberSettleExt.getPkGrade());
if (targetGrade.getAlgebra() >= pointAlgebra) {
// 税前收益 = 订单业绩 * 收益比例
BigDecimal pretaxIncome = saOrderExt.getOrderAchieve().multiply(pointRatio);
// 获取会员奖金数据
CuMemberBonus cuMemberBonus = getCuMemberBonus(period, cuMemberBonusMap, saOrderExt, targetMemberSettleExt);
// 会员见点收益奖金
CuMemberBonusCoach cuMemberBonusCoach = this.getCuMemberPointBonus(bonusConfigDTO, saOrderExt, targetMemberSettleExt, cuMemberBonus);
cuMemberBonusCoach.setCalAchieve(saOrderExt.getOrderAchieve());
cuMemberBonusCoach.setCalValue(pointRatio);
cuMemberBonusCoach.setPretaxIncome(pretaxIncome);
repurchasePointRemark(saOrderExt, cuMemberBonusCoach, sourceMemberSettleExt, targetMemberSettleExt, pointAlgebra);
// 奖金扣项
BdBonusDeduct bdBonusDeduct = setBonusDetailDeduct(bonusConfigDTO, cuMemberBonusCoach,
saOrderExt.getOrderAmount(), saOrderExt.getInExchangeRate());
// 累计奖金数据
cuMemberBonus.setGlobalPoints(cuMemberBonus.getGlobalPoints().add(cuMemberBonusCoach.getPretaxIncome()));
// 复购小计总计
setPurchaseTotal(bdBonusDeduct, cuMemberBonus, cuMemberBonusCoach);
orderBonusCoachList.add(cuMemberBonusCoach);
pointAlgebra++;
}
}
// 补全代数信息
handlePointRemark(orderBonusCoachList, --pointAlgebra);
cuMemberBonusCoachList.addAll(orderBonusCoachList);
}
}
return cuMemberBonusCoachList;
}
/**
* 补全见点奖备注
*/
private void handlePointRemark(List<CuMemberBonusCoach> memberBonusCoachList, int i) {
for (CuMemberBonusCoach cuMemberBonusCoach : memberBonusCoachList) {
cuMemberBonusCoach.setCoachGeneration(i);
cuMemberBonusCoach.setRemark(cuMemberBonusCoach.getRemark().replace("#", cuMemberBonusCoach.getCoachGeneration().toString()));
}
}
/**
* 生成见点收益
*/
private CuMemberBonusCoach getCuMemberPointBonus(BonusConfigDTO bonusConfigDTO, SaOrderExt saOrderExt, CuMemberSettleExt cuMemberSettleExt, CuMemberBonus cuMemberBonus) {
CuMemberBonusCoach cuMemberBonusCoach = CuMemberBonusCoach.builder()
.pkOrder(saOrderExt.getPkId())
.pkBonus(cuMemberBonus.getPkId())
.pkBonusItems(getPkBonusItems(bonusConfigDTO, cuMemberSettleExt.getPkSettleCountry(), EBonusItems.REPURCHASE_POINT_INCOME.getValue()))
// 正常还是烧伤
.incomeStatus(cuMemberSettleExt.getIncomeStatus())
.calType(ECalType.RATIO.getValue())
.calAchieve(BigDecimal.ZERO)
.calValue(BigDecimal.ZERO)
.incomeRatio(BigDecimal.ZERO)
.incomeDialRatio(BigDecimal.ZERO)
.orderDialRatio(BigDecimal.ZERO)
.build();
cuMemberBonusCoach.setPkCountry(cuMemberSettleExt.getPkSettleCountry());
cuMemberBonusCoach.setPkCreator(MagicNumberConstants.PK_ADMIN);
return cuMemberBonusCoach;
}
}

View File

@ -332,7 +332,7 @@ public class BonusSettleServiceImpl implements IBonusSettleService {
// List<CuMemberBonusPush> cuMemberBonusPushList = bonusSettlePurchaseHandle.calculateRepurchasePushSecondBonus(settleTableName, cuMemberSettleExtMap,
// bonusConfigDTO, period, cuMemberBonusMap, saOrderExt, pushMemberSettleExtList, settleDate);
// Map<Long, CuMemberBonus> weekMemberBonusMap = getWeekMemberBonusMap(settleDate, period);
// // 复购订单计算复购推荐 复购复购拓展
// // 复购订单计算复购推荐 复购复购拓展
// // 查询K值控制
// List<CuMemberRiskControl> cuMemberRiskControlList = iCuMemberRiskControlService.queryCuMemberRiskControl(DateUtils.parseStringToDate(settleDate));
// Map<Long, CuMemberRiskControl> riskControlMap = new HashMap<>();
@ -418,7 +418,7 @@ public class BonusSettleServiceImpl implements IBonusSettleService {
// 国家奖衔map
Map<String, BdAwards> awardsMap = iAwardsServiceApi.getAwards().getData();
// 等级map
// 等级mapkey:等级IDvalue:等级对象
Map<Integer, BdGrade> gradeMap = iGradeServiceApi.getGrade().getData();
// 查看是否有特殊业务有特殊业务的处理特殊业务注水处理
@ -452,7 +452,7 @@ public class BonusSettleServiceImpl implements IBonusSettleService {
// 区分体系体系按照多线程进行更新业绩
// 首购订单 注册+升级 直推奖量奖领导奖注册报单服务费
// 复购订单 (复购量奖复购)
// 复购订单 (复购量奖复购)
// 其他订单 只累计业绩 仅算奖衔
// 云代奖金 1% 待考虑
// 首购订单
@ -504,9 +504,6 @@ public class BonusSettleServiceImpl implements IBonusSettleService {
// 计算完奖衔回退金额业绩最终根据新增进行回写
iCuMemberTreeService.updateCuMemberBackSettle(cuMemberAchieveHashMap, currentSettleTableName);
//********************************重新考核*********************************/
// new 没有分红复购考核这个位置暂时去掉
// cuMemberAssessService.retryCalculationAssess(DateUtils.parseStringToDate(settleDate), Boolean.TRUE);
//*********************************计算奖金********************************/
// 首购订单 注册+升级 直推奖量奖领导奖注册报单服务费key奖金计算过程中使用会员IDvalue会员奖金数据
Map<Long, CuMemberBonus> cuMemberBonusMap = new HashMap<>();
@ -808,7 +805,7 @@ public class BonusSettleServiceImpl implements IBonusSettleService {
if (CollectionUtil.isNotEmpty(repurchaseOrderList)) {
calculatePurchaseOrder(riskControlMap, cuMemberSettleExtMap, settleTableName, settleDate, systemConfigMap, bonusConfigDTO,
repurchaseOrderList, period, weekMemberBonusMap, cuMemberBonusMap, bonusRecordDetailVO, awardsMap, awardsList, cuAwardsControlMap, cuBonusExpandExtMap, rangeDtoMap,
newExpandFlag);
newExpandFlag, gradeMap);
}
// 计算首购
if (CollectionUtil.isNotEmpty(firPurchaseOrderList)) {
@ -873,7 +870,7 @@ public class BonusSettleServiceImpl implements IBonusSettleService {
iCuMemberBonusCoachService.deleteCuMemberBonusCoach(period);
// 删除 奖金收益明细表(报单费)
iCuMemberBonusDetailService.deleteCuMemberBonusDetail(period);
// 删除 奖金收益明细表(复购)
// 删除 奖金收益明细表(复购)
iCuMemberBonusRangeService.deleteCuMemberBonusRange(period);
// new 删除拓展收益延缓主表
iCuMemberBonusDelayService.deleteCuMemberBonusDelay(period);
@ -1143,13 +1140,12 @@ public class BonusSettleServiceImpl implements IBonusSettleService {
* @param settleDate 结算日期
* @param bonusConfigDTO 各个国家奖金参数
* @param purchaseOrderList 复购订单
* @param rangeDtoMap 乐学奖金使用的汇率map
*/
private void calculatePurchaseOrder(Map<Long, CuMemberRiskControl> riskControlMap, Map<Long, CuMemberSettleExt> cuMemberSettleExtMap, String settleTableName, String settleDate,
Map<String, String> systemConfigMap, BonusConfigDTO bonusConfigDTO, List<SaOrderExt> purchaseOrderList, Integer period,
Map<Long, CuMemberBonus> weekMemberBonusMap, Map<Long, CuMemberBonus> cuMemberBonusMap, BonusRecordDetailVO bonusRecordDetailVO,
Map<String, BdAwards> awardsMap, List<BdAwards> awardsList, Map<Long, CuAwardsControl> cuAwardsControlMap, Map<Long, CuBonusExpandExt> cuBonusExpandExtMap,
Map<String, RangeDTO> rangeDtoMap, boolean newExpandFlag) {
Map<String, RangeDTO> rangeDtoMap, boolean newExpandFlag, Map<Integer, BdGrade> gradeMap) {
//****************************复购直推*****************************
// 查找10代血缘验证复购考核考核通过的给与奖金 紧缩
// List<CuMemberBonusPush> cuMemberBonusPushList = bonusSettlePurchaseHandle.calculateRepurchasePushBonus(cuMemberSettleExtMap, settleTableName, settleDate, bonusConfigDTO, purchaseOrderList, period, cuMemberBonusMap);
@ -1182,11 +1178,23 @@ public class BonusSettleServiceImpl implements IBonusSettleService {
bonusRecordDetailVO.setCuMemberBonusCoachList(cuMemberBonusCoachList);
}
//****************************复购差*****************************/
//****************************复购差*****************************/
List<CuMemberBonusRange> cuMemberBonusRangeList = bonusSettlePurchaseHandle.calculateRepurchaseRangeBonus(cuMemberSettleExtMap, settleTableName, settleDate, rangeDtoMap, awardsMap,
bonusConfigDTO, purchaseOrderList, period, cuMemberBonusMap, cuAwardsControlMap);
bonusRecordDetailVO.setCuMemberBonusRangeList(cuMemberBonusRangeList);
//****************************见点收益*****************************/
List<CuMemberBonusCoach> cuMemberPointBonusList = bonusSettlePurchaseHandle.calculateRepurchasePointBonus(cuMemberSettleExtMap, settleTableName, period,
bonusConfigDTO, purchaseOrderList, cuMemberBonusMap, gradeMap);
if (CollectionUtil.isNotEmpty(bonusRecordDetailVO.getCuMemberBonusCoachList())) {
bonusRecordDetailVO.getCuMemberBonusCoachList().addAll(cuMemberPointBonusList);
} else {
bonusRecordDetailVO.setCuMemberBonusCoachList(cuMemberPointBonusList);
}
// TODO
//****************************区域收益*****************************/
Map<Long, MemberBonusDetailCalVO> memberBonusDetailCalVoMap = new HashMap<>(ComputeUtil.mapInitCapacity(purchaseOrderList.size()));
if (null != cuMemberBonusExpandList) {
// 复购拓展
@ -1206,6 +1214,10 @@ public class BonusSettleServiceImpl implements IBonusSettleService {
MemberBonusDetailCalVO memberBonusDetailCalVO = calculateOrderRatio(memberBonusDetailCalVoMap, cuMemberBonusRange);
memberBonusDetailCalVO.setRepRangeIncome(ComputeUtil.computeAdd(memberBonusDetailCalVO.getRepRangeIncome(), cuMemberBonusRange.getRealIncome()));
});
cuMemberPointBonusList.forEach(cuMemberPointBonus -> {
MemberBonusDetailCalVO memberBonusDetailCalVO = calculateOrderRatio(memberBonusDetailCalVoMap, cuMemberPointBonus);
memberBonusDetailCalVO.setGlobalPoints(ComputeUtil.computeAdd(memberBonusDetailCalVO.getGlobalPoints(), cuMemberPointBonus.getRealIncome()));
});
Map<Long, SaOrderExt> saOrderExtMap = new HashMap<>(ComputeUtil.mapInitCapacity(purchaseOrderList.size()));
purchaseOrderList.forEach(saOrderExt ->
@ -1228,13 +1240,20 @@ public class BonusSettleServiceImpl implements IBonusSettleService {
cuMemberBonusCoach.setOrderDialRatio(ComputeUtil.computeDivide(memberBonusDetailCalVO.getRealIncome(), saOrderExt.getOrderAmount()));
});
}
// 复购
// 复购
cuMemberBonusRangeList.forEach(cuMemberBonusRange -> {
MemberBonusDetailCalVO memberBonusDetailCalVO = memberBonusDetailCalVoMap.get(cuMemberBonusRange.getPkOrder());
SaOrderExt saOrderExt = saOrderExtMap.get(memberBonusDetailCalVO.getPkOrder());
cuMemberBonusRange.setIncomeDialRatio(ComputeUtil.computeDivide(memberBonusDetailCalVO.getRepRangeIncome(), memberBonusDetailCalVO.getRealIncome()));
cuMemberBonusRange.setOrderDialRatio(ComputeUtil.computeDivide(memberBonusDetailCalVO.getRealIncome(), saOrderExt.getOrderAmount()));
});
// 见点收益
cuMemberPointBonusList.forEach(cuMemberPointBonus -> {
MemberBonusDetailCalVO memberBonusDetailCalVO = memberBonusDetailCalVoMap.get(cuMemberPointBonus.getPkOrder());
SaOrderExt saOrderExt = saOrderExtMap.get(memberBonusDetailCalVO.getPkOrder());
cuMemberPointBonus.setIncomeDialRatio(ComputeUtil.computeDivide(memberBonusDetailCalVO.getGlobalPoints(), memberBonusDetailCalVO.getRealIncome()));
cuMemberPointBonus.setOrderDialRatio(ComputeUtil.computeDivide(memberBonusDetailCalVO.getRealIncome(), saOrderExt.getOrderAmount()));
});
}
/*
@ -1313,7 +1332,7 @@ public class BonusSettleServiceImpl implements IBonusSettleService {
bonusSettlePurchaseHandle.handleFirExpandDelay(cuMemberBonusExpandList, period, bonusRecordDetailVO);
}
//*********************************计算领导奖(首购辅导收益)************************/
//*********************************计算领导奖(辅导收益)************************/
// 判断是否有量奖有量奖有辅导奖
List<CuMemberBonusCoach> cuMemberBonusCoachList = bonusSettleFirstPurchaseHandle.calculateCoachBonus(cuMemberSettleExtMap, settleTableName, settleDate, bonusConfigDTO, expandOrderList,
cuMemberBonusExpandList, period, cuMemberBonusMap, cuAwardsControlMap, riskControlMap, awardsList, true, true);

View File

@ -8,11 +8,7 @@ import java.util.List;
import java.util.Map;
/**
* @Description: 奖金记录明细用于结算完奖金返回值最终一起入库
* @Author: sui q
* @Time: 2023/2/13 17:58
* @Classname: BonusRecordDetailVO
* @PackageName: com.hzs.member.bonus.vo
* 奖金记录明细用于结算完奖金返回值最终一起入库
*/
@Data
public class BonusRecordDetailVO implements Serializable {

View File

@ -96,4 +96,10 @@ public class MemberBonusDetailCalVO implements Serializable {
*/
private BigDecimal haiFunIncome;
/**
* 见点收益
*/
private BigDecimal globalPoints;
}

View File

@ -71,7 +71,7 @@ public class CuMemberAssessDetailServiceImpl extends ServiceImpl<CuMemberAssessD
@Override
public void deleteCuMemberAssessDetailByList(List<CuMemberAssessDetail> revokeDetailList) {
List<List<?>> handleCutList = cuMemberBonusSettle.handleCutList(revokeDetailList,
MagicNumberConstants.DELETE_DATA_BATCH_UPDATE_NUM);
MagicNumberConstants.BATCH_UPDATE_NUM);
handleCutList.forEach(list -> {
baseMapper.updateCuMemberAssessDetailByRevoke(list);
});

View File

@ -417,7 +417,7 @@ public class CuMemberAssessServiceImpl extends ServiceImpl<CuMemberAssessMapper,
// 会员复购订单首月免考
// 当月第一天
startDate = DateUtils.getFirstDayOfMonth(monthDate);
// 当月会员复购考
// 当月会员复购考
baseMapper.updatePassMemberAssess(assessTableName, startDate, endDate);
// 更新日结表会员免考信息

View File

@ -102,6 +102,7 @@
<result column="A_REP_BALANCE" property="aRepBalance"/>
<result column="B_FIR_BALANCE" property="bFirBalance"/>
<result column="B_REP_BALANCE" property="bRepBalance"/>
<result column="is_maker_space" property="isMakerSpace"/>
</resultMap>
<!-- 会员网体月表数据,用于查询 网体跟业绩分开 横向分表-->
@ -215,7 +216,7 @@
register_amount, register_pv, upgrade_amount, upgrade_pv, repurchase_amount, repurchase_pv,
hi_fun_amount, hi_fun_pv, mall_amount, mall_pv, category, pk_grade, pk_center_code,
min_achieve, round, second, bg.grade_value, store_level, expire_status,
a_fir_balance, a_rep_balance, b_fir_balance, b_rep_balance
a_fir_balance, a_rep_balance, b_fir_balance, b_rep_balance, is_maker_space
from (
<include refid="QueryMemberParent"></include>
) a
@ -248,13 +249,9 @@
<sql id="CuMemberTableTrig">
CREATE
OR REPLACE TRIGGER
${tableName}
_
TRIG
${tableName}_TRIG
BEFORE
INSERT
OR
UPDATE ON ${tableName} FOR EACH ROW
INSERT OR UPDATE ON ${tableName} FOR EACH ROW
DECLARE
v_newVal NUMBER(12) := 0;
v_incval
@ -279,8 +276,7 @@
FROM dual;
END LOOP;
END IF;
:new
.pk_id := v_newVal;
:new.pk_id := v_newVal;
END IF;
END;
</sql>
@ -293,7 +289,7 @@
register_amount, register_pv, upgrade_amount, upgrade_pv, repurchase_amount, repurchase_pv,
hi_fun_amount,hi_fun_pv,mall_amount,mall_pv, pk_center_code, category,pk_grade,
min_achieve, round, second, store_level, expire_status,
a_fir_balance, a_rep_balance, b_fir_balance, b_rep_balance
a_fir_balance, a_rep_balance, b_fir_balance, b_rep_balance, is_maker_space
from ${settleTableName}
where pay_status = 1
start with pk_member = #{item}
@ -894,7 +890,8 @@
a.min_achieve, a.round, a.second,
a.store_level, a.expire_status,
nvl(cmb.after_grant_income, 0) un_grant_income,
a.a_fir_balance, a.a_rep_balance, a.b_fir_balance, a.b_rep_balance
a.a_fir_balance, a.a_rep_balance, a.b_fir_balance, a.b_rep_balance,
is_maker_space
from (
<foreach collection="firPurchaseOrderList" item="item" open=" " close=" " separator=" union all ">
select #{item.pkId} pk_order, pk_member, member_code, member_name, pk_place_parent, place_dept,
@ -903,7 +900,7 @@
register_amount, register_pv, upgrade_amount, upgrade_pv, repurchase_amount, repurchase_pv, hi_fun_amount, hi_fun_pv,
mall_amount, mall_pv, category, pk_vertex, pk_center_code,
min_achieve, round, second, store_level, expire_status, level sort,
a_fir_balance, a_rep_balance, b_fir_balance, b_rep_balance
a_fir_balance, a_rep_balance, b_fir_balance, b_rep_balance, is_maker_space
from ${settleTableName}
start with pk_member = #{item.pkMember}
connect by pk_member = prior pk_place_parent
@ -932,36 +929,6 @@
<include refid="memberParent"></include>
</select>
<select id="batchQuerySpecialCuMemberSettleParent" resultMap="CuMemberSettleExt">
select a.*, (case when nvl(so.order_achieve,0)>0 then 0 else 1 end ) is_pay_reg from (
<include refid="memberParent"></include>
) a
left join (select pk_member, max(order_achieve) order_achieve from sa_order
where del_flag = 0 and order_status = 1
and order_type = 24
group by pk_member) so
on so.pk_member = a.pk_member
</select>
<select id="batchQueryCuMemberSettleParentForSpecial" resultMap="CuMemberSettleExt">
select
a.pk_member,a.pk_parent,a.member_code,a.member_name,a.pk_awards,a.account_status,a.register_authority,a.customer_type,
a.income_status,a.pk_settle_country,a.purchase_status,a.share_status,a.is_maker_space,
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.pk_center_code,
a.repurchase_pv,a.hi_fun_amount,a.hi_fun_pv,a.mall_amount,a.mall_pv,a.category,a.pk_grade,bg.grade_value,
a.min_achieve,a.round,second,ap.pk_id ap_pk_id,nvl(ap.usable_quantity,0) usable_quantity,
nvl(bp.retail_price,0) retail_price,ap.pk_data_id from (
<include refid="QueryMemberParent"></include>
) a
inner join bd_grade bg
on a.pk_grade = bg.pk_id
left join ac_pick ap
on ap.pk_member = a.pk_member and ap.pick_type = 8 and ap.del_flag=0
left join bd_product bp
on ap.pk_data_id = bp.pk_id
</select>
<select id="queryCuMemberSecondPlaceParent" resultMap="CuMemberSettleExt">
select b.pk_id pk_member,
b.pk_parent,
@ -1099,82 +1066,6 @@
on b.pk_grade = bg.pk_id
</select>
<select id="batchQueryMemberSettleParentByMemberPk" resultMap="CuMemberSettleExt">
select
cl.pk_member,cl.member_code,cl.member_name,cl.pk_awards,cl.pk_grade,cl.account_status,cl.category,cl.income_status,cl.pk_settle_country,
cl.is_maker_space,cl.purchase_status,cl.share_status,
cl.a_balance,cl.b_balance,cl.r_a_balance,cl.r_b_balance,cl.rep_a_balance,cl.rep_b_balance,cl.r_rep_a_balance,cl.r_rep_b_balance,
cl.register_amount,cl.register_pv,cl.upgrade_amount,cl.upgrade_pv,cl.repurchase_amount,cl.pk_center_code,cl.register_authority,
cl.repurchase_pv,cl.hi_fun_amount,cl.hi_fun_pv,cl.mall_amount,cl.mall_pv,cl.min_achieve,cl.round,cl.second from
${settleTableName} ct
inner join ${settleTableName} cl
on ct.pk_parent = cl.pk_member
where ct.pk_member in
<foreach collection="memberPkList" item="item" open="(" close=")" separator=",">
#{item}
</foreach>
union
select
pk_member,member_code,member_name,pk_awards,pk_grade,account_status,category,income_status,pk_settle_country,
is_maker_space,purchase_status,share_status,
a_balance,b_balance,r_a_balance,r_b_balance,rep_a_balance,rep_b_balance,r_rep_a_balance,r_rep_b_balance,
register_amount,register_pv,upgrade_amount,upgrade_pv,repurchase_amount,pk_center_code,register_authority,
repurchase_pv,hi_fun_amount,hi_fun_pv,mall_amount,mall_pv,min_achieve,round,second from ${settleTableName}
where pk_member in
<foreach collection="memberPkList" item="item" open="(" close=")" separator=",">
#{item}
</foreach>
</select>
<select id="queryMemberSettleByAwards" resultType="com.hzs.common.domain.member.ext.CuMemberSettleExt">
select a.pk_settle_country,
a.income_status,
a.pk_member,
a.expire_status,
a.purchase_status,
ba.abonus_ratio,
c.real_income_total
from ${settleTableName} a
inner join bd_awards ba
on a.pk_awards = ba.pk_id
inner join (
select pk_member, sum(real_income_total - global_points) real_income_total
from cu_member_bonus
where del_flag = 0
and period between #{startPeriod} and #{endPeriod}
and real_income_total > 0
group by pk_member) c
on a.pk_member = c.pk_member
where ba.del_flag = 0
and ba.awards_value >= 5
and ba.abonus_ratio > 0
and a.pk_settle_country = 1
union
select a.pk_settle_country,
a.income_status,
a.pk_member,
1 expire_status,
a.purchase_status,
ba.abonus_ratio,
c.real_income_total
from ${rangeTableName} a
inner join bd_awards ba
on a.pk_benefit_awards = ba.pk_id
inner join (
select pk_member, sum(real_income_total) real_income_total
from cu_member_bonus
where del_flag = 0
and period between #{startPeriod} and #{endPeriod}
and real_income_total > 0
group by pk_member
) c
on a.pk_member = c.pk_member
where ba.del_flag = 0
and ba.awards_value >= 5
and ba.abonus_ratio > 0
and a.pk_settle_country = 1
</select>
<!-- 回退会员等级 -->
<update id="updateBackCuMemberSettleGrade">
merge into ${settleTableName} a
@ -1278,7 +1169,7 @@
and cma.assess_status in (1, 2)) tmp
on (tmp.pk_member = cms.pk_member)
when matched then
update set cms.purchase_status = 0
update set cms.is_maker_gift = 0
</update>
</mapper>

View File

@ -4,16 +4,10 @@ import com.hzs.common.core.constant.MagicNumberConstants;
import org.springframework.stereotype.Component;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.Set;
/**
* @Description: 奖金计算工具类
* @Author: sui q
* @Time: 2022/11/2 11:25
* @Classname: CuMemberBonusSettle
* @PackageName: com.hzs.member.achieve.service.impl
* 奖金计算工具类
*/
@Component
public class CuMemberBonusSettle {

View File

@ -66,7 +66,7 @@ public class CuMemberAssessDetailServiceImpl extends ServiceImpl<CuMemberAssessD
@Override
public void deleteCuMemberAssessDetailByList(List<CuMemberAssessDetail> revokeDetailList) {
List<List<?>> handleCutList = cuMemberBonusSettle.handleCutList(revokeDetailList,
MagicNumberConstants.DELETE_DATA_BATCH_UPDATE_NUM);
MagicNumberConstants.BATCH_UPDATE_NUM);
handleCutList.forEach(list -> {
baseMapper.updateCuMemberAssessDetailByRevoke(list);
});

View File

@ -6,7 +6,6 @@ import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.hzs.common.core.annotation.Log;
import com.hzs.common.core.constant.CacheConstants;
import com.hzs.common.core.constant.msg.ConfigMsgConstants;
import com.hzs.common.core.domain.R;
import com.hzs.common.core.enums.*;
import com.hzs.common.core.service.RedisService;
import com.hzs.common.core.utils.StringUtils;
@ -18,10 +17,8 @@ import com.hzs.common.domain.system.config.BdBonusItems;
import com.hzs.common.domain.system.config.ext.BdBonusItemsExt;
import com.hzs.common.security.utils.SecurityUtils;
import com.hzs.common.util.TransactionUtils;
import com.hzs.system.base.ITransactionServiceApi;
import com.hzs.system.config.service.IBdBonusItemsService;
import com.hzs.system.config.vo.ApiBdBonusItemsVO;
import org.apache.dubbo.config.annotation.DubboReference;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
@ -32,9 +29,6 @@ import java.util.List;
/**
* 奖项配置 前端控制器
*
* @author zhangjing
* @since 2022-11-09
*/
@RestController
@RequestMapping("/manage/bd-bonus-items")
@ -45,15 +39,8 @@ public class BdBonusItemsController extends BaseController {
@Autowired
private RedisService redisService;
@DubboReference
ITransactionServiceApi iTransactionServiceApi;
/**
* @description: 查询奖项配置列表
* @author: zhang jing
* @date: 2022/8/30 10:20
* @param: [bonusItems]
* @return: com.hzs.common.core.web.page.TableDataInfo
* 查询奖项配置列表
**/
@Log(module = EOperationModule.BONUS_CONFIG, business = EOperationBusiness.BONUS_ITEMS, method = EOperationMethod.SELECT)
@GetMapping("/list")
@ -74,11 +61,7 @@ public class BdBonusItemsController extends BaseController {
}
/**
* @description: 导出
* @author: zhang jing
* @date: 2023/4/4 9:56
* @param: [response, bonusItems]
* @return: void
* 导出
**/
@Log(module = EOperationModule.BONUS_CONFIG, business = EOperationBusiness.BONUS_ITEMS, method = EOperationMethod.EXPORT)
@PostMapping("/export")
@ -97,11 +80,7 @@ public class BdBonusItemsController extends BaseController {
}
/**
* @description: 查询奖项配置列表(下拉选)
* @author: zhang jing
* @date: 2022/8/30 10:20
* @param: [bonusItems]
* @return: com.hzs.common.core.web.page.TableDataInfo
* 查询奖项配置列表(下拉选)
**/
@Log(module = EOperationModule.BONUS_CONFIG, business = EOperationBusiness.BONUS_ITEMS, method = EOperationMethod.SELECT)
@GetMapping("/listNoPage")
@ -119,11 +98,7 @@ public class BdBonusItemsController extends BaseController {
}
/**
* @description: 生成奖项
* @author: zhang jing
* @date: 2022/10/22 9:54
* @param: [grade]
* @return: com.hzs.common.core.web.domain.AjaxResult
* 生成奖项
**/
@Log(module = EOperationModule.BONUS_CONFIG, business = EOperationBusiness.BONUS_ITEMS, method = EOperationMethod.INSERT)
@PostMapping("/generate")
@ -131,13 +106,8 @@ public class BdBonusItemsController extends BaseController {
return AjaxResult.success(iBdBonusItemsService.generate(bonusItems));
}
/**
* @description: 修改奖项配置
* @author: zhang jing
* @date: 2022/8/30 10:21
* @param: [bonusItems]
* @return: com.hzs.common.core.web.domain.AjaxResult
* 修改奖项配置
**/
@Log(module = EOperationModule.BONUS_CONFIG, business = EOperationBusiness.BONUS_ITEMS, method = EOperationMethod.UPDATE)
@PostMapping("/update")
@ -164,31 +134,14 @@ public class BdBonusItemsController extends BaseController {
if (StringUtils.isNull(bonusItems.getWithdrawalDate())) {
return AjaxResult.error(TransactionUtils.getContent(ConfigMsgConstants.WITHDRAWAL_DATE_NOT_NULL));
}
//字段翻译保存到数据库
if (null != bonusItems.getPkTransaction()) {
R<Boolean> b = iTransactionServiceApi.updateTransaction(pkCountry,
bonusItems.getBonusName(), bonusItems.getPkTransaction(), true);
} else {
//字段翻译保存到数据库
R<Integer> pkTransaction = iTransactionServiceApi.createTransaction(pkCountry, ETransactionKey.BD_BONUS_ITEMS,
bonusItems.getBonusName(), EYesNo.YES, EYesNo.NO);
bonusItems.setPkTransaction(pkTransaction.getData());
}
bonusItems.setPkModified(SecurityUtils.getUserId());
bonusItems.setModifiedTime(new Date());
redisService.deleteObject(CacheConstants.BD_BONUS_ITEMS + pkCountry);
return toAjax(iBdBonusItemsService.updateById(bonusItems));
}
/**
* @description: 查询单条奖项配置
* @author: zhang jing
* @date: 2022/8/30 10:21
* @param: [pkId]
* @return: com.hzs.common.core.web.domain.AjaxResult
* 查询单条奖项配置
**/
@Log(module = EOperationModule.BONUS_CONFIG, business = EOperationBusiness.BONUS_ITEMS, method = EOperationMethod.SELECT)
@GetMapping("/getOne/{pkId}")
@ -198,13 +151,8 @@ public class BdBonusItemsController extends BaseController {
return AjaxResult.success(bonusItemsExt);
}
/**
* @description: 删除奖项配置
* @author: zhang jing
* @date: 2022/8/30 10:21
* @param: [pkId]
* @return: com.hzs.common.core.web.domain.AjaxResult
* 删除奖项配置
**/
@Log(module = EOperationModule.BONUS_CONFIG, business = EOperationBusiness.BONUS_ITEMS, method = EOperationMethod.DELETE)
@DeleteMapping("/{pkId}")
@ -215,13 +163,6 @@ public class BdBonusItemsController extends BaseController {
updateWrapper.set(BdBonusItems::getPkModified, SecurityUtils.getUserId());
updateWrapper.set(BdBonusItems::getModifiedTime, new Date());
redisService.deleteObject(CacheConstants.BD_BONUS_ITEMS + SecurityUtils.getPkCountry());
//删除翻译
BdBonusItems bdBonusItems = iBdBonusItemsService.getById(pkId);
List<Long> pkIdList = new ArrayList<>();
if (null != bdBonusItems.getPkTransaction()) {
pkIdList.add(bdBonusItems.getPkTransaction().longValue());
R<Boolean> b = iTransactionServiceApi.removeTransactionByPkId(pkIdList);
}
return toAjax(iBdBonusItemsService.update(updateWrapper));
}
}

View File

@ -1,16 +1,10 @@
package com.hzs.system.config.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.hzs.common.domain.system.config.BdBonusItems;
/**
* <p>
* 奖项配置 Mapper 接口
* </p>
*
* @author zhangjing
* @since 2022-11-09
*/
public interface BdBonusItemsMapper extends BaseMapper<BdBonusItems> {

View File

@ -1,6 +1,5 @@
package com.hzs.system.config.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.hzs.common.domain.system.config.BdBonusItems;
import com.hzs.common.domain.system.config.ext.BdBonusItemsExt;
@ -8,66 +7,42 @@ import com.hzs.common.domain.system.config.ext.BdBonusItemsExt;
import java.util.List;
/**
* <p>
* 奖项配置 服务类
* </p>
*
* @author zhangjing
* @since 2022-11-09
*/
public interface IBdBonusItemsService extends IService<BdBonusItems> {
/**
* @description: 生成奖项配置
* @author: zhang jing
* @date: 2022/11/10 17:17
* @param: [bonusItems]
* @return: boolean
* 生成奖项配置
**/
boolean generate(BdBonusItems bonusItems);
/**
* @description: 根据国家查询奖项配置列表
* @author: zhang jing
* @date: 2022/11/10 17:17
* @param: [pkCountry]
* @return: java.util.List<com.hzs.common.domain.system.config.ext.BdBonusItemsExt>
* 根据国家查询奖项配置列表
**/
List<BdBonusItemsExt> queryBonusItems(Integer pkCountry);
/**
* @description: 根据国家查询奖项配置列表
* @author: zhang jing
* @date: 2022/11/10 17:17
* @param: [pkCountry]
* @return: java.util.List<com.hzs.common.domain.system.config.ext.BdBonusItemsExt>
* 根据国家查询奖项配置列表
**/
List<BdBonusItemsExt> queryCalBonusItems(Integer pkCountry);
/**
* 查询奖金项
*
* @param bonusValueList 奖金值
* @return: List<BdBonusItems>
* @Author: sui q
* @Date: 2023/3/14 10:08
*/
*/
List<BdBonusItems> queryBonusItemsByValue(List<Integer> bonusValueList);
/**
* 查询奖金项
* @param pkCountry 国家
*
* @param pkCountry 国家
* @param pkBonusItems 奖金项
* @return: BdBonusItemsExt
* @Author: sui q
* @Date: 2023/3/7 18:07
*/
*/
BdBonusItems queryBonusItems(Integer pkCountry, Integer pkBonusItems);
/*
* @description: 国家奖金值
* @author: sui q
* @date: 2024/7/12 10:39
* @param: null null
* 国家奖金值
**/
BdBonusItems queryBonusItemsByBonusValue(Integer pkCountry, Integer bonusValue);
}

View File

@ -2,75 +2,46 @@ package com.hzs.system.config.service.impl;
import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.collection.CollectionUtil;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.hzs.common.core.constant.CacheConstants;
import com.hzs.common.core.constant.SystemFieldConstants;
import com.hzs.common.core.domain.R;
import com.hzs.common.core.enums.EBonusItems;
import com.hzs.common.core.enums.ETransactionKey;
import com.hzs.common.core.enums.EYesNo;
import com.hzs.common.core.service.RedisService;
import com.hzs.common.core.utils.ComputeUtil;
import com.hzs.common.core.utils.StringUtils;
import com.hzs.common.domain.system.config.BdBonusItems;
import com.hzs.common.domain.system.config.ext.BdBonusItemsExt;
import com.hzs.common.security.utils.SecurityUtils;
import com.hzs.system.base.ITransactionServiceApi;
import com.hzs.system.config.mapper.BdBonusItemsMapper;
import com.hzs.system.config.service.IBdBonusItemsService;
import org.apache.dubbo.config.annotation.DubboReference;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.*;
/**
* <p>
* 奖项配置 服务实现类
* </p>
*
* @author zhangjing
* @since 2022-11-09
*/
@Service
public class BdBonusItemsServiceImpl extends ServiceImpl<BdBonusItemsMapper, BdBonusItems> implements IBdBonusItemsService {
@DubboReference
private ITransactionServiceApi iTransactionServiceApi;
@Autowired
private RedisService redisService;
@Autowired
public void setRedisService(RedisService redisService) {
this.redisService = redisService;
}
/**
* @description: 生成奖项配置
* @author: zhang jing
* @date: 2022/11/9 19:38
* @param: [bonusItems]
* @return: boolean
**/
@Override
public boolean generate(BdBonusItems bonusItems) {
Integer pkCountry = SecurityUtils.getPkCountry();
for (EBonusItems value : EBonusItems.values()) {
bonusItems.setBonusName(value.getLabel());
bonusItems.setBonusValue(value.getValue());
//字段翻译保存到数据库
R<Integer> pkTransaction = iTransactionServiceApi.createTransaction(pkCountry, ETransactionKey.BD_BONUS_ITEMS,
value.getLabel(), EYesNo.YES, EYesNo.NO);
bonusItems.setPkTransaction(pkTransaction.getData());
bonusItems.setPkCountry(pkCountry);
bonusItems.setPkCreator(SecurityUtils.getUserId());
bonusItems.setCreationTime(new Date());
QueryWrapper<BdBonusItems> queryWrapper=new QueryWrapper();
queryWrapper.eq("BONUS_VALUE",value.getValue());
queryWrapper.eq("PK_COUNTRY",pkCountry);
BdBonusItems items= baseMapper.selectOne(queryWrapper);
if(StringUtils.isNull(items)){
LambdaQueryWrapper<BdBonusItems> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.eq(BdBonusItems::getBonusValue, value.getValue());
queryWrapper.eq(BdBonusItems::getPkCountry, pkCountry);
BdBonusItems items = baseMapper.selectOne(queryWrapper);
if (StringUtils.isNull(items)) {
baseMapper.insert(bonusItems);
redisService.deleteObject(CacheConstants.BD_BONUS_ITEMS + SecurityUtils.getPkCountry());
}
@ -78,21 +49,14 @@ public class BdBonusItemsServiceImpl extends ServiceImpl<BdBonusItemsMapper, BdB
return true;
}
/**
* @description: 根据国家查询奖项配置列表
* @author: zhang jing
* @date: 2022/11/10 17:11
* @param: [bonusItemsExt]
* @return: java.util.List<com.hzs.common.domain.system.config.ext.BdBonusItemsExt>
**/
@Override
public List<BdBonusItemsExt> queryBonusItems(Integer pkCountry) {
List<BdBonusItemsExt> bonusItemsExtList = redisService.getCacheList(CacheConstants.BD_BONUS_ITEMS + pkCountry);
List<BdBonusItemsExt> bonusItemsExtsNew = new ArrayList<>();
if (CollectionUtil.isEmpty(bonusItemsExtList)) {
QueryWrapper<BdBonusItems> queryWrapper = new QueryWrapper<>();
queryWrapper.eq("PK_COUNTRY", pkCountry);
queryWrapper.orderByAsc("BONUS_VALUE");
LambdaQueryWrapper<BdBonusItems> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.eq(BdBonusItems::getPkCountry, pkCountry);
queryWrapper.orderByAsc(BdBonusItems::getBonusValue);
List<BdBonusItems> btList = baseMapper.selectList(queryWrapper);
if (CollectionUtil.isNotEmpty(btList)) {
btList.forEach(item -> bonusItemsExtsNew.add(BeanUtil.copyProperties(item, BdBonusItemsExt.class)));
@ -107,9 +71,9 @@ public class BdBonusItemsServiceImpl extends ServiceImpl<BdBonusItemsMapper, BdB
@Override
public List<BdBonusItemsExt> queryCalBonusItems(Integer pkCountry) {
List<BdBonusItemsExt> bonusItemsExtList = new ArrayList<>();
QueryWrapper<BdBonusItems> queryWrapper = new QueryWrapper<>();
queryWrapper.eq("PK_COUNTRY", pkCountry);
queryWrapper.orderByAsc("BONUS_VALUE");
LambdaQueryWrapper<BdBonusItems> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.eq(BdBonusItems::getPkCountry, pkCountry);
queryWrapper.orderByAsc(BdBonusItems::getBonusValue);
List<BdBonusItems> bdBonusItems = baseMapper.selectList(queryWrapper);
bdBonusItems.forEach(item -> bonusItemsExtList.add(BeanUtil.copyProperties(item, BdBonusItemsExt.class)));
return bonusItemsExtList;
@ -117,8 +81,8 @@ public class BdBonusItemsServiceImpl extends ServiceImpl<BdBonusItemsMapper, BdB
@Override
public List<BdBonusItems> queryBonusItemsByValue(List<Integer> bonusValueList) {
QueryWrapper<BdBonusItems> queryWrapper = new QueryWrapper<>();
queryWrapper.in("BONUS_VALUE", bonusValueList);
LambdaQueryWrapper<BdBonusItems> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.in(BdBonusItems::getBonusValue, bonusValueList);
return baseMapper.selectList(queryWrapper);
}
@ -140,16 +104,17 @@ public class BdBonusItemsServiceImpl extends ServiceImpl<BdBonusItemsMapper, BdB
@Override
public BdBonusItems queryBonusItemsByBonusValue(Integer pkCountry, Integer bonusValue) {
QueryWrapper<BdBonusItems> queryWrapper = new QueryWrapper<>();
queryWrapper.eq("PK_COUNTRY", pkCountry);
queryWrapper.eq("BONUS_VALUE", bonusValue);
LambdaQueryWrapper<BdBonusItems> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.eq(BdBonusItems::getPkCountry, pkCountry);
queryWrapper.eq(BdBonusItems::getBonusValue, bonusValue);
return baseMapper.selectOne(queryWrapper);
}
private BdBonusItems queryBdBonusItems(Integer pkCountry, Integer pkBonusItems) {
QueryWrapper<BdBonusItems> queryWrapper = new QueryWrapper<>();
queryWrapper.eq("PK_COUNTRY", pkCountry);
queryWrapper.eq(SystemFieldConstants.PK_ID, pkBonusItems);
LambdaQueryWrapper<BdBonusItems> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.eq(BdBonusItems::getPkCountry, pkCountry);
queryWrapper.eq(BdBonusItems::getPkId, pkBonusItems);
return baseMapper.selectOne(queryWrapper);
}
}

View File

@ -1145,7 +1145,7 @@ public class EnumsController extends BaseController {
public AjaxResult bonusItems() {
List<EnumEntity> enumEntityList = new ArrayList<>();
for (EBonusItems value : EBonusItems.values()) {
enumEntityList.add(new EnumEntity(value.getValue(), value.getLabel(), EnumsPrefixConstants.BONUS_ITEMS));
enumEntityList.add(new EnumEntity(value.getValue(), value.getLabel()));
}
return AjaxResult.success(enumEntityList);
}
@ -1161,7 +1161,7 @@ public class EnumsController extends BaseController {
List<EnumEntity> enumEntityList = new ArrayList<>();
for (BdBonusItemsExt bonusItemsExt : list) {
enumEntityList.add(new EnumEntity(bonusItemsExt.getPkTransaction(), bonusItemsExt.getBonusName(), EnumsPrefixConstants.BONUS_ITEMS));
enumEntityList.add(new EnumEntity(bonusItemsExt.getPkTransaction(), bonusItemsExt.getBonusName()));
}
return AjaxResult.success(enumEntityList);

View File

@ -267,11 +267,6 @@ public class EnumsPrefixConstants {
*/
public static final String AWARDS_LEVEL = "ENU_AWARDS_LEVEL";
/**
* 奖项配置
*/
public static final String BONUS_ITEMS = "ENU_BONUS_ITEMS_";
/**
* 语言
*/

View File

@ -29,14 +29,9 @@ public class MagicNumberConstants {
public static final Integer ADDEND = 1;
/**
* 更新条数
* 批量处理数据条数
*/
public static final Integer BATCH_UPDATE_NUM = 300;
/**
* 数据库批量更新(删除)
*/
public static final Integer DELETE_DATA_BATCH_UPDATE_NUM = 100;
public static final Integer BATCH_UPDATE_NUM = 200;
/**
* 系统管理员主键
@ -97,4 +92,21 @@ public class MagicNumberConstants {
*/
public static final BigDecimal big10000 = new BigDecimal("10000");
/**
* 见点收益开始血缘代
*/
public static final Integer POINT_ALGEBRA_START = 1;
/**
* 见点收益结束血缘代
*/
public static final Integer POINT_ALGEBRA_END = 20;
/**
* 见点收益1-10代
*/
public static final BigDecimal BONUS_POINT_10 = new BigDecimal("0.1");
/**
* 见点收益11-20代
*/
public static final BigDecimal BONUS_POINT_20 = new BigDecimal("0.05");
}

View File

@ -100,25 +100,17 @@ public class BonusMsgConstants {
public static String ORI_RANGE = "订单编号%s,%s为%s贡献了平级收益,计算业绩%f,等级名称%s。";
public static String LE_SHARE_RANGE = "订单编号%s,%s为%s贡献了复购极差收益,收益%f。";
/**
* 复购券收益 -- 订单编号%s,%s为%s贡献了复购券收益,计算业绩%f,计算比例%f,复购券收益%f
*/
// public static String REPURCHASE_COUPON_RANGE = "MSG_BONUS_019";
public static String REPURCHASE_COUPON_RANGE = "订单编号%s,%s为%s贡献了复购券收益,计算业绩%f,计算比例%f,复购券收益%f。";
/**
* 云代首购 -- 订单编号%s,%s为%s贡献了云代首购业绩,计算业绩%f,云代首购比例%f
*/
// public static String CLOUD_AGENT_FIRST_REPURCHASE = "MSG_BONUS_020";
public static String CLOUD_AGENT_FIRST_REPURCHASE = "订单编号%s,%s为%s贡献了云代首购业绩,计算业绩%f,云代首购比例%f。";
/**
* 云代复购 -- 订单编号%s,%s为%s贡献了云代复购业绩,计算业绩%f,云代复购比例%f
* 复购见点收益备注
*/
// public static String CLOUD_AGENT_REPURCHASE = "MSG_BONUS_021";
public static String CLOUD_AGENT_REPURCHASE = "订单编号%s,%s为%s贡献了云代复购业绩,计算业绩%f,云代复购比例%f。";
public static String REPURCHASE_POINT = "当前是第%d代,共#代,订单编号%s,%s为%s贡献了见点收益,计算业绩%f,计算比例%f";
/**
* 奖金重算 -- 只能重算7天内的奖金

View File

@ -6,8 +6,6 @@ import lombok.Getter;
/**
* 货币种类
*
* @author: hzs
*/
@AllArgsConstructor
@Getter

View File

@ -11,7 +11,7 @@ import lombok.Getter;
public enum EAssessmentType {
/**
* 0=复购考核见点考核
* 0=复购考核见点收益考核
*/
REPURCHASE_ASSESS(0, "复购考核", 0),

View File

@ -1,6 +1,5 @@
package com.hzs.common.core.enums;
import com.hzs.common.core.constant.EnumsPrefixConstants;
import lombok.AllArgsConstructor;
import lombok.Getter;
@ -14,7 +13,7 @@ public enum EBonusItems {
/**
* 嗨粉直推 禁用
*/
HI_PINK(1, "嗨粉直推", 1, EnumsPrefixConstants.BONUS_ITEMS + 1),
HI_PINK(1, "嗨粉直推", 1),
/**
* 启动卡直推
@ -24,90 +23,100 @@ public enum EBonusItems {
/**
* 直推收益
*/
DIRECT_INCOME(3, "直推收益", 0, EnumsPrefixConstants.BONUS_ITEMS + 3),
DIRECT_INCOME(3, "直推收益", 0),
/**
* 拓展收益
*/
EXPANSION_INCOME(4, "拓展收益", 0, EnumsPrefixConstants.BONUS_ITEMS + 4),
EXPANSION_INCOME(4, "拓展收益", 0),
/**
* 辅导收益
*/
COACHING_INCOME(5, "辅导收益", 0, EnumsPrefixConstants.BONUS_ITEMS + 5),
COACHING_INCOME(5, "辅导收益", 0),
/**
* 分红收益
*/
DIVIDEND_INCOME(6, "分红收益", 0, EnumsPrefixConstants.BONUS_ITEMS + 6),
DIVIDEND_INCOME(6, "分红收益", 0),
/**
* 服务补贴
*/
SERVICE_SUBSIDIES(7, "服务补贴", 0, EnumsPrefixConstants.BONUS_ITEMS + 7),
SERVICE_SUBSIDIES(7, "服务补贴", 0),
/**
* 复购极差收益
*/
REPURCHASE_RANGE_INCOME(8, "复购极差收益", 0, EnumsPrefixConstants.BONUS_ITEMS + 8),
REPURCHASE_RANGE_INCOME(8, "复购极差收益", 0),
/**
* 消费拓展收益
*/
CONSUMPTION_EXPANSION_INCOME(9, "消费拓展收益", 0, EnumsPrefixConstants.BONUS_ITEMS + 9),
CONSUMPTION_EXPANSION_INCOME(9, "消费拓展收益", 0),
/**
* 商城重销
*/
RESALE_IN_THE_MALL(10, "商城重销", 0, EnumsPrefixConstants.BONUS_ITEMS + 10),
RESALE_IN_THE_MALL(10, "商城重销", 0),
/**
* 平台服务费
*/
PLATFORM_SERVICE_FEE(11, "平台服务费", 0, EnumsPrefixConstants.BONUS_ITEMS + 11),
PLATFORM_SERVICE_FEE(11, "平台服务费", 0),
/**
* 复购券
*/
REPURCHASE_COUPONS(12, "复购券", 0, EnumsPrefixConstants.BONUS_ITEMS + 12),
REPURCHASE_COUPONS(12, "复购券", 0),
/**
* 复购券均分收益
*/
REPURCHASE_COUPONS_SHARE(13, "复购券均分", 0, EnumsPrefixConstants.BONUS_ITEMS + 13),
REPURCHASE_COUPONS_SHARE(13, "复购券均分", 0),
/**
* 云代直推收益 修改为幸运收益
*/
CLOUD_AGENT_DIRECT_PUSH(14, "幸运收益", 0, EnumsPrefixConstants.BONUS_ITEMS + 14),
CLOUD_AGENT_DIRECT_PUSH(14, "幸运收益", 1),
/**
* 云代首购收益 修改为极差收益
*/
CLOUD_AGENT_FIRST_PURCHASE(15, "极差收益", 0, EnumsPrefixConstants.BONUS_ITEMS + 15),
CLOUD_AGENT_FIRST_PURCHASE(15, "极差收益", 1),
/**
* 云代复购收益 修改为平级收益
*/
CLOUD_AGENT_REPURCHASE(16, "平级收益", 0, EnumsPrefixConstants.BONUS_ITEMS + 16),
CLOUD_AGENT_REPURCHASE(16, "平级收益", 1),
/**
* 全球分红
*/
// GLOBAL_DIVIDEND(17, "全球分红", 0, EnumsPrefixConstants.BONUS_ITEMS + 17),
// GLOBAL_DIVIDEND(17, "全球分红", 0),
/**
* 环球积分
*/
// GLOBAL_POINTS(18, "环球积分", 0, EnumsPrefixConstants.BONUS_ITEMS + 18),
// GLOBAL_POINTS(18, "环球积分", 0),
/**
* 车奖积分
*/
// CAR_BONUS_POINTS(19, "车奖积分", 0, EnumsPrefixConstants.BONUS_ITEMS + 19),
// CAR_BONUS_POINTS(19, "车奖积分", 0),
/**
* 海粉收益 禁用
*/
// HAI_DOU_INCOME(22, "海粉收益", 1, EnumsPrefixConstants.BONUS_ITEMS + 22),
// HAI_DOU_INCOME(22, "海粉收益", 1),
/**
* 店铺收益
*/
STORE_INCOME(23, "店铺收益", 0, EnumsPrefixConstants.BONUS_ITEMS + 23),
STORE_INCOME(23, "店铺收益", 1),
/**
* 复购直推收益 修改为互助收益
*/
HELP_EACH_INCOME(24, "互助收益", 0, EnumsPrefixConstants.BONUS_ITEMS + 24),
HELP_EACH_INCOME(24, "互助收益", 1),
/**
* 复购辅导收益
*/
REPURCHASE_COACHING_INCOME(25, "复购辅导收益", 0, EnumsPrefixConstants.BONUS_ITEMS + 25),
REPURCHASE_COACHING_INCOME(25, "复购辅导收益", 0),
/**
* 见点收益
*/
REPURCHASE_POINT_INCOME(25, "见点收益", 0),
/**
* 区域收益
*/
REPURCHASE_AREA_INCOME(25, "区域收益", 0),
;
@ -132,8 +141,5 @@ public enum EBonusItems {
* 是否启用0=,1= -- 来源EYesNo
*/
private final int enable;
/**
* 国际化翻译key值
*/
private final String key;
}

View File

@ -6,12 +6,6 @@ import lombok.Getter;
/**
* 计算类型
*
* @author: sui q
* @time: 2022/8/25 15:09
* @description:
* @classname: ECalType
* @package_name: com.hzs.common.core.enums
*/
@AllArgsConstructor
@Getter

View File

@ -6,8 +6,6 @@ import lombok.Getter;
/**
* 翻译key规则前缀枚举类
*
* @author hzs
*/
@AllArgsConstructor
@Getter
@ -68,11 +66,6 @@ public enum ETransactionKey {
* 店铺等级类
*/
STORE_LEVEL(EnumsPrefixConstants.KEY_STORE_LEVEL, "店铺等级类"),
/**
* 奖项类
*/
BD_BONUS_ITEMS(EnumsPrefixConstants.BONUS_ITEMS, "奖项类"),
/**
* 银行类

View File

@ -13,9 +13,6 @@ import lombok.experimental.Accessors;
/**
* 奖金扣项配置
*
* @author hzs
* @since 2022-11-04
*/
@Data
@EqualsAndHashCode(callSuper = true)

View File

@ -273,7 +273,7 @@ public class CuMember extends BaseEntity {
private Integer isBusLicense;
/**
* 是否认证创客空间0=,1=
* 见点收益免考0=1=
*/
@TableField("IS_MAKER_SPACE")
private Integer isMakerSpace;

View File

@ -182,7 +182,7 @@ public class CuMemberBonus extends BaseEntity {
private BigDecimal repurCouponSubtotal;
/**
* 环球积分 修改为乐学直推奖金
* 见点收益
*/
@TableField("GLOBAL_POINTS")
private BigDecimal globalPoints;

View File

@ -431,4 +431,9 @@ public class CuMemberSettleExt extends CuMemberTree {
*/
private BigDecimal bRepBalance;
/**
* 见点收益免考0=1=
*/
private Integer isMakerSpace;
}

View File

@ -7,19 +7,13 @@ import com.baomidou.mybatisplus.annotation.TableName;
import com.hzs.common.core.annotation.Excel;
import com.hzs.common.core.annotation.Transaction;
import com.hzs.common.core.constant.EnumsPrefixConstants;
import com.hzs.common.core.enums.ESettlePeriod;
import com.hzs.common.core.web.domain.BaseEntity;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
/**
* <p>
* 奖项配置
* </p>
*
* @author zhangjing
* @since 2022-11-09
*/
@Data
@EqualsAndHashCode(callSuper = true)
@ -36,7 +30,7 @@ public class BdBonusItems extends BaseEntity {
/**
* 奖金名称
*/
@Excel(name = "奖金名称",sort=1)
@Excel(name = "奖金名称", sort = 1)
@TableField("BONUS_NAME")
private String bonusName;
@ -68,7 +62,7 @@ public class BdBonusItems extends BaseEntity {
/**
* 公布时间
*/
@Excel(name = "公布时间",sort=3)
@Excel(name = "公布时间", sort = 3)
@TableField("PUBLISH_TIME")
private String publishTime;