Compare commits
	
		
			2 Commits
		
	
	
		
			e1da81afaa
			...
			1595f11723
		
	
	| Author | SHA1 | Date | 
|---|---|---|
| 
							
							
								
								 | 
						1595f11723 | |
| 
							
							
								
								 | 
						bc0f51446f | 
| 
						 | 
					@ -113,17 +113,15 @@ public interface CuMemberTreeMapper extends BaseMapper<CuMemberTree> {
 | 
				
			||||||
     */
 | 
					     */
 | 
				
			||||||
    Integer queryExistOrderTableCount(String tableName);
 | 
					    Integer queryExistOrderTableCount(String tableName);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    /*
 | 
					    /**
 | 
				
			||||||
     *  回退会员奖衔
 | 
					     * 回退会员奖衔
 | 
				
			||||||
     **/
 | 
					     */
 | 
				
			||||||
    void updateBackCuMemberRetailRangeAward(@Param("rangeTableName") String rangeTableName, @Param("period") Integer period,
 | 
					    void updateBackCuMemberRetailRangeAward(@Param("rangeTableName") String rangeTableName, @Param("period") Integer period);
 | 
				
			||||||
                                            @Param("awardType") Integer awardType);
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
    /*
 | 
					    /**
 | 
				
			||||||
     *  回退会员奖衔
 | 
					     * 回退会员奖衔
 | 
				
			||||||
     **/
 | 
					     */
 | 
				
			||||||
    void updateCuMemberRetailRangeAwardByDate(@Param("rangeTableName") String rangeTableName, @Param("settleDate") Date settleDate,
 | 
					    void updateCuMemberRetailRangeAwardByDate(@Param("rangeTableName") String rangeTableName, @Param("settleDate") Date settleDate);
 | 
				
			||||||
                                              @Param("awardType") Integer awardType);
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
    /**
 | 
					    /**
 | 
				
			||||||
     * 根据订单,查询出网体中记录的会员数据,推荐人、安置人
 | 
					     * 根据订单,查询出网体中记录的会员数据,推荐人、安置人
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -111,14 +111,12 @@ public class CuMemberTreeServiceImpl extends ServiceImpl<CuMemberTreeMapper, CuM
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    @Override
 | 
					    @Override
 | 
				
			||||||
    public void updateBackCuMemberRetailRangeAward(String rangeTableName, Integer period) {
 | 
					    public void updateBackCuMemberRetailRangeAward(String rangeTableName, Integer period) {
 | 
				
			||||||
        baseMapper.updateBackCuMemberRetailRangeAward(rangeTableName, period, EAwardsType.RANGE_TYPE.getValue());
 | 
					        baseMapper.updateBackCuMemberRetailRangeAward(rangeTableName, period);
 | 
				
			||||||
        baseMapper.updateBackCuMemberRetailRangeAward(rangeTableName, period, EAwardsType.SHARE_TYPE.getValue());
 | 
					 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    @Override
 | 
					    @Override
 | 
				
			||||||
    public void updateCuMemberRetailRangeAwardByDate(String rangeTableName, Date settleDate) {
 | 
					    public void updateCuMemberRetailRangeAwardByDate(String rangeTableName, Date settleDate) {
 | 
				
			||||||
        baseMapper.updateCuMemberRetailRangeAwardByDate(rangeTableName, settleDate, EAwardsType.RANGE_TYPE.getValue());
 | 
					        baseMapper.updateCuMemberRetailRangeAwardByDate(rangeTableName, settleDate);
 | 
				
			||||||
        baseMapper.updateCuMemberRetailRangeAwardByDate(rangeTableName, settleDate, EAwardsType.SHARE_TYPE.getValue());
 | 
					 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    @Override
 | 
					    @Override
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -42,21 +42,11 @@ public interface CuMemberMapper extends BaseMapper<CuMember> {
 | 
				
			||||||
    /**
 | 
					    /**
 | 
				
			||||||
     * 更新会员奖衔根据临时表
 | 
					     * 更新会员奖衔根据临时表
 | 
				
			||||||
     */
 | 
					     */
 | 
				
			||||||
    void updateBackCuMemberRetailRangeAward(@Param("period") Integer period, @Param("awardType") Integer awardType);
 | 
					    void updateBackCuMemberRetailRangeAward(@Param("period") Integer period);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    /**
 | 
					    /**
 | 
				
			||||||
     * 更新会员奖衔根据临时表
 | 
					     * 更新会员奖衔根据临时表
 | 
				
			||||||
     */
 | 
					     */
 | 
				
			||||||
    void updateCuMemberRetailRangeAwardByDate(@Param("settleDate") Date settleDate, @Param("awardType") Integer awardType);
 | 
					    void updateCuMemberRetailRangeAwardByDate(@Param("settleDate") Date settleDate);
 | 
				
			||||||
 | 
					 | 
				
			||||||
    /**
 | 
					 | 
				
			||||||
     * 初始化会员奖衔
 | 
					 | 
				
			||||||
     */
 | 
					 | 
				
			||||||
    void updateCuMemberRetailRangeInitAward();
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    /**
 | 
					 | 
				
			||||||
     * 初始化会员V5奖衔
 | 
					 | 
				
			||||||
     */
 | 
					 | 
				
			||||||
    void updateCuMemberRetailRangeInitV5Award();
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -3,7 +3,6 @@ package com.hzs.bonus.base.service;
 | 
				
			||||||
import com.baomidou.mybatisplus.extension.service.IService;
 | 
					import com.baomidou.mybatisplus.extension.service.IService;
 | 
				
			||||||
import com.hzs.common.domain.member.base.CuMember;
 | 
					import com.hzs.common.domain.member.base.CuMember;
 | 
				
			||||||
import com.hzs.common.domain.member.detail.CuMemberAwards;
 | 
					import com.hzs.common.domain.member.detail.CuMemberAwards;
 | 
				
			||||||
import org.apache.ibatis.annotations.Param;
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
import java.io.Serializable;
 | 
					import java.io.Serializable;
 | 
				
			||||||
import java.util.Date;
 | 
					import java.util.Date;
 | 
				
			||||||
| 
						 | 
					@ -44,9 +43,4 @@ public interface ICuMemberService extends IService<CuMember> {
 | 
				
			||||||
     */
 | 
					     */
 | 
				
			||||||
    void updateCuMemberRetailRangeAwardByDate(Date settleDate);
 | 
					    void updateCuMemberRetailRangeAwardByDate(Date settleDate);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    /**
 | 
					 | 
				
			||||||
     * 初始化会员奖衔表
 | 
					 | 
				
			||||||
     */
 | 
					 | 
				
			||||||
    void updateCuMemberRetailRangeInitAward();
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -25,7 +25,6 @@ public class CuMemberServiceImpl extends ServiceImpl<CuMemberMapper, CuMember> i
 | 
				
			||||||
    @Override
 | 
					    @Override
 | 
				
			||||||
    public void updateCuMemberRetailRangeByPeriod(Integer period) {
 | 
					    public void updateCuMemberRetailRangeByPeriod(Integer period) {
 | 
				
			||||||
        baseMapper.updateCuMemberRetailAwardsByPeriod(period, EAwardsType.RANGE_TYPE.getValue());
 | 
					        baseMapper.updateCuMemberRetailAwardsByPeriod(period, EAwardsType.RANGE_TYPE.getValue());
 | 
				
			||||||
        baseMapper.updateCuMemberRetailAwardsByPeriod(period, EAwardsType.SHARE_TYPE.getValue());
 | 
					 | 
				
			||||||
        // 更新会员最高奖衔
 | 
					        // 更新会员最高奖衔
 | 
				
			||||||
        baseMapper.updateCuMemberMaxAwardsByPeriod(period, EAwardsType.RANGE_TYPE.getValue());
 | 
					        baseMapper.updateCuMemberMaxAwardsByPeriod(period, EAwardsType.RANGE_TYPE.getValue());
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
| 
						 | 
					@ -33,31 +32,21 @@ public class CuMemberServiceImpl extends ServiceImpl<CuMemberMapper, CuMember> i
 | 
				
			||||||
    @Override
 | 
					    @Override
 | 
				
			||||||
    public void updateCuMemberRetailRangeByList(List<CuMemberAwards> cuMemberAwardsList, Integer period) {
 | 
					    public void updateCuMemberRetailRangeByList(List<CuMemberAwards> cuMemberAwardsList, Integer period) {
 | 
				
			||||||
        baseMapper.updateCuMemberRetailRangeByList(cuMemberAwardsList, period, EAwardsType.RANGE_TYPE.getValue());
 | 
					        baseMapper.updateCuMemberRetailRangeByList(cuMemberAwardsList, period, EAwardsType.RANGE_TYPE.getValue());
 | 
				
			||||||
        baseMapper.updateCuMemberRetailRangeByList(cuMemberAwardsList, period, EAwardsType.SHARE_TYPE.getValue());
 | 
					 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    @Override
 | 
					    @Override
 | 
				
			||||||
    public void updateCuMemberMinAwardsByList(List<CuMemberAwards> cuMemberAwardsList, Integer period) {
 | 
					    public void updateCuMemberMinAwardsByList(List<CuMemberAwards> cuMemberAwardsList, Integer period) {
 | 
				
			||||||
        baseMapper.updateCuMemberRetailRangeByList(cuMemberAwardsList, period, EAwardsType.RANGE_TYPE.getValue());
 | 
					        baseMapper.updateCuMemberRetailRangeByList(cuMemberAwardsList, period, EAwardsType.RANGE_TYPE.getValue());
 | 
				
			||||||
        baseMapper.updateCuMemberRetailRangeByList(cuMemberAwardsList, period, EAwardsType.SHARE_TYPE.getValue());
 | 
					 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    @Override
 | 
					    @Override
 | 
				
			||||||
    public void updateBackCuMemberRetailRangeAward(Integer period) {
 | 
					    public void updateBackCuMemberRetailRangeAward(Integer period) {
 | 
				
			||||||
        baseMapper.updateBackCuMemberRetailRangeAward(period, EAwardsType.RANGE_TYPE.getValue());
 | 
					        baseMapper.updateBackCuMemberRetailRangeAward(period);
 | 
				
			||||||
        baseMapper.updateBackCuMemberRetailRangeAward(period, EAwardsType.SHARE_TYPE.getValue());
 | 
					 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    @Override
 | 
					    @Override
 | 
				
			||||||
    public void updateCuMemberRetailRangeAwardByDate(Date settleDate) {
 | 
					    public void updateCuMemberRetailRangeAwardByDate(Date settleDate) {
 | 
				
			||||||
        baseMapper.updateCuMemberRetailRangeAwardByDate(settleDate, EAwardsType.RANGE_TYPE.getValue());
 | 
					        baseMapper.updateCuMemberRetailRangeAwardByDate(settleDate);
 | 
				
			||||||
        baseMapper.updateCuMemberRetailRangeAwardByDate(settleDate, EAwardsType.SHARE_TYPE.getValue());
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    @Override
 | 
					 | 
				
			||||||
    public void updateCuMemberRetailRangeInitAward() {
 | 
					 | 
				
			||||||
        baseMapper.updateCuMemberRetailRangeInitAward();
 | 
					 | 
				
			||||||
        baseMapper.updateCuMemberRetailRangeInitV5Award();
 | 
					 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -289,7 +289,7 @@ public class BonusSettleRangeHandle extends BonusSettleHandle {
 | 
				
			||||||
        // 结算明细前一天表
 | 
					        // 结算明细前一天表
 | 
				
			||||||
        String yesterdayRangeDetailTableName = TableNameConstants.CU_MEMBER_RETAIL_RANGE_DETAIL + yesterdayPeriod;
 | 
					        String yesterdayRangeDetailTableName = TableNameConstants.CU_MEMBER_RETAIL_RANGE_DETAIL + yesterdayPeriod;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        // TODO 回退奖衔,将奖衔回退到结算前状态
 | 
					        // 回退奖衔,将奖衔回退到结算前状态
 | 
				
			||||||
        iCuMemberAwardsService.calculateCuMemberRetailRangeAwardsInit(settleDate, period, rangeTableName);
 | 
					        iCuMemberAwardsService.calculateCuMemberRetailRangeAwardsInit(settleDate, period, rangeTableName);
 | 
				
			||||||
        // 初始化结算网体数据(昨天数据更新到今天数据)
 | 
					        // 初始化结算网体数据(昨天数据更新到今天数据)
 | 
				
			||||||
        iCuMemberRetailRangeService.mergeMemberRetailRangeByYesterday(rangeTableName, yesterdayRangeTableName, isSameMonth);
 | 
					        iCuMemberRetailRangeService.mergeMemberRetailRangeByYesterday(rangeTableName, yesterdayRangeTableName, isSameMonth);
 | 
				
			||||||
| 
						 | 
					@ -330,26 +330,52 @@ public class BonusSettleRangeHandle extends BonusSettleHandle {
 | 
				
			||||||
            List<CuMemberBonusDetail> cuMemberBonusDetailList = new ArrayList<>();
 | 
					            List<CuMemberBonusDetail> cuMemberBonusDetailList = new ArrayList<>();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            for (SaOrderExt saOrderExt : orderList) {
 | 
					            for (SaOrderExt saOrderExt : orderList) {
 | 
				
			||||||
 | 
					                CuMemberRetailRangeExt sourceMember = memberRangeExtMap.get(saOrderExt.getPkMember());
 | 
				
			||||||
 | 
					                if (null == sourceMember) {
 | 
				
			||||||
 | 
					                    log.warn("订单会员不存在, pkMember: {}", saOrderExt.getPkMember());
 | 
				
			||||||
 | 
					                    continue;
 | 
				
			||||||
 | 
					                }
 | 
				
			||||||
 | 
					                BigDecimal orderAchieve = saOrderExt.getOrderAchieve();
 | 
				
			||||||
 | 
					                BigDecimal orderAmount = saOrderExt.getOrderAmount();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                // 自己消费的相关金额、业绩处理
 | 
				
			||||||
 | 
					                sourceMember.setNewConsumePv(orderAchieve);
 | 
				
			||||||
 | 
					                sourceMember.setConsumePv(sourceMember.getConsumePv().add(orderAchieve));
 | 
				
			||||||
 | 
					                sourceMember.setMonthConsumePv(sourceMember.getMonthConsumePv().add(orderAchieve));
 | 
				
			||||||
 | 
					                sourceMember.setNewConsumeAmount(orderAmount);
 | 
				
			||||||
 | 
					                sourceMember.setConsumeAmount(sourceMember.getConsumeAmount().add(orderAmount));
 | 
				
			||||||
 | 
					                sourceMember.setMonthConsumeAmount(sourceMember.getMonthConsumeAmount().add(orderAmount));
 | 
				
			||||||
 | 
					                // TODO 自己计算奖衔
 | 
				
			||||||
 | 
					                this.calculateAwards(period, memberRangeExtMap, rangeTableName, saOrderExt, retailAwardsMap, cuMemberAwardsList, sourceMember);
 | 
				
			||||||
 | 
					                // TODO 累计团队业绩、金额 + 计算奖衔
 | 
				
			||||||
 | 
					                this.calculateParentAwards(period, memberRangeExtMap, rangeTableName, sourceMember, saOrderExt, retailAwardsMap);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                if (EOrderType.RETAIL_REGISTER.getValue() == saOrderExt.getOrderType()
 | 
					                if (EOrderType.RETAIL_REGISTER.getValue() == saOrderExt.getOrderType()
 | 
				
			||||||
                        || EOrderType.RETAIL_UPGRADE.getValue() == saOrderExt.getOrderType()) {
 | 
					                        || EOrderType.RETAIL_UPGRADE.getValue() == saOrderExt.getOrderType()) {
 | 
				
			||||||
                    // 精品专区、甄选专区
 | 
					                    // 精品专区、甄选专区
 | 
				
			||||||
 | 
					                    sourceMember.setRegConsumeNewPv(sourceMember.getRegConsumeNewPv().add(orderAchieve));
 | 
				
			||||||
 | 
					                    sourceMember.setRegConsumeNewAmount(sourceMember.getRegConsumeNewAmount().add(orderAmount));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                    // 直推收益 -- 来源订单金额,直推拿金额的10%
 | 
					                    // 直推收益 -- 来源订单金额,直推拿金额的10%
 | 
				
			||||||
                    this.calculateDirectIncome(cuMemberBonusPushList, memberRangeExtMap, saOrderExt,
 | 
					                    this.calculateDirectIncome(cuMemberBonusPushList, memberRangeExtMap, sourceMember, saOrderExt,
 | 
				
			||||||
                            bonusConfigDTO, period, cuMemberBonusMap);
 | 
					                            bonusConfigDTO, period, cuMemberBonusMap);
 | 
				
			||||||
                    // 一阶段收益 -- 来源订单金额
 | 
					                    // 一阶段收益 -- 来源订单金额
 | 
				
			||||||
                    stageList.addAll(this.calculateStageIncome(cuMemberBonusStageList, cuMemberBonusMap, bonusConfigDTO, period,
 | 
					                    stageList.addAll(this.calculateStageIncome(cuMemberBonusStageList, cuMemberBonusMap, bonusConfigDTO, period,
 | 
				
			||||||
                            memberRangeExtMap, saOrderExt, settleStartDate, rangeTableName, rangeDetailTableName));
 | 
					                            memberRangeExtMap, sourceMember, saOrderExt, settleStartDate, rangeTableName, rangeDetailTableName));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                    // TODO 领导级差收益 -- 来源PV
 | 
					                    // TODO 领导级差收益 -- 来源PV
 | 
				
			||||||
                    // TODO 领导平差收益 -- 来源PV
 | 
					                    // TODO 领导平差收益 -- 来源PV
 | 
				
			||||||
                } else if (EOrderType.RETAIL_REPURCHASE.getValue() == saOrderExt.getOrderType()) {
 | 
					                } else if (EOrderType.RETAIL_REPURCHASE.getValue() == saOrderExt.getOrderType()) {
 | 
				
			||||||
                    // 商城专区
 | 
					                    // 商城专区
 | 
				
			||||||
 | 
					                    sourceMember.setRepConsumeNewPv(sourceMember.getRepConsumeNewPv().add(orderAchieve));
 | 
				
			||||||
 | 
					                    sourceMember.setRepConsumeNewAmount(sourceMember.getRepConsumeNewAmount().add(orderAmount));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                    // 见点收益 -- 来源订单业绩,血缘上20代,每代拿业绩的10%
 | 
					                    // 见点收益 -- 来源订单业绩,血缘上20代,每代拿业绩的10%
 | 
				
			||||||
                    this.calculateRepurDirectIncome(cuMemberBonusPushList, memberRangeExtMap, saOrderExt,
 | 
					                    this.calculateRepurDirectIncome(cuMemberBonusPushList, memberRangeExtMap, sourceMember, saOrderExt,
 | 
				
			||||||
                            bonusConfigDTO, period, cuMemberBonusMap);
 | 
					                            bonusConfigDTO, period, cuMemberBonusMap);
 | 
				
			||||||
                    // 一阶段收益 -- 来源订单累计业绩
 | 
					                    // 一阶段收益 -- 来源订单累计业绩
 | 
				
			||||||
                    stageList.addAll(this.calculateStageIncome(cuMemberBonusStageList, cuMemberBonusMap, bonusConfigDTO, period,
 | 
					                    stageList.addAll(this.calculateStageIncome(cuMemberBonusStageList, cuMemberBonusMap, bonusConfigDTO, period,
 | 
				
			||||||
                            memberRangeExtMap, saOrderExt, settleStartDate, rangeTableName, rangeDetailTableName));
 | 
					                            memberRangeExtMap, sourceMember, saOrderExt, settleStartDate, rangeTableName, rangeDetailTableName));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                }
 | 
					                }
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
| 
						 | 
					@ -819,15 +845,9 @@ public class BonusSettleRangeHandle extends BonusSettleHandle {
 | 
				
			||||||
    /**
 | 
					    /**
 | 
				
			||||||
     * 计算直推收益 -- 精品专区
 | 
					     * 计算直推收益 -- 精品专区
 | 
				
			||||||
     */
 | 
					     */
 | 
				
			||||||
    private void calculateDirectIncome(List<CuMemberBonusPush> cuMemberBonusPushList, Map<Long, CuMemberRetailRangeExt> memberRangeExtMap, SaOrderExt saOrderExt,
 | 
					    private void calculateDirectIncome(List<CuMemberBonusPush> cuMemberBonusPushList, Map<Long, CuMemberRetailRangeExt> memberRangeExtMap,
 | 
				
			||||||
 | 
					                                       CuMemberRetailRangeExt sourceMember, SaOrderExt saOrderExt,
 | 
				
			||||||
                                       BonusConfigDTO bonusConfigDTO, Integer period, Map<Long, CuMemberBonus> cuMemberBonusMap) {
 | 
					                                       BonusConfigDTO bonusConfigDTO, Integer period, Map<Long, CuMemberBonus> cuMemberBonusMap) {
 | 
				
			||||||
        // 订单会员
 | 
					 | 
				
			||||||
        CuMemberRetailRangeExt sourceMember = memberRangeExtMap.get(saOrderExt.getPkMember());
 | 
					 | 
				
			||||||
        if (null == sourceMember) {
 | 
					 | 
				
			||||||
            log.warn("直推收益:订单会员不存在, pkMember: {}", saOrderExt.getPkMember());
 | 
					 | 
				
			||||||
            return;
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        // 订单会员推荐人
 | 
					        // 订单会员推荐人
 | 
				
			||||||
        CuMemberRetailRangeExt targetMember = memberRangeExtMap.get(sourceMember.getPkParent());
 | 
					        CuMemberRetailRangeExt targetMember = memberRangeExtMap.get(sourceMember.getPkParent());
 | 
				
			||||||
        if (null == targetMember) {
 | 
					        if (null == targetMember) {
 | 
				
			||||||
| 
						 | 
					@ -868,14 +888,9 @@ public class BonusSettleRangeHandle extends BonusSettleHandle {
 | 
				
			||||||
    /**
 | 
					    /**
 | 
				
			||||||
     * 计算见点收益 -- 商城专区
 | 
					     * 计算见点收益 -- 商城专区
 | 
				
			||||||
     */
 | 
					     */
 | 
				
			||||||
    private void calculateRepurDirectIncome(List<CuMemberBonusPush> cuMemberBonusPushList, Map<Long, CuMemberRetailRangeExt> memberRangeExtMap, SaOrderExt saOrderExt,
 | 
					    private void calculateRepurDirectIncome(List<CuMemberBonusPush> cuMemberBonusPushList, Map<Long, CuMemberRetailRangeExt> memberRangeExtMap,
 | 
				
			||||||
 | 
					                                            CuMemberRetailRangeExt sourceMember, SaOrderExt saOrderExt,
 | 
				
			||||||
                                            BonusConfigDTO bonusConfigDTO, Integer period, Map<Long, CuMemberBonus> cuMemberBonusMap) {
 | 
					                                            BonusConfigDTO bonusConfigDTO, Integer period, Map<Long, CuMemberBonus> cuMemberBonusMap) {
 | 
				
			||||||
        // 订单会员
 | 
					 | 
				
			||||||
        CuMemberRetailRangeExt sourceMember = memberRangeExtMap.get(saOrderExt.getPkMember());
 | 
					 | 
				
			||||||
        if (null == sourceMember) {
 | 
					 | 
				
			||||||
            log.warn("订单会员不存在, pkMember: {}", saOrderExt.getPkMember());
 | 
					 | 
				
			||||||
            return;
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        // 推荐人
 | 
					        // 推荐人
 | 
				
			||||||
        long pkParent = sourceMember.getPkParent();
 | 
					        long pkParent = sourceMember.getPkParent();
 | 
				
			||||||
        // 代数
 | 
					        // 代数
 | 
				
			||||||
| 
						 | 
					@ -959,16 +974,10 @@ public class BonusSettleRangeHandle extends BonusSettleHandle {
 | 
				
			||||||
     * 计算一阶段收益 -- 精品专区、商城专区
 | 
					     * 计算一阶段收益 -- 精品专区、商城专区
 | 
				
			||||||
     */
 | 
					     */
 | 
				
			||||||
    private List<CuMemberRetailDetail> calculateStageIncome(List<CuMemberBonusStage> cuMemberBonusStageList, Map<Long, CuMemberBonus> cuMemberBonusMap,
 | 
					    private List<CuMemberRetailDetail> calculateStageIncome(List<CuMemberBonusStage> cuMemberBonusStageList, Map<Long, CuMemberBonus> cuMemberBonusMap,
 | 
				
			||||||
                                                            BonusConfigDTO bonusConfigDTO, Integer period,
 | 
					                                                            BonusConfigDTO bonusConfigDTO, Integer period, Map<Long, CuMemberRetailRangeExt> memberRangeExtMap,
 | 
				
			||||||
                                                            Map<Long, CuMemberRetailRangeExt> memberRangeExtMap, SaOrderExt saOrderExt,
 | 
					                                                            CuMemberRetailRangeExt sourceMember, SaOrderExt saOrderExt,
 | 
				
			||||||
                                                            Date settleDate, String rangeTableName, String rangeDetailTableName) {
 | 
					                                                            Date settleDate, String rangeTableName, String rangeDetailTableName) {
 | 
				
			||||||
        List<CuMemberRetailDetail> returnRetailDetailList = new ArrayList<>();
 | 
					        List<CuMemberRetailDetail> returnRetailDetailList = new ArrayList<>();
 | 
				
			||||||
        // 订单会员
 | 
					 | 
				
			||||||
        CuMemberRetailRangeExt sourceMember = memberRangeExtMap.get(saOrderExt.getPkMember());
 | 
					 | 
				
			||||||
        if (null == sourceMember) {
 | 
					 | 
				
			||||||
            log.error("阶段收益处理失败,订单会员不存在. orderCode: {}, pkMember: {}", saOrderExt.getOrderCode(), saOrderExt.getPkMember());
 | 
					 | 
				
			||||||
            return returnRetailDetailList;
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
        // 订单生成新点位数量
 | 
					        // 订单生成新点位数量
 | 
				
			||||||
        int newPointInt;
 | 
					        int newPointInt;
 | 
				
			||||||
| 
						 | 
					@ -1279,4 +1288,120 @@ public class BonusSettleRangeHandle extends BonusSettleHandle {
 | 
				
			||||||
        return resultList;
 | 
					        return resultList;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    /**
 | 
				
			||||||
 | 
					     * 计算奖衔
 | 
				
			||||||
 | 
					     */
 | 
				
			||||||
 | 
					    private void calculateAwards(Integer period, Map<Long, CuMemberRetailRangeExt> memberRangeExtMap, String rangeTableName,
 | 
				
			||||||
 | 
					                                 SaOrderExt saOrderExt, Map<Integer, BdAwards> retailAwardsMap, List<CuMemberAwards> cuMemberAwardsList,
 | 
				
			||||||
 | 
					                                 CuMemberRetailRangeExt targetMember) {
 | 
				
			||||||
 | 
					//        // 校验大小区会员数据
 | 
				
			||||||
 | 
					//        List<CuMemberRetailRangeExt> cuMemberRangeExtList = null;
 | 
				
			||||||
 | 
					//        // 校验累计小部门会员数据
 | 
				
			||||||
 | 
					//        List<CuMemberRetailRangeExt> cuMemberRetailRangeExtList = null;
 | 
				
			||||||
 | 
					//        // 计算分红奖衔
 | 
				
			||||||
 | 
					//        while (true) {
 | 
				
			||||||
 | 
					//            // 当月奖衔值 + 5,获取下一个奖衔值
 | 
				
			||||||
 | 
					//            int awardsValue = targetMember.getAwardsValue() + 5;
 | 
				
			||||||
 | 
					//            if (retailAwardsMap.containsKey(awardsValue)) {
 | 
				
			||||||
 | 
					//                BdAwards bdAwards = retailAwardsMap.get(awardsValue);
 | 
				
			||||||
 | 
					//                // 先验证累计业绩
 | 
				
			||||||
 | 
					//                if (ComputeUtil.compareValue(ComputeUtil.computeAdd(targetMember.getTeamConsumePv(), targetMember.getConsumePv()), bdAwards.getShareTotalCheck())) {
 | 
				
			||||||
 | 
					//                    // 再验证小区,计算小区业绩(拉取直推会员数据)
 | 
				
			||||||
 | 
					//                    if (null == cuMemberRangeExtList) {
 | 
				
			||||||
 | 
					//                        // 昨日结算表,查询订单会员直推数据
 | 
				
			||||||
 | 
					//                        cuMemberRangeExtList = iCuMemberRetailRangeService.queryCuMemberRetailRangeExtByParent(rangeTableName, targetMember.getPkMember());
 | 
				
			||||||
 | 
					//                    }
 | 
				
			||||||
 | 
					//                    // 本人月消费业绩(默认为大区)
 | 
				
			||||||
 | 
					//                    BigDecimal consumeBigPv = targetMember.getMonthConsumePv();
 | 
				
			||||||
 | 
					//                    for (CuMemberRetailRangeExt cuMemberRetailRangeExt : cuMemberRangeExtList) {
 | 
				
			||||||
 | 
					//                        if (memberRangeExtMap.containsKey(cuMemberRetailRangeExt.getPkMember())) {
 | 
				
			||||||
 | 
					//                            cuMemberRetailRangeExt = memberRangeExtMap.get(cuMemberRetailRangeExt.getPkMember());
 | 
				
			||||||
 | 
					//                        }
 | 
				
			||||||
 | 
					//                        // 月累计业绩 = 本人月消费业绩 + 团队月消费业绩
 | 
				
			||||||
 | 
					//                        BigDecimal consumePv = ComputeUtil.computeAdd(cuMemberRetailRangeExt.getMonthConsumePv(), cuMemberRetailRangeExt.getAllTeamMonthPv());
 | 
				
			||||||
 | 
					//                        if (ComputeUtil.compareGreaterThan(consumePv, consumeBigPv)) {
 | 
				
			||||||
 | 
					//                            // 月累计业绩 > 大区业绩,则月累计就成为大区了
 | 
				
			||||||
 | 
					//                            consumeBigPv = consumePv;
 | 
				
			||||||
 | 
					//                        }
 | 
				
			||||||
 | 
					//                    }
 | 
				
			||||||
 | 
					//
 | 
				
			||||||
 | 
					//                    // 小区业绩 = 本人月消费业绩 + 团队月消费业绩 - 大区业绩
 | 
				
			||||||
 | 
					//                    BigDecimal smallAreaPv = ComputeUtil.computeAdd(targetMember.getMonthConsumePv(), ComputeUtil.computeSubtract(targetMember.getTeamMonthPv(), consumeBigPv));
 | 
				
			||||||
 | 
					//                    if (ComputeUtil.compareValue(smallAreaPv, bdAwards.getShareCommunityCheck())) {
 | 
				
			||||||
 | 
					//                        // 小区业绩 >= 小区考核业绩
 | 
				
			||||||
 | 
					//                        if (bdAwards.getPlaceDeptNum() > 0) {
 | 
				
			||||||
 | 
					//                            // 验证是否有多个区满足业绩
 | 
				
			||||||
 | 
					//                            if (null == cuMemberRetailRangeExtList) {
 | 
				
			||||||
 | 
					//                                // 昨日结算表,查询订单会员直推数据
 | 
				
			||||||
 | 
					//                                cuMemberRetailRangeExtList = iCuMemberRetailRangeService.queryCuMemberRetailRangeEnoughAchieve(rangeTableName, targetMember.getPkMember(), bdAwards.getShareCommunityCheck());
 | 
				
			||||||
 | 
					//                            }
 | 
				
			||||||
 | 
					//
 | 
				
			||||||
 | 
					//                            int enoughNum = 0;
 | 
				
			||||||
 | 
					//                            if (ComputeUtil.compareValue(targetMember.getMonthConsumePv(), bdAwards.getShareCommunityCheck())) {
 | 
				
			||||||
 | 
					//                                enoughNum += 1;
 | 
				
			||||||
 | 
					//                            }
 | 
				
			||||||
 | 
					//                            for (CuMemberRetailRangeExt cuMemberRetailRangeExt : cuMemberRetailRangeExtList) {
 | 
				
			||||||
 | 
					//                                if (memberRangeExtMap.containsKey(cuMemberRetailRangeExt.getPkMember())) {
 | 
				
			||||||
 | 
					//                                    cuMemberRetailRangeExt = memberRangeExtMap.get(cuMemberRetailRangeExt.getPkMember());
 | 
				
			||||||
 | 
					//                                }
 | 
				
			||||||
 | 
					//                                if (ComputeUtil.compareValue(ComputeUtil.computeAdd(cuMemberRetailRangeExt.getMonthConsumePv(), cuMemberRetailRangeExt.getAllTeamMonthPv()), bdAwards.getShareCommunityCheck())) {
 | 
				
			||||||
 | 
					//                                    // 本人月消费业绩 + 团队月消费业绩 >= 小区考核业绩,则满足条件小部门 +1
 | 
				
			||||||
 | 
					//                                    enoughNum += 1;
 | 
				
			||||||
 | 
					//                                }
 | 
				
			||||||
 | 
					//                            }
 | 
				
			||||||
 | 
					//                            if (bdAwards.getPlaceDeptNum() > enoughNum) {
 | 
				
			||||||
 | 
					//                                break;
 | 
				
			||||||
 | 
					//                            }
 | 
				
			||||||
 | 
					//                        }
 | 
				
			||||||
 | 
					//                        cuMemberAwardsList.add(getCuMemberRetailAwards(targetMember, period, saOrderExt, bdAwards, EAwardsType.SHARE_TYPE.getValue(), targetMember.getPkShareAwards()));
 | 
				
			||||||
 | 
					//                        targetMember.setAwardsValue(bdAwards.getAwardsValue());
 | 
				
			||||||
 | 
					//                        targetMember.setPkAwards(bdAwards.getPkId());
 | 
				
			||||||
 | 
					//                        continue;
 | 
				
			||||||
 | 
					//                    }
 | 
				
			||||||
 | 
					//                }
 | 
				
			||||||
 | 
					//            }
 | 
				
			||||||
 | 
					//            break;
 | 
				
			||||||
 | 
					//        }
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    /**
 | 
				
			||||||
 | 
					     * 计算团队奖衔
 | 
				
			||||||
 | 
					     */
 | 
				
			||||||
 | 
					    public List<CuMemberAwards> calculateParentAwards(Integer period, Map<Long, CuMemberRetailRangeExt> memberRangeExtMap, String rangeTableName,
 | 
				
			||||||
 | 
					                                                      CuMemberRetailRangeExt sourceMember, SaOrderExt saOrderExt, Map<Integer, BdAwards> retailAwardsMap) {
 | 
				
			||||||
 | 
					        // 会员奖衔升级列表
 | 
				
			||||||
 | 
					        List<CuMemberAwards> cuMemberAwardsList = new ArrayList<>();
 | 
				
			||||||
 | 
					        // 订单会员的推荐人
 | 
				
			||||||
 | 
					        CuMemberRetailRangeExt targetMember = memberRangeExtMap.get(sourceMember.getPkParent());
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        BigDecimal orderAchieve = saOrderExt.getOrderAchieve();
 | 
				
			||||||
 | 
					        BigDecimal orderAmount = saOrderExt.getOrderAmount();
 | 
				
			||||||
 | 
					        while (null != targetMember) {
 | 
				
			||||||
 | 
					            // 累计业绩
 | 
				
			||||||
 | 
					            targetMember.setTeamNewPv(targetMember.getTeamNewPv().add(orderAchieve));
 | 
				
			||||||
 | 
					            targetMember.setTeamConsumePv(targetMember.getTeamConsumePv().add(orderAchieve));
 | 
				
			||||||
 | 
					            targetMember.setTeamMonthPv(targetMember.getTeamMonthPv().add(orderAchieve));
 | 
				
			||||||
 | 
					            // 累计金额
 | 
				
			||||||
 | 
					            targetMember.setTeamNewAmount(targetMember.getTeamNewAmount().add(orderAmount));
 | 
				
			||||||
 | 
					            targetMember.setTeamConsumeAmount(targetMember.getTeamConsumeAmount().add(orderAmount));
 | 
				
			||||||
 | 
					            targetMember.setTeamMonthAmount(targetMember.getTeamMonthAmount().add(orderAmount));
 | 
				
			||||||
 | 
					            if (EOrderType.RETAIL_REGISTER.getValue() == saOrderExt.getOrderType()
 | 
				
			||||||
 | 
					                    || EOrderType.RETAIL_UPGRADE.getValue() == saOrderExt.getOrderType()
 | 
				
			||||||
 | 
					            ) {
 | 
				
			||||||
 | 
					                // 团队精品专区
 | 
				
			||||||
 | 
					                targetMember.setRegTeamNewPv(targetMember.getRegTeamNewPv().add(orderAchieve));
 | 
				
			||||||
 | 
					                targetMember.setRegTeamNewAmount(targetMember.getRegTeamNewAmount().add(orderAmount));
 | 
				
			||||||
 | 
					            } else if (EOrderType.RETAIL_REPURCHASE.getValue() == saOrderExt.getOrderType()) {
 | 
				
			||||||
 | 
					                // 团队商城专区
 | 
				
			||||||
 | 
					                targetMember.setRepTeamNewPv(targetMember.getRepTeamNewPv().add(orderAchieve));
 | 
				
			||||||
 | 
					                targetMember.setRepTeamNewAmount(targetMember.getRepTeamNewAmount().add(orderAmount));
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					            // 计算奖衔
 | 
				
			||||||
 | 
					            calculateAwards(period, memberRangeExtMap, rangeTableName, saOrderExt, retailAwardsMap, cuMemberAwardsList, targetMember);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            targetMember = memberRangeExtMap.get(targetMember.getPkParent());
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        return cuMemberAwardsList;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -13,9 +13,6 @@ public interface ICuMemberAwardsService extends IService<CuMemberAwards> {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    /**
 | 
					    /**
 | 
				
			||||||
     * 回退极差奖衔,每日重新结算,先把奖衔回退到前一天
 | 
					     * 回退极差奖衔,每日重新结算,先把奖衔回退到前一天
 | 
				
			||||||
     *
 | 
					 | 
				
			||||||
     * @param period         结算期间
 | 
					 | 
				
			||||||
     * @param rangeTableName 结算表
 | 
					 | 
				
			||||||
     */
 | 
					     */
 | 
				
			||||||
    void calculateCuMemberRetailRangeAwardsInit(String settleDate, Integer period, String rangeTableName);
 | 
					    void calculateCuMemberRetailRangeAwardsInit(String settleDate, Integer period, String rangeTableName);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -432,71 +432,52 @@
 | 
				
			||||||
        <include refid="CuMemberTableTrig"></include>
 | 
					        <include refid="CuMemberTableTrig"></include>
 | 
				
			||||||
    </update>
 | 
					    </update>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    <!-- 回退会员奖衔 -->
 | 
				
			||||||
    <update id="updateBackCuMemberRetailRangeAward">
 | 
					    <update id="updateBackCuMemberRetailRangeAward">
 | 
				
			||||||
        merge into ${rangeTableName} a
 | 
					        merge into ${rangeTableName} a
 | 
				
			||||||
        using (
 | 
					            using (
 | 
				
			||||||
        select ca.pk_member, max(old_level) pk_awards
 | 
					                select ca.pk_member, max(old_level) pk_awards
 | 
				
			||||||
        from cu_member_awards ca
 | 
					                from cu_member_awards ca
 | 
				
			||||||
        inner join ${rangeTableName} cm
 | 
					                         inner join ${rangeTableName} cm
 | 
				
			||||||
        on ca.pk_member = cm.pk_member
 | 
					                                    on ca.pk_member = cm.pk_member
 | 
				
			||||||
        where ca.period = #{period}
 | 
					                where ca.period = #{period}
 | 
				
			||||||
        and ca.up_type = 1
 | 
					                  and ca.up_type = 1
 | 
				
			||||||
        and ca.award_type = #{awardType}
 | 
					                  and ca.del_flag = 0
 | 
				
			||||||
        and ca.del_flag = 0
 | 
					                  and cm.pk_awards <= ca.new_level
 | 
				
			||||||
        <if test="awardType == 1">
 | 
					                group by ca.pk_member
 | 
				
			||||||
            and cm.pk_awards <= ca.new_level
 | 
					            ) b
 | 
				
			||||||
        </if>
 | 
					            on (a.pk_member = b.pk_member)
 | 
				
			||||||
        <if test="awardType == 2">
 | 
					            when matched then
 | 
				
			||||||
            and cm.pk_share_awards <= ca.new_level
 | 
					                update set
 | 
				
			||||||
        </if>
 | 
					                    a.pk_awards = b.pk_awards
 | 
				
			||||||
        group by ca.pk_member
 | 
					 | 
				
			||||||
        ) b
 | 
					 | 
				
			||||||
        on (a.pk_member = b.pk_member)
 | 
					 | 
				
			||||||
        when matched then
 | 
					 | 
				
			||||||
        update set
 | 
					 | 
				
			||||||
        <if test="awardType == 1">
 | 
					 | 
				
			||||||
            a.pk_awards = b.pk_awards
 | 
					 | 
				
			||||||
        </if>
 | 
					 | 
				
			||||||
        <if test="awardType == 2">
 | 
					 | 
				
			||||||
            a.pk_share_awards=b.pk_awards
 | 
					 | 
				
			||||||
        </if>
 | 
					 | 
				
			||||||
    </update>
 | 
					    </update>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    <!-- 回退会员奖衔 -->
 | 
				
			||||||
    <update id="updateCuMemberRetailRangeAwardByDate">
 | 
					    <update id="updateCuMemberRetailRangeAwardByDate">
 | 
				
			||||||
        merge into ${rangeTableName} a
 | 
					        merge into ${rangeTableName} a
 | 
				
			||||||
        using (
 | 
					            using (
 | 
				
			||||||
        select y.pk_member,y.pk_awards from ${rangeTableName} x
 | 
					                select y.pk_member, y.pk_awards
 | 
				
			||||||
        inner join (
 | 
					                from ${rangeTableName} x
 | 
				
			||||||
        select a.pk_member,a.new_level pk_awards
 | 
					                         inner join (
 | 
				
			||||||
        from cu_member_awards a
 | 
					                    select a.pk_member, a.new_level pk_awards
 | 
				
			||||||
        inner join (
 | 
					                    from cu_member_awards a
 | 
				
			||||||
        select pk_member, max(pk_id) pk_id
 | 
					                             inner join (
 | 
				
			||||||
        from cu_member_awards
 | 
					                        select pk_member, max(pk_id) pk_id
 | 
				
			||||||
        where del_flag = 0 and up_type = 2
 | 
					                        from cu_member_awards
 | 
				
			||||||
        and end_validity_date <= #{settleDate, jdbcType=DATE}
 | 
					                        where del_flag = 0
 | 
				
			||||||
        and award_type = #{awardType}
 | 
					                          and up_type = 2
 | 
				
			||||||
        group by pk_member) b
 | 
					                          and end_validity_date <= #{settleDate, jdbcType=DATE}
 | 
				
			||||||
        on a.pk_id = b.pk_id
 | 
					                        group by pk_member) b
 | 
				
			||||||
        where a.del_flag = 0
 | 
					                                        on a.pk_id = b.pk_id
 | 
				
			||||||
        ) y
 | 
					                    where a.del_flag = 0
 | 
				
			||||||
        on x.pk_member = y.pk_member
 | 
					                ) y
 | 
				
			||||||
        where
 | 
					                                    on x.pk_member = y.pk_member
 | 
				
			||||||
        <if test="awardType == 1">
 | 
					                where x.pk_awards < y.pk_awards
 | 
				
			||||||
            x.pk_awards < y.pk_awards
 | 
					            ) b
 | 
				
			||||||
        </if>
 | 
					            on (a.pk_member = b.pk_member)
 | 
				
			||||||
        <if test="awardType == 2">
 | 
					            when matched then
 | 
				
			||||||
            x.pk_share_awards < y.pk_awards
 | 
					                update set
 | 
				
			||||||
        </if>
 | 
					                    a.pk_awards = b.pk_awards
 | 
				
			||||||
        ) b
 | 
					 | 
				
			||||||
        on (a.pk_member = b.pk_member)
 | 
					 | 
				
			||||||
        when matched then
 | 
					 | 
				
			||||||
        update set
 | 
					 | 
				
			||||||
        <if test="awardType == 1">
 | 
					 | 
				
			||||||
            a.pk_awards = b.pk_awards
 | 
					 | 
				
			||||||
        </if>
 | 
					 | 
				
			||||||
        <if test="awardType == 2">
 | 
					 | 
				
			||||||
            a.pk_share_awards = b.pk_awards
 | 
					 | 
				
			||||||
        </if>
 | 
					 | 
				
			||||||
    </update>
 | 
					    </update>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    <update id="createCuMemberRetailRangeSecondTable">
 | 
					    <update id="createCuMemberRetailRangeSecondTable">
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -123,94 +123,52 @@
 | 
				
			||||||
                update set a.pk_max_awards = b.pk_awards, a.modified_time = sysdate
 | 
					                update set a.pk_max_awards = b.pk_awards, a.modified_time = sysdate
 | 
				
			||||||
    </update>
 | 
					    </update>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    <!-- 更新会员奖衔根据临时表 -->
 | 
				
			||||||
    <update id="updateBackCuMemberRetailRangeAward">
 | 
					    <update id="updateBackCuMemberRetailRangeAward">
 | 
				
			||||||
        merge into cu_member a
 | 
					        merge into cu_member a
 | 
				
			||||||
        using (select pk_member, max(old_level) pk_awards
 | 
					            using (select pk_member, max(old_level) pk_awards
 | 
				
			||||||
        from cu_member_awards ca
 | 
					                   from cu_member_awards ca
 | 
				
			||||||
        inner join cu_member cm
 | 
					                            inner join cu_member cm
 | 
				
			||||||
        on ca.pk_member = cm.pk_id
 | 
					                                       on ca.pk_member = cm.pk_id
 | 
				
			||||||
        where ca.period = #{period}
 | 
					                   where ca.period = #{period}
 | 
				
			||||||
        and ca.up_type = 1
 | 
					                     and ca.up_type = 1
 | 
				
			||||||
        and award_type = #{awardType}
 | 
					                     and ca.del_flag = 0
 | 
				
			||||||
        and ca.del_flag = 0
 | 
					                     and cm.pk_awards < ca.new_level
 | 
				
			||||||
        <if test="awardType == 1">
 | 
					                   group by ca.pk_member) b
 | 
				
			||||||
            and cm.pk_awards < ca.new_level
 | 
					            on (a.pk_id = b.pk_member)
 | 
				
			||||||
        </if>
 | 
					            when matched then
 | 
				
			||||||
        <if test="awardType == 2">
 | 
					                update set
 | 
				
			||||||
            and cm.pk_range_awards < ca.new_level
 | 
					                    a.pk_awards = b.pk_awards,
 | 
				
			||||||
        </if>
 | 
					                    a.modified_time = sysdate
 | 
				
			||||||
        group by ca.pk_member) b
 | 
					 | 
				
			||||||
        on (a.pk_id = b.pk_member)
 | 
					 | 
				
			||||||
        when matched then
 | 
					 | 
				
			||||||
        update set
 | 
					 | 
				
			||||||
        <if test="awardType == 1">
 | 
					 | 
				
			||||||
            a.pk_awards = b.pk_awards,
 | 
					 | 
				
			||||||
        </if>
 | 
					 | 
				
			||||||
        <if test="awardType == 2">
 | 
					 | 
				
			||||||
            a.pk_range_awards = b.pk_awards,
 | 
					 | 
				
			||||||
        </if>
 | 
					 | 
				
			||||||
        a.modified_time = sysdate
 | 
					 | 
				
			||||||
    </update>
 | 
					    </update>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    <!-- 更新会员奖衔根据临时表 -->
 | 
				
			||||||
    <update id="updateCuMemberRetailRangeAwardByDate">
 | 
					    <update id="updateCuMemberRetailRangeAwardByDate">
 | 
				
			||||||
        merge into cu_member a
 | 
					        merge into cu_member a
 | 
				
			||||||
        using (
 | 
					            using (
 | 
				
			||||||
        select y.pk_member, y.pk_awards
 | 
					                select y.pk_member, y.pk_awards
 | 
				
			||||||
        from cu_member x
 | 
					                from cu_member x
 | 
				
			||||||
        inner join (
 | 
					                         inner join (
 | 
				
			||||||
        select a.pk_member,a.new_level pk_awards
 | 
					                    select a.pk_member, a.new_level pk_awards
 | 
				
			||||||
        from cu_member_awards a
 | 
					                    from cu_member_awards a
 | 
				
			||||||
        inner join (
 | 
					                             inner join (
 | 
				
			||||||
        select pk_member, max(pk_id) pk_id
 | 
					                        select pk_member, max(pk_id) pk_id
 | 
				
			||||||
        from cu_member_awards
 | 
					                        from cu_member_awards
 | 
				
			||||||
        where del_flag = 0
 | 
					                        where del_flag = 0
 | 
				
			||||||
        and up_type = 2
 | 
					                          and up_type = 2
 | 
				
			||||||
        and end_validity_date <= #{settleDate, jdbcType=DATE}
 | 
					                          and end_validity_date <= #{settleDate, jdbcType=DATE}
 | 
				
			||||||
        and award_type = #{awardType}
 | 
					                        group by pk_member) b
 | 
				
			||||||
        group by pk_member) b
 | 
					                                        on a.pk_id = b.pk_id
 | 
				
			||||||
        on a.pk_id = b.pk_id
 | 
					                    where a.del_flag = 0
 | 
				
			||||||
        where a.del_flag = 0
 | 
					                ) y
 | 
				
			||||||
        ) y
 | 
					                                    on x.pk_id = y.pk_member
 | 
				
			||||||
        on x.pk_id = y.pk_member
 | 
					                where x.pk_awards < y.pk_awards
 | 
				
			||||||
        where
 | 
					            ) b
 | 
				
			||||||
        <if test="awardType == 1">
 | 
					            on (a.pk_id = b.pk_member)
 | 
				
			||||||
            x.pk_awards < y.pk_awards
 | 
					            when matched then
 | 
				
			||||||
        </if>
 | 
					                update set
 | 
				
			||||||
        <if test="awardType == 2">
 | 
					                    a.pk_awards = b.pk_awards,
 | 
				
			||||||
            x.pk_range_awards < y.pk_awards
 | 
					                    a.modified_time = sysdate
 | 
				
			||||||
        </if>
 | 
					 | 
				
			||||||
        ) b
 | 
					 | 
				
			||||||
        on (a.pk_id = b.pk_member)
 | 
					 | 
				
			||||||
        when matched then
 | 
					 | 
				
			||||||
        update set
 | 
					 | 
				
			||||||
        <if test="awardType == 1">
 | 
					 | 
				
			||||||
            a.pk_awards = b.pk_awards,
 | 
					 | 
				
			||||||
        </if>
 | 
					 | 
				
			||||||
        <if test="awardType == 2">
 | 
					 | 
				
			||||||
            a.pk_range_awards = b.pk_awards,
 | 
					 | 
				
			||||||
        </if>
 | 
					 | 
				
			||||||
        a.modified_time = sysdate
 | 
					 | 
				
			||||||
    </update>
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    <!-- 初始化会员奖衔 -->
 | 
					 | 
				
			||||||
    <update id="updateCuMemberRetailRangeInitAward">
 | 
					 | 
				
			||||||
        update cu_member
 | 
					 | 
				
			||||||
        set pk_awards = (select pk_id from bd_awards where awards_value = 0),
 | 
					 | 
				
			||||||
            pk_range_awards = (select pk_id from bd_awards where awards_value = 0)
 | 
					 | 
				
			||||||
    </update>
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    <!-- 初始化会员V5奖衔 -->
 | 
					 | 
				
			||||||
    <update id="updateCuMemberRetailRangeInitV5Award">
 | 
					 | 
				
			||||||
        update cu_member
 | 
					 | 
				
			||||||
        set pk_awards       = (select pk_id from bd_awards where awards_value = 5),
 | 
					 | 
				
			||||||
            pk_range_awards = (select pk_id from bd_awards where awards_value = 5)
 | 
					 | 
				
			||||||
        where pk_settle_grade = (
 | 
					 | 
				
			||||||
            select pk_id
 | 
					 | 
				
			||||||
            from bd_grade
 | 
					 | 
				
			||||||
            where grade_value = 70
 | 
					 | 
				
			||||||
              and del_flag = 0
 | 
					 | 
				
			||||||
        )
 | 
					 | 
				
			||||||
    </update>
 | 
					    </update>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    <update id="updateCuMemberRetailRangeByList">
 | 
					    <update id="updateCuMemberRetailRangeByList">
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -98,16 +98,10 @@
 | 
				
			||||||
    <!-- 删除自动升级的奖衔升级记录 -->
 | 
					    <!-- 删除自动升级的奖衔升级记录 -->
 | 
				
			||||||
    <delete id="deleteCuMemberAwards">
 | 
					    <delete id="deleteCuMemberAwards">
 | 
				
			||||||
        update cu_member_awards cma
 | 
					        update cu_member_awards cma
 | 
				
			||||||
        set cma.del_flag = 1,
 | 
					        set cma.del_flag      = 1,
 | 
				
			||||||
        cma.modified_time = sysdate
 | 
					            cma.modified_time = sysdate
 | 
				
			||||||
        where period = #{period}
 | 
					 | 
				
			||||||
        and up_type = 1
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        <!--
 | 
					 | 
				
			||||||
        delete from cu_member_awards
 | 
					 | 
				
			||||||
        where period = #{period}
 | 
					        where period = #{period}
 | 
				
			||||||
          and up_type = 1
 | 
					          and up_type = 1
 | 
				
			||||||
          -->
 | 
					 | 
				
			||||||
    </delete>
 | 
					    </delete>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    <!-- 删除升级的奖衔 -->
 | 
					    <!-- 删除升级的奖衔 -->
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1,6 +1,5 @@
 | 
				
			||||||
package com.hzs.common.core.enums;
 | 
					package com.hzs.common.core.enums;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import com.hzs.common.core.constant.EnumsPrefixConstants;
 | 
					 | 
				
			||||||
import lombok.AllArgsConstructor;
 | 
					import lombok.AllArgsConstructor;
 | 
				
			||||||
import lombok.Getter;
 | 
					import lombok.Getter;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -12,9 +11,9 @@ import lombok.Getter;
 | 
				
			||||||
public enum EAwardsType {
 | 
					public enum EAwardsType {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    /**
 | 
					    /**
 | 
				
			||||||
     * 当月奖衔
 | 
					     * 荣誉奖衔
 | 
				
			||||||
     */
 | 
					     */
 | 
				
			||||||
    RANGE_TYPE(1, "当月奖衔", 0),
 | 
					    RANGE_TYPE(1, "荣誉奖衔", 0),
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    /**
 | 
					    /**
 | 
				
			||||||
     * 分红奖衔
 | 
					     * 分红奖衔
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -25,14 +25,15 @@ public enum EBonusItems {
 | 
				
			||||||
     * 阶段收益 -- 精品专区、商城专区
 | 
					     * 阶段收益 -- 精品专区、商城专区
 | 
				
			||||||
     */
 | 
					     */
 | 
				
			||||||
    STAGE_INCOME(21, "阶段收益", 0),
 | 
					    STAGE_INCOME(21, "阶段收益", 0),
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    /**
 | 
					    /**
 | 
				
			||||||
     * 级差收益 -- 精品专区、商城专区
 | 
					     * 领导奖金收益 -- 精品专区、商城专区
 | 
				
			||||||
     */
 | 
					     */
 | 
				
			||||||
    RANGE_INCOME(22, "级差收益", 0),
 | 
					    RANGE_INCOME(22, "领导奖金收益", 0),
 | 
				
			||||||
    /**
 | 
					    /**
 | 
				
			||||||
     * 平级收益 -- 精品专区、商城专区
 | 
					     * 平级奖金收益 -- 精品专区、商城专区
 | 
				
			||||||
     */
 | 
					     */
 | 
				
			||||||
    SAME_LEVEL_INCOME(23, "平级收益", 0),
 | 
					    SAME_LEVEL_INCOME(23, "平级奖金收益", 0),
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    /**
 | 
					    /**
 | 
				
			||||||
     * 见点收益 -- 商城专区
 | 
					     * 见点收益 -- 商城专区
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
		Reference in New Issue