Compare commits
	
		
			2 Commits
		
	
	
		
			637aca701d
			...
			91fac644d3
		
	
	| Author | SHA1 | Date | 
|---|---|---|
| 
							
							
								
								 | 
						91fac644d3 | |
| 
							
							
								
								 | 
						f50645d5ab | 
| 
						 | 
				
			
			@ -40,7 +40,7 @@ public interface ICuMemberBonusStageService extends IService<CuMemberBonusStage>
 | 
			
		|||
    /**
 | 
			
		||||
     * 填充指定点位
 | 
			
		||||
     */
 | 
			
		||||
    boolean fillRetailDetail(CuMemberRetailDetail targetRetailDetail, String point,
 | 
			
		||||
    void fillRetailDetail(CuMemberRetailDetail targetRetailDetail, String point,
 | 
			
		||||
                             CuMemberRetailDetail sourceRetailDetail, Date settleDate, EBonusStage eBonusStage,
 | 
			
		||||
                             List<BonusStageData> bonusStageDataList);
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1114,6 +1114,7 @@ public class BonusSettleRangeHandle extends BonusSettleHandle {
 | 
			
		|||
                cuMemberBonusStage.setChildNode(bonusStageData.getTargetChildNode());
 | 
			
		||||
                cuMemberBonusStage.setStage(bonusStageData.getStage());
 | 
			
		||||
                cuMemberBonusStage.setStageNum(bonusStageData.getStageNum());
 | 
			
		||||
                cuMemberBonusStage.setPkSourceMember(sourceMember.getPkMember());
 | 
			
		||||
                stageIncomeRemark(saOrderExt, cuMemberBonusStage, sourceMember, targetMember);
 | 
			
		||||
                BdBonusDeduct bdBonusDeduct = setBonusDetailDeduct(bonusConfigDTO, cuMemberBonusStage, saOrderExt != null ? saOrderExt.getOrderAmount() : null, saOrderExt != null ? saOrderExt.getInExchangeRate() : null);
 | 
			
		||||
                if (EBonusIncomeStatus.NORMAL.getValue() == cuMemberBonusStage.getIncomeStatus()) {
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -18,6 +18,7 @@ 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.sale.ext.SaOrderExt;
 | 
			
		||||
import lombok.extern.slf4j.Slf4j;
 | 
			
		||||
import org.springframework.beans.factory.annotation.Autowired;
 | 
			
		||||
import org.springframework.stereotype.Service;
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -29,6 +30,7 @@ import java.util.*;
 | 
			
		|||
/**
 | 
			
		||||
 * 会员奖金-阶段收益明细表 服务实现类
 | 
			
		||||
 */
 | 
			
		||||
@Slf4j
 | 
			
		||||
@Service
 | 
			
		||||
public class CuMemberBonusStageServiceImpl extends ServiceImpl<CuMemberBonusStageMapper, CuMemberBonusStage> implements ICuMemberBonusStageService {
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -71,7 +73,7 @@ public class CuMemberBonusStageServiceImpl extends ServiceImpl<CuMemberBonusStag
 | 
			
		|||
    public CuMemberBonusStage getCuMemberBonusStage(SaOrderExt saOrderExt, CuMemberRetailRangeExt cuMemberRetailRange, CuMemberBonus cuMemberBonus, Integer pkBonusItems) {
 | 
			
		||||
        CuMemberBonusStage cuMemberBonusStage = CuMemberBonusStage.builder()
 | 
			
		||||
                .pkBonus(cuMemberBonus.getPkId())
 | 
			
		||||
                .pkOrder(saOrderExt.getPkId())
 | 
			
		||||
                .pkOrder(null != saOrderExt ? saOrderExt.getPkId() : 0)
 | 
			
		||||
                .pkBonusItems(pkBonusItems)
 | 
			
		||||
                .incomeStatus(cuMemberRetailRange.getIncomeStatus())
 | 
			
		||||
                .calType(ECalType.VALUE.getValue())
 | 
			
		||||
| 
						 | 
				
			
			@ -117,8 +119,8 @@ public class CuMemberBonusStageServiceImpl extends ServiceImpl<CuMemberBonusStag
 | 
			
		|||
        for (String suffix : BonusConstants.FIELD_LIST) {
 | 
			
		||||
            Field pointMemberField = BonusConstants.FIELD_MAP.get(BonusConstants.POINT_MEMBER_FIELD_NAME + suffix);
 | 
			
		||||
            Field pointField = BonusConstants.FIELD_MAP.get(BonusConstants.POINT_FIELD_NAME + suffix);
 | 
			
		||||
            if (ReflectUtil.getFieldValue(targetRetailDetail, pointMemberField).equals(newParentRetailDetail.getPkMember())
 | 
			
		||||
                    && ReflectUtil.getFieldValue(targetRetailDetail, pointField).equals(newParentRetailDetail.getChildNode())) {
 | 
			
		||||
            if (newParentRetailDetail.getPkMember().equals(ReflectUtil.getFieldValue(targetRetailDetail, pointMemberField))
 | 
			
		||||
                    && newParentRetailDetail.getChildNode().equals(ReflectUtil.getFieldValue(targetRetailDetail, pointField))) {
 | 
			
		||||
                // 中间点位在目标点位的位置,根据位置获取新点位填充的位置
 | 
			
		||||
                switch (suffix) {
 | 
			
		||||
                    case BonusConstants.POINT_11:
 | 
			
		||||
| 
						 | 
				
			
			@ -257,88 +259,95 @@ public class CuMemberBonusStageServiceImpl extends ServiceImpl<CuMemberBonusStag
 | 
			
		|||
     * 填充点位
 | 
			
		||||
     */
 | 
			
		||||
    @Override
 | 
			
		||||
    public boolean fillRetailDetail(CuMemberRetailDetail targetRetailDetail, String point,
 | 
			
		||||
                                    CuMemberRetailDetail sourceRetailDetail, Date settleDate, EBonusStage eBonusStage,
 | 
			
		||||
                                    List<BonusStageData> bonusStageDataList) {
 | 
			
		||||
    public void fillRetailDetail(CuMemberRetailDetail targetRetailDetail, String point,
 | 
			
		||||
                                 CuMemberRetailDetail sourceRetailDetail, Date settleDate, EBonusStage eBonusStage,
 | 
			
		||||
                                 List<BonusStageData> bonusStageDataList) {
 | 
			
		||||
        ReflectUtil.setFieldValue(targetRetailDetail, BonusConstants.POINT_MEMBER_FIELD_NAME + point, sourceRetailDetail.getPkMember());
 | 
			
		||||
        ReflectUtil.setFieldValue(targetRetailDetail, BonusConstants.POINT_FIELD_NAME + point, sourceRetailDetail.getChildNode());
 | 
			
		||||
        ReflectUtil.setFieldValue(targetRetailDetail, BonusConstants.UPDATE_FLAG, 0);
 | 
			
		||||
 | 
			
		||||
        switch (point) {
 | 
			
		||||
            case BonusConstants.POINT_31:
 | 
			
		||||
            case BonusConstants.POINT_32:
 | 
			
		||||
            case BonusConstants.POINT_33:
 | 
			
		||||
            case BonusConstants.POINT_34:
 | 
			
		||||
            case BonusConstants.POINT_35:
 | 
			
		||||
            case BonusConstants.POINT_36:
 | 
			
		||||
            case BonusConstants.POINT_37:
 | 
			
		||||
            case BonusConstants.POINT_38:
 | 
			
		||||
                // 如果填充的点位是第三层,理论上有可能已经全部填满,需要判断是否已经完成
 | 
			
		||||
                boolean isFinish = true;
 | 
			
		||||
                for (String suffix : BonusConstants.FIELD_LIST) {
 | 
			
		||||
                    if (null == ReflectUtil.getFieldValue(targetRetailDetail, BonusConstants.POINT_MEMBER_FIELD_NAME + suffix)) {
 | 
			
		||||
                        isFinish = false;
 | 
			
		||||
                        break;
 | 
			
		||||
        if (EBonusStage.ONE.getValue() == eBonusStage.getValue()
 | 
			
		||||
                || EBonusStage.TWO.getValue() == eBonusStage.getValue()) {
 | 
			
		||||
            switch (point) {
 | 
			
		||||
                case BonusConstants.POINT_31:
 | 
			
		||||
                case BonusConstants.POINT_32:
 | 
			
		||||
                case BonusConstants.POINT_33:
 | 
			
		||||
                case BonusConstants.POINT_34:
 | 
			
		||||
                case BonusConstants.POINT_35:
 | 
			
		||||
                case BonusConstants.POINT_36:
 | 
			
		||||
                case BonusConstants.POINT_37:
 | 
			
		||||
                case BonusConstants.POINT_38:
 | 
			
		||||
                    // 如果填充的点位是第三层,理论上有可能已经全部填满,需要判断是否已经完成
 | 
			
		||||
                    boolean isFinish = true;
 | 
			
		||||
                    for (String suffix : BonusConstants.FIELD_LIST) {
 | 
			
		||||
                        if (null == ReflectUtil.getFieldValue(targetRetailDetail, BonusConstants.POINT_MEMBER_FIELD_NAME + suffix)) {
 | 
			
		||||
                            isFinish = false;
 | 
			
		||||
                            break;
 | 
			
		||||
                        }
 | 
			
		||||
                    }
 | 
			
		||||
                }
 | 
			
		||||
                if (isFinish) {
 | 
			
		||||
                    targetRetailDetail.setStageStatus(EBonusStageStatus.YES.getValue());
 | 
			
		||||
                    targetRetailDetail.setStageDate(settleDate);
 | 
			
		||||
                    if (EBonusStage.ONE.getValue() == eBonusStage.getValue()) {
 | 
			
		||||
                        // 一阶段,全满发放阶段奖
 | 
			
		||||
                        // 返回奖金收益处理数据
 | 
			
		||||
                        BonusStageData bonusStageData = BonusStageData.builder()
 | 
			
		||||
                                .bonusIncome(BonusConstants.ONE_BONUS)
 | 
			
		||||
                                .targetPkMember(targetRetailDetail.getPkMember())
 | 
			
		||||
                                .targetChildNode(targetRetailDetail.getChildNode())
 | 
			
		||||
                                .stage(eBonusStage.getValue())
 | 
			
		||||
                                .stageNum(14)
 | 
			
		||||
                                .build();
 | 
			
		||||
                        // 生成二阶段点位
 | 
			
		||||
                        bonusStageData.setTwoRetailDetail(CuMemberRetailDetail.builder()
 | 
			
		||||
                                .pkMember(targetRetailDetail.getPkMember())
 | 
			
		||||
                                .childNode(targetRetailDetail.getChildNode())
 | 
			
		||||
                                .pkParent(targetRetailDetail.getPkParent())
 | 
			
		||||
                                .stage(EBonusStage.TWO.getValue())
 | 
			
		||||
                                .stageStatus(EBonusStageStatus.NO.getValue())
 | 
			
		||||
                                .pointType(targetRetailDetail.getPointType())
 | 
			
		||||
                                .pointGift(targetRetailDetail.getPointGift())
 | 
			
		||||
                                .creationTime(settleDate)
 | 
			
		||||
                                .updateBool(0)
 | 
			
		||||
                                .build());
 | 
			
		||||
                        bonusStageDataList.add(bonusStageData);
 | 
			
		||||
                    } else if (EBonusStage.TWO.getValue() == eBonusStage.getValue()) {
 | 
			
		||||
                        // 二阶段,全满发放阶段奖
 | 
			
		||||
                        // 返回奖金收益处理数据
 | 
			
		||||
                        BonusStageData bonusStageData = BonusStageData.builder()
 | 
			
		||||
                                .bonusIncome(BonusConstants.TWO_BONUS)
 | 
			
		||||
                                .targetPkMember(targetRetailDetail.getPkMember())
 | 
			
		||||
                                .targetChildNode(targetRetailDetail.getChildNode())
 | 
			
		||||
                                .stage(eBonusStage.getValue())
 | 
			
		||||
                                .stageNum(14)
 | 
			
		||||
                                .build();
 | 
			
		||||
                        bonusStageData.setThreeRetailDetail(CuMemberRetailDetail.builder()
 | 
			
		||||
                                .pkMember(targetRetailDetail.getPkMember())
 | 
			
		||||
                                .childNode(targetRetailDetail.getChildNode())
 | 
			
		||||
                                .pkParent(targetRetailDetail.getPkParent())
 | 
			
		||||
                                .stage(EBonusStage.THREE.getValue())
 | 
			
		||||
                                .stageStatus(EBonusStageStatus.NO.getValue())
 | 
			
		||||
                                .pointType(targetRetailDetail.getPointType())
 | 
			
		||||
                                .pointGift(targetRetailDetail.getPointGift())
 | 
			
		||||
                                .creationTime(settleDate)
 | 
			
		||||
                                .updateBool(0)
 | 
			
		||||
                                .build());
 | 
			
		||||
                        bonusStageDataList.add(bonusStageData);
 | 
			
		||||
                    } else if (EBonusStage.THREE.getValue() == eBonusStage.getValue()) {
 | 
			
		||||
                        // TODO 三阶段发放特殊处理
 | 
			
		||||
                        // TODO 三阶段填充满,判断是否需要赠送点位
 | 
			
		||||
                    if (isFinish) {
 | 
			
		||||
                        targetRetailDetail.setStageStatus(EBonusStageStatus.YES.getValue());
 | 
			
		||||
                        targetRetailDetail.setStageDate(settleDate);
 | 
			
		||||
                        if (EBonusStage.ONE.getValue() == eBonusStage.getValue()) {
 | 
			
		||||
                            // 一阶段,全满发放阶段奖
 | 
			
		||||
                            // 返回奖金收益处理数据
 | 
			
		||||
                            BonusStageData bonusStageData = BonusStageData.builder()
 | 
			
		||||
                                    .bonusIncome(BonusConstants.ONE_BONUS)
 | 
			
		||||
                                    .targetPkMember(targetRetailDetail.getPkMember())
 | 
			
		||||
                                    .targetChildNode(targetRetailDetail.getChildNode())
 | 
			
		||||
                                    .stage(eBonusStage.getValue())
 | 
			
		||||
                                    .stageNum(14)
 | 
			
		||||
                                    .build();
 | 
			
		||||
                            // 生成二阶段点位
 | 
			
		||||
                            bonusStageData.setTwoRetailDetail(CuMemberRetailDetail.builder()
 | 
			
		||||
                                    .pkMember(targetRetailDetail.getPkMember())
 | 
			
		||||
                                    .childNode(targetRetailDetail.getChildNode())
 | 
			
		||||
                                    .pkParent(targetRetailDetail.getPkParent())
 | 
			
		||||
                                    .stage(EBonusStage.TWO.getValue())
 | 
			
		||||
                                    .stageStatus(EBonusStageStatus.NO.getValue())
 | 
			
		||||
                                    .pointType(targetRetailDetail.getPointType())
 | 
			
		||||
                                    .pointGift(targetRetailDetail.getPointGift())
 | 
			
		||||
                                    .creationTime(settleDate)
 | 
			
		||||
                                    .updateBool(0)
 | 
			
		||||
                                    .build());
 | 
			
		||||
                            bonusStageDataList.add(bonusStageData);
 | 
			
		||||
                        } else {
 | 
			
		||||
                            // 二阶段,全满发放阶段奖
 | 
			
		||||
                            // 返回奖金收益处理数据
 | 
			
		||||
                            BonusStageData bonusStageData = BonusStageData.builder()
 | 
			
		||||
                                    .bonusIncome(BonusConstants.TWO_BONUS)
 | 
			
		||||
                                    .targetPkMember(targetRetailDetail.getPkMember())
 | 
			
		||||
                                    .targetChildNode(targetRetailDetail.getChildNode())
 | 
			
		||||
                                    .stage(eBonusStage.getValue())
 | 
			
		||||
                                    .stageNum(14)
 | 
			
		||||
                                    .build();
 | 
			
		||||
                            bonusStageData.setThreeRetailDetail(CuMemberRetailDetail.builder()
 | 
			
		||||
                                    .pkMember(targetRetailDetail.getPkMember())
 | 
			
		||||
                                    .childNode(targetRetailDetail.getChildNode())
 | 
			
		||||
                                    .pkParent(targetRetailDetail.getPkParent())
 | 
			
		||||
                                    .stage(EBonusStage.THREE.getValue())
 | 
			
		||||
                                    .stageStatus(EBonusStageStatus.NO.getValue())
 | 
			
		||||
                                    .pointType(targetRetailDetail.getPointType())
 | 
			
		||||
                                    .pointGift(targetRetailDetail.getPointGift())
 | 
			
		||||
                                    .creationTime(settleDate)
 | 
			
		||||
                                    .updateBool(0)
 | 
			
		||||
                                    .build());
 | 
			
		||||
                            bonusStageDataList.add(bonusStageData);
 | 
			
		||||
                        }
 | 
			
		||||
                        return;
 | 
			
		||||
                    }
 | 
			
		||||
                    break;
 | 
			
		||||
            }
 | 
			
		||||
        } else {
 | 
			
		||||
            // TODO 三阶段发放特殊处理
 | 
			
		||||
            // TODO 三阶段填充满,判断是否需要赠送点位
 | 
			
		||||
            switch (point) {
 | 
			
		||||
                case BonusConstants.POINT_11:
 | 
			
		||||
                case BonusConstants.POINT_12:
 | 
			
		||||
 | 
			
		||||
                    }
 | 
			
		||||
                    return true;
 | 
			
		||||
                }
 | 
			
		||||
                break;
 | 
			
		||||
                    break;
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
        return false;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @Override
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -11,6 +11,7 @@
 | 
			
		|||
            #{items}
 | 
			
		||||
        </foreach>
 | 
			
		||||
        and cmrd.stage = #{stage}
 | 
			
		||||
        and cmrd.stage_status = 1
 | 
			
		||||
        order by cmrd.pk_member, cmrd.child_node
 | 
			
		||||
    </select>
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -22,13 +22,13 @@
 | 
			
		|||
            cal_type, cal_achieve, cal_value,
 | 
			
		||||
            pretax_income, income_tax, real_income, remark,
 | 
			
		||||
            income_ratio, income_dial_ratio, order_dial_ratio,
 | 
			
		||||
            pk_creator, child_node, stage, stage_num)
 | 
			
		||||
            pk_creator, child_node, stage, stage_num, pk_source_member)
 | 
			
		||||
            values (
 | 
			
		||||
            #{item.pkBonus}, #{item.pkOrder}, #{item.pkBonusItems}, #{item.incomeStatus},
 | 
			
		||||
            #{item.calType}, #{item.calAchieve}, #{item.calValue},
 | 
			
		||||
            #{item.pretaxIncome}, #{item.incomeTax}, #{item.realIncome}, #{item.remark},
 | 
			
		||||
            #{item.incomeRatio}, #{item.incomeDialRatio}, #{item.orderDialRatio},
 | 
			
		||||
            #{item.pkCreator}, #{item.childNode}, #{item.stage}, #{item.stageNum})
 | 
			
		||||
            #{item.pkCreator}, #{item.childNode}, #{item.stage}, #{item.stageNum}, #{item.pkSourceMember})
 | 
			
		||||
        </foreach>
 | 
			
		||||
        SELECT 1 FROM dual
 | 
			
		||||
    </insert>
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -133,5 +133,11 @@ public class CuMemberBonusStage extends BaseEntity {
 | 
			
		|||
    @TableField("STAGE_NUM")
 | 
			
		||||
    private Integer stageNum;
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * 来源会员ID
 | 
			
		||||
     */
 | 
			
		||||
    @TableField("PK_SOURCE_MEMBER")
 | 
			
		||||
    private Long pkSourceMember;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in New Issue