## 三阶段奖金生成;

This commit is contained in:
cabbage 2025-09-25 13:35:21 +08:00
parent 93926f6932
commit b18b984b5a
6 changed files with 259 additions and 45 deletions

View File

@ -163,43 +163,43 @@ public abstract class BonusSettleHandle {
.pkRate(pkRate) .pkRate(pkRate)
.incomeStatus(incomeStatus) .incomeStatus(incomeStatus)
.directIncome(BigDecimal.ZERO) .directIncome(BigDecimal.ZERO)
// .expandIncome(BigDecimal.ZERO) .expandIncome(BigDecimal.ZERO)
// .expandNoCapping(BigDecimal.ZERO) .expandNoCapping(BigDecimal.ZERO)
// .expandCapping(BigDecimal.ZERO) .expandCapping(BigDecimal.ZERO)
// .coachIncome(BigDecimal.ZERO) .coachIncome(BigDecimal.ZERO)
// .shareIncome(BigDecimal.ZERO) .shareIncome(BigDecimal.ZERO)
// .serviceIncome(BigDecimal.ZERO) .serviceIncome(BigDecimal.ZERO)
// .backPoints(BigDecimal.ZERO) .backPoints(BigDecimal.ZERO)
// .serviceSpend(BigDecimal.ZERO) .serviceSpend(BigDecimal.ZERO)
// .purRealSubtotal(BigDecimal.ZERO) .purRealSubtotal(BigDecimal.ZERO)
// .repurPushIncome(BigDecimal.ZERO) .repurPushIncome(BigDecimal.ZERO)
// .repurRangeIncome(BigDecimal.ZERO) .repurRangeIncome(BigDecimal.ZERO)
// .repurExpandIncome(BigDecimal.ZERO) .repurExpandIncome(BigDecimal.ZERO)
// .repurRealSubtotal(BigDecimal.ZERO) .repurRealSubtotal(BigDecimal.ZERO)
// .cloudDirectIncome(BigDecimal.ZERO) .cloudDirectIncome(BigDecimal.ZERO)
// .cloudPurIncome(BigDecimal.ZERO) .cloudPurIncome(BigDecimal.ZERO)
// .cloudRepurIncome(BigDecimal.ZERO) .cloudRepurIncome(BigDecimal.ZERO)
// .cloudRealSubtotal(BigDecimal.ZERO) .cloudRealSubtotal(BigDecimal.ZERO)
// .repurCoupon(BigDecimal.ZERO) .repurCoupon(BigDecimal.ZERO)
// .repurCouponShare(BigDecimal.ZERO) .repurCouponShare(BigDecimal.ZERO)
// .repurCouponSubtotal(BigDecimal.ZERO) .repurCouponSubtotal(BigDecimal.ZERO)
.globalPoints(BigDecimal.ZERO) .globalPoints(BigDecimal.ZERO)
// .carAwardPoints(BigDecimal.ZERO) .carAwardPoints(BigDecimal.ZERO)
// .hiFunIncome(BigDecimal.ZERO) .hiFunIncome(BigDecimal.ZERO)
// .haiFunIncome(BigDecimal.ZERO) .haiFunIncome(BigDecimal.ZERO)
.storeIncome(BigDecimal.ZERO) .storeIncome(BigDecimal.ZERO)
// .makerDirectIncome(BigDecimal.ZERO) .makerDirectIncome(BigDecimal.ZERO)
// .makerShareIncome(BigDecimal.ZERO) .makerShareIncome(BigDecimal.ZERO)
// .makerRealSubtotal(BigDecimal.ZERO) .makerRealSubtotal(BigDecimal.ZERO)
.realIncomeTotal(BigDecimal.ZERO) .realIncomeTotal(BigDecimal.ZERO)
// .retailRangeIncome(BigDecimal.ZERO) .retailRangeIncome(BigDecimal.ZERO)
// .retailSameLevelIncome(BigDecimal.ZERO) .retailSameLevelIncome(BigDecimal.ZERO)
// .retailAreaIncome(BigDecimal.ZERO) .retailAreaIncome(BigDecimal.ZERO)
// .retailBenefitRangeIncome(BigDecimal.ZERO) .retailBenefitRangeIncome(BigDecimal.ZERO)
// .retailMonthRepurchaseIncome(BigDecimal.ZERO) .retailMonthRepurchaseIncome(BigDecimal.ZERO)
// .retailBenefitAvgIncome(BigDecimal.ZERO) .retailBenefitAvgIncome(BigDecimal.ZERO)
// .retailBenefitIncome(BigDecimal.ZERO) .retailBenefitIncome(BigDecimal.ZERO)
// .retailRealSubtotal(BigDecimal.ZERO) .retailRealSubtotal(BigDecimal.ZERO)
.build(); .build();
cuMemberBonus.setPkCreator(MagicNumberConstants.PK_ADMIN); cuMemberBonus.setPkCreator(MagicNumberConstants.PK_ADMIN);
cuMemberBonus.setPkCountry(pkCountry); cuMemberBonus.setPkCountry(pkCountry);

View File

@ -1003,6 +1003,9 @@ public class BonusSettleRangeHandle extends BonusSettleHandle {
.pointType(EBonusStageType.NORMAL.getValue()) .pointType(EBonusStageType.NORMAL.getValue())
.pointGift(0) .pointGift(0)
.creationTime(settleDate) .creationTime(settleDate)
.thirdBonus1(0)
.thirdBonus2(0)
.thirdBonus3(0)
.updateBool(0) .updateBool(0)
.build(); .build();
detailList.put(newRetailDetail.getChildNode(), newRetailDetail); detailList.put(newRetailDetail.getChildNode(), newRetailDetail);

View File

@ -278,6 +278,9 @@ public class CuMemberBonusStageServiceImpl extends ServiceImpl<CuMemberBonusStag
case BonusConstants.POINT_37: case BonusConstants.POINT_37:
case BonusConstants.POINT_38: case BonusConstants.POINT_38:
// 如果填充的点位是第三层理论上有可能已经全部填满需要判断是否已经完成 // 如果填充的点位是第三层理论上有可能已经全部填满需要判断是否已经完成
if (EBonusStageStatus.YES.getValue() == targetRetailDetail.getStageStatus()) {
break;
}
boolean isFinish = true; boolean isFinish = true;
for (String suffix : BonusConstants.FIELD_LIST) { for (String suffix : BonusConstants.FIELD_LIST) {
if (null == ReflectUtil.getFieldValue(targetRetailDetail, BonusConstants.POINT_MEMBER_FIELD_NAME + suffix)) { if (null == ReflectUtil.getFieldValue(targetRetailDetail, BonusConstants.POINT_MEMBER_FIELD_NAME + suffix)) {
@ -308,6 +311,9 @@ public class CuMemberBonusStageServiceImpl extends ServiceImpl<CuMemberBonusStag
.pointType(targetRetailDetail.getPointType()) .pointType(targetRetailDetail.getPointType())
.pointGift(targetRetailDetail.getPointGift()) .pointGift(targetRetailDetail.getPointGift())
.creationTime(settleDate) .creationTime(settleDate)
.thirdBonus1(0)
.thirdBonus2(0)
.thirdBonus3(0)
.updateBool(0) .updateBool(0)
.build()); .build());
bonusStageDataList.add(bonusStageData); bonusStageDataList.add(bonusStageData);
@ -330,6 +336,9 @@ public class CuMemberBonusStageServiceImpl extends ServiceImpl<CuMemberBonusStag
.pointType(targetRetailDetail.getPointType()) .pointType(targetRetailDetail.getPointType())
.pointGift(targetRetailDetail.getPointGift()) .pointGift(targetRetailDetail.getPointGift())
.creationTime(settleDate) .creationTime(settleDate)
.thirdBonus1(0)
.thirdBonus2(0)
.thirdBonus3(0)
.updateBool(0) .updateBool(0)
.build()); .build());
bonusStageDataList.add(bonusStageData); bonusStageDataList.add(bonusStageData);
@ -632,8 +641,8 @@ public class CuMemberBonusStageServiceImpl extends ServiceImpl<CuMemberBonusStag
if (null != secondMemberRetail) { if (null != secondMemberRetail) {
CuMemberRetailDetail memberDetail = this.getRetailDetailMap(secondMemberRetail, eBonusStage).get(downSecondPoint); CuMemberRetailDetail memberDetail = this.getRetailDetailMap(secondMemberRetail, eBonusStage).get(downSecondPoint);
if (null != memberDetail) { if (null != memberDetail) {
newRetailDetail.setPointMemberSecond(newParentRetailDetail.getPkMember()); newRetailDetail.setPointMemberSecond(memberDetail.getPkMember());
newRetailDetail.setPointSecond(newParentRetailDetail.getChildNode()); newRetailDetail.setPointSecond(memberDetail.getChildNode());
this.fillDownTargetRetailDetail(memberDetail, newRetailDetail, newNode, 2, settleDate, eBonusStage, this.fillDownTargetRetailDetail(memberDetail, newRetailDetail, newNode, 2, settleDate, eBonusStage,
bonusStageDataList); bonusStageDataList);
} }
@ -644,8 +653,8 @@ public class CuMemberBonusStageServiceImpl extends ServiceImpl<CuMemberBonusStag
if (null != firstMemberRetail) { if (null != firstMemberRetail) {
CuMemberRetailDetail memberDetail = this.getRetailDetailMap(firstMemberRetail, eBonusStage).get(downFirstPoint); CuMemberRetailDetail memberDetail = this.getRetailDetailMap(firstMemberRetail, eBonusStage).get(downFirstPoint);
if (null != memberDetail) { if (null != memberDetail) {
newRetailDetail.setPointMemberFirst(newParentRetailDetail.getPkMember()); newRetailDetail.setPointMemberFirst(memberDetail.getPkMember());
newRetailDetail.setPointFirst(newParentRetailDetail.getChildNode()); newRetailDetail.setPointFirst(memberDetail.getChildNode());
this.fillDownTargetRetailDetail(memberDetail, newRetailDetail, newNode, 1, settleDate, eBonusStage, this.fillDownTargetRetailDetail(memberDetail, newRetailDetail, newNode, 1, settleDate, eBonusStage,
bonusStageDataList); bonusStageDataList);
} }

View File

@ -388,7 +388,7 @@
#{item.pointThird, jdbcType=NUMERIC} point_third, #{item.pointMemberThird, jdbcType=NUMERIC} point_member_third, #{item.pointThird, jdbcType=NUMERIC} point_third, #{item.pointMemberThird, jdbcType=NUMERIC} point_member_third,
#{item.thirdBonus1, jdbcType=NUMERIC} third_bonus_1, #{item.thirdBonus1, jdbcType=NUMERIC} third_bonus_1,
#{item.thirdBonus2, jdbcType=NUMERIC} third_bonus_2, #{item.thirdBonus2, jdbcType=NUMERIC} third_bonus_2,
#{item.thirdBonus3, jdbcType=NUMERIC} third_bonus_2 #{item.thirdBonus3, jdbcType=NUMERIC} third_bonus_3
from dual from dual
</foreach> </foreach>
) b ) b

View File

@ -335,9 +335,9 @@
point_second NUMBER(8), point_second NUMBER(8),
point_member_third NUMBER(20), point_member_third NUMBER(20),
point_third NUMBER(8), point_third NUMBER(8),
third_bonus_1 NUMBER(8), third_bonus_1 NUMBER(8) default 0 not null,
third_bonus_2 NUMBER(8), third_bonus_2 NUMBER(8) default 0 not null,
third_bonus_3 NUMBER(8) third_bonus_3 NUMBER(8) default 0 not null
) )
</update> </update>

View File

@ -56,10 +56,124 @@ public class CuMemberBonus extends BaseEntity {
private BigDecimal directIncome; private BigDecimal directIncome;
/** /**
* 阶段收益-众康 * 拓展收益
*/ */
@TableField("STORE_INCOME") @TableField("EXPAND_INCOME")
private BigDecimal storeIncome; private BigDecimal expandIncome;
/**
* 拓展无封 (拓展收益按等级正常比例结算 拓展收益按等级正常比例结算 无封顶)
*/
@TableField("EXPAND_NO_CAPPING")
private BigDecimal expandNoCapping;
/**
* 拓展封顶 (拓展收益按等级正常比例结算不按4-N结算根据配置的封顶值限制最大收益)
*/
@TableField("EXPAND_CAPPING")
private BigDecimal expandCapping;
/**
* 培育津贴
*/
@TableField("COACH_INCOME")
private BigDecimal coachIncome;
/**
* 分红收益
*/
@TableField("SHARE_INCOME")
private BigDecimal shareIncome;
/**
* 报单收益
*/
@TableField("SERVICE_INCOME")
private BigDecimal serviceIncome;
/**
* 商城重消
*/
@TableField("BACK_POINTS")
private BigDecimal backPoints;
/**
* 平台服务费
*/
@TableField("SERVICE_SPEND")
private BigDecimal serviceSpend;
/**
* 首购实发小计
*/
@TableField("PUR_REAL_SUBTOTAL")
private BigDecimal purRealSubtotal;
/**
* 复购推荐收益 修改为互助收益 cu_member_bonus_push
*/
@TableField("REPUR_PUSH_INCOME")
private BigDecimal repurPushIncome;
/**
* 复购级差收益
*/
@TableField("REPUR_RANGE_INCOME")
private BigDecimal repurRangeIncome;
/**
* 复购拓展收益
*/
@TableField("REPUR_EXPAND_INCOME")
private BigDecimal repurExpandIncome;
/**
* 复购实发小计
*/
@TableField("REPUR_REAL_SUBTOTAL")
private BigDecimal repurRealSubtotal;
/**
* 云代直推收益 修改为幸运收益 cu_member_bonus_coach
*/
@TableField("CLOUD_DIRECT_INCOME")
private BigDecimal cloudDirectIncome;
/**
* 云代首购收益 修改为极差收益 cu_member_bonus_range
*/
@TableField("CLOUD_PUR_INCOME")
private BigDecimal cloudPurIncome;
/**
* 云代复购收益 修改为平级收益 cu_member_bonus_range
*/
@TableField("CLOUD_REPUR_INCOME")
private BigDecimal cloudRepurIncome;
/**
* 云代实发小计 修改为 极差小计
*/
@TableField("CLOUD_REAL_SUBTOTAL")
private BigDecimal cloudRealSubtotal;
/**
* 复购券
*/
@TableField("REPUR_COUPON")
private BigDecimal repurCoupon;
/**
* 复购券均分收益
*/
@TableField("REPUR_COUPON_SHARE")
private BigDecimal repurCouponShare;
/**
* 复购券小计
*/
@TableField("REPUR_COUPON_SUBTOTAL")
private BigDecimal repurCouponSubtotal;
/** /**
* 复购见点收益-众康 * 复购见点收益-众康
@ -67,7 +181,95 @@ public class CuMemberBonus extends BaseEntity {
@TableField("GLOBAL_POINTS") @TableField("GLOBAL_POINTS")
private BigDecimal globalPoints; private BigDecimal globalPoints;
/**
* 车奖积分
*/
@TableField("CAR_AWARD_POINTS")
private BigDecimal carAwardPoints;
/**
* 阶段收益-众康
*/
@TableField("STORE_INCOME")
private BigDecimal storeIncome;
/**
* 嗨粉推荐收益
*/
@TableField("HI_FUN_INCOME")
private BigDecimal hiFunIncome;
/**
* 海粉推荐收益
*/
@TableField("HAI_FUN_INCOME")
private BigDecimal haiFunIncome;
/**
* 创客空间直推收益
*/
@TableField("MAKER_DIRECT_INCOME")
private BigDecimal makerDirectIncome;
/**
* 创客共享收益
*/
@TableField("MAKER_SHARE_INCOME")
private BigDecimal makerShareIncome;
/**
* 创客空间收益小计
*/
@TableField("MAKER_REAL_SUBTOTAL")
private BigDecimal makerRealSubtotal;
/**
* 新零售直推收益
*/
@TableField("RETAIL_RANGE_INCOME")
private BigDecimal retailRangeIncome;
/**
* 新零售平级收益
*/
@TableField("RETAIL_SAME_LEVEL_INCOME")
private BigDecimal retailSameLevelIncome;
/**
* 新零售区域分红
*/
@TableField("RETAIL_AREA_INCOME")
private BigDecimal retailAreaIncome;
/**
* 新零售福利级差收益
*/
@TableField("RETAIL_BENEFIT_RANGE_INCOME")
private BigDecimal retailBenefitRangeIncome;
/**
* 新零售复购级差收益
*/
@TableField("RETAIL_MONTH_REPURCHASE_INCOME")
private BigDecimal retailMonthRepurchaseIncome;
/**
* 福利分红平均收益
*/
@TableField("RETAIL_BENEFIT_AVG_INCOME")
private BigDecimal retailBenefitAvgIncome;
/**
* 福利分红加权收益
*/
@TableField("RETAIL_BENEFIT_INCOME")
private BigDecimal retailBenefitIncome;
/**
* 新零售收益小计
*/
@TableField("RETAIL_REAL_SUBTOTAL")
private BigDecimal retailRealSubtotal;
/** /**
* 实发收益总计 * 实发收益总计