Compare commits
	
		
			3 Commits
		
	
	
		
			10c98b6d99
			...
			48863d8dc7
		
	
	| Author | SHA1 | Date | 
|---|---|---|
| 
							
							
								
								 | 
						48863d8dc7 | |
| 
							
							
								
								 | 
						c91ce61eac | |
| 
							
							
								
								 | 
						a518eb8775 | 
| 
						 | 
				
			
			@ -4,15 +4,14 @@ import cn.hutool.core.collection.CollectionUtil;
 | 
			
		|||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 | 
			
		||||
import com.hzs.bonus.achieve.mapper.CuMemberRetailRangeMapper;
 | 
			
		||||
import com.hzs.bonus.achieve.service.ICuMemberRetailRangeService;
 | 
			
		||||
import com.hzs.bonus.achieve.service.ICuMemberTreeService;
 | 
			
		||||
import com.hzs.common.core.constant.MagicNumberConstants;
 | 
			
		||||
import com.hzs.common.core.enums.EOrderType;
 | 
			
		||||
import com.hzs.common.domain.member.achieve.CuMemberRetailDetail;
 | 
			
		||||
import com.hzs.common.domain.member.achieve.CuMemberRetailRange;
 | 
			
		||||
import com.hzs.common.domain.member.achieve.ext.CuMemberRetailRangeExt;
 | 
			
		||||
import com.hzs.common.domain.member.base.CuMember;
 | 
			
		||||
import com.hzs.common.domain.member.ext.CuMemberExt;
 | 
			
		||||
import com.hzs.common.domain.sale.ext.SaOrderExt;
 | 
			
		||||
import org.apache.ibatis.annotations.Param;
 | 
			
		||||
import org.springframework.beans.factory.annotation.Autowired;
 | 
			
		||||
import org.springframework.stereotype.Service;
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -27,6 +26,8 @@ public class CuMemberRetailRangeServiceImpl extends ServiceImpl<CuMemberRetailRa
 | 
			
		|||
 | 
			
		||||
    @Autowired
 | 
			
		||||
    private CuMemberBonusSettle cuMemberBonusSettle;
 | 
			
		||||
    @Autowired
 | 
			
		||||
    private ICuMemberTreeService iCuMemberTreeService;
 | 
			
		||||
 | 
			
		||||
    @Override
 | 
			
		||||
    public void mergeMemberRetailRangeByYesterday(String rangeTableName, String yesterdayRangeTableName, Boolean isSameMonth) {
 | 
			
		||||
| 
						 | 
				
			
			@ -42,6 +43,9 @@ public class CuMemberRetailRangeServiceImpl extends ServiceImpl<CuMemberRetailRa
 | 
			
		|||
 | 
			
		||||
    @Override
 | 
			
		||||
    public void mergeMemberRetailRangeDetailByYesterday(String detailTableName, String yesterdayDetailTableName) {
 | 
			
		||||
        // 清空当前明细表
 | 
			
		||||
        iCuMemberTreeService.truncateCuMemberTreeTable(detailTableName);
 | 
			
		||||
        // 用昨天的数据初始化当前明细表
 | 
			
		||||
        baseMapper.mergeMemberRetailRangeDetailByYesterday(detailTableName, yesterdayDetailTableName);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -94,15 +98,21 @@ public class CuMemberRetailRangeServiceImpl extends ServiceImpl<CuMemberRetailRa
 | 
			
		|||
        Collection<CuMemberRetailDetail> retailDetailColl = new ArrayList<>();
 | 
			
		||||
        memberRangeExtMap.forEach((key, value) -> {
 | 
			
		||||
            if (null != value.getOneDetailMap() && value.getOneDetailMap().size() > 0) {
 | 
			
		||||
                retailDetailColl.addAll(value.getOneDetailMap().values());
 | 
			
		||||
                Collection<CuMemberRetailDetail> tmpDetailColl = value.getOneDetailMap().values();
 | 
			
		||||
                for (CuMemberRetailDetail cuMemberRetailDetail : tmpDetailColl) {
 | 
			
		||||
                    // 只有需要更新的才进行入库操作
 | 
			
		||||
                    if (null != cuMemberRetailDetail.getUpdateBool()) {
 | 
			
		||||
                        retailDetailColl.add(cuMemberRetailDetail);
 | 
			
		||||
                    }
 | 
			
		||||
                }
 | 
			
		||||
            }
 | 
			
		||||
        });
 | 
			
		||||
        List<List<?>> list = cuMemberBonusSettle.handleCutList(retailDetailColl);
 | 
			
		||||
            list.forEach(tmpList -> {
 | 
			
		||||
                if (CollectionUtil.isNotEmpty(tmpList)) {
 | 
			
		||||
                    baseMapper.mergeCuMemberRetailDetail(rangeDetailTableName, tmpList);
 | 
			
		||||
                }
 | 
			
		||||
            });
 | 
			
		||||
        list.forEach(tmpList -> {
 | 
			
		||||
            if (CollectionUtil.isNotEmpty(tmpList)) {
 | 
			
		||||
                baseMapper.mergeCuMemberRetailDetail(rangeDetailTableName, tmpList);
 | 
			
		||||
            }
 | 
			
		||||
        });
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @Override
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -2,10 +2,23 @@ package com.hzs.bonus.bonus.mapper;
 | 
			
		|||
 | 
			
		||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 | 
			
		||||
import com.hzs.common.domain.member.bonus.CuMemberBonusStage;
 | 
			
		||||
import org.apache.ibatis.annotations.Param;
 | 
			
		||||
 | 
			
		||||
import java.util.List;
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * 会员奖金-阶段收益明细表 Mapper 接口
 | 
			
		||||
 */
 | 
			
		||||
public interface CuMemberBonusStageMapper extends BaseMapper<CuMemberBonusStage> {
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * 删除会员阶段奖金表
 | 
			
		||||
     */
 | 
			
		||||
    void deleteCuMemberBonusStage(Integer period);
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * 批量插入会员阶段奖
 | 
			
		||||
     */
 | 
			
		||||
    void batchInsertCuMemberBonusStage(@Param("cuMemberBonusStageList") List<?> cuMemberBonusStageList);
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -3,20 +3,46 @@ package com.hzs.bonus.bonus.service;
 | 
			
		|||
import com.baomidou.mybatisplus.extension.service.IService;
 | 
			
		||||
import com.hzs.common.domain.member.achieve.CuMemberRetailDetail;
 | 
			
		||||
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 java.util.List;
 | 
			
		||||
import java.util.Map;
 | 
			
		||||
import java.util.Set;
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * 会员奖金-阶段收益明细表 服务类
 | 
			
		||||
 */
 | 
			
		||||
public interface ICuMemberBonusStageService extends IService<CuMemberBonusStage> {
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * 删除会员阶段奖金表
 | 
			
		||||
     */
 | 
			
		||||
    void deleteCuMemberBonusStage(Integer period);
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * 批量插入会员阶段奖
 | 
			
		||||
     */
 | 
			
		||||
    void batchInsertCuMemberBonusStage(List<CuMemberBonusStage> cuMemberBonusStageList, Set<Long> memberIdSet);
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * 获取阶段收益信息
 | 
			
		||||
     */
 | 
			
		||||
    CuMemberBonusStage getCuMemberBonusStage(SaOrderExt saOrderExt, CuMemberRetailRangeExt cuMemberRetailRange,
 | 
			
		||||
                                             CuMemberBonus cuMemberBonus, Integer pkBonusItems);
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * 填充会员点位
 | 
			
		||||
     */
 | 
			
		||||
    String fillChildNode(CuMemberRetailDetail cuMemberRetailDetail, CuMemberRetailDetail newRetailDetail);
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * 填充指定点位
 | 
			
		||||
     */
 | 
			
		||||
    void fillRetailDetail(CuMemberRetailDetail targetRetailDetail, String point,
 | 
			
		||||
                          Long pkMember, Integer childNode);
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * 处理新点位是推荐第一层
 | 
			
		||||
     */
 | 
			
		||||
| 
						 | 
				
			
			@ -38,4 +64,5 @@ public interface ICuMemberBonusStageService extends IService<CuMemberBonusStage>
 | 
			
		|||
                          CuMemberRetailDetail newRetailDetail, CuMemberRetailDetail newParentRetailDetail,
 | 
			
		||||
                          String rangeTableName, String rangeDetailTableName, String newNode);
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -79,6 +79,19 @@ public abstract class BonusSettleHandle {
 | 
			
		|||
    }
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * 获得 阶段收益 备注
 | 
			
		||||
     */
 | 
			
		||||
    protected void stageIncomeRemark(SaOrderExt saOrderExt, CuMemberBonusStage cuMemberBonusStage,
 | 
			
		||||
                                      CuMemberRetailRangeExt sourceMember, CuMemberRetailRangeExt targetMember) {
 | 
			
		||||
        String remark = String.format(BonusMsgConstants.STAGE_INCOME, saOrderExt.getOrderCode(),
 | 
			
		||||
                sourceMember.getMemberCode() + sourceMember.getMemberName(),
 | 
			
		||||
                targetMember.getMemberCode() + targetMember.getMemberName(),
 | 
			
		||||
                cuMemberBonusStage.getChildNode(), cuMemberBonusStage.getStage());
 | 
			
		||||
        cuMemberBonusStage.setRemark(remark);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * 获得 直推级差收益的备注
 | 
			
		||||
     *
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -278,7 +278,7 @@ public class BonusSettleRangeHandle extends BonusSettleHandle {
 | 
			
		|||
        Date settleEndDate = DateUtils.afterDate(1, ChronoUnit.DAYS, settleStartDate);
 | 
			
		||||
 | 
			
		||||
        // 新零售订单(注册、复购)
 | 
			
		||||
        List<SaOrderExt> orderList = iBonusOrderService.listRetailSaOrder(settleStartDate, settleEndDate, null, Arrays.asList(EOrderType.RETAIL_REGISTER.getValue(), EOrderType.RETAIL_REPURCHASE.getValue()));
 | 
			
		||||
        List<SaOrderExt> orderList = iBonusOrderService.listRetailSaOrder(settleStartDate, settleEndDate, null, Arrays.asList(EOrderType.RETAIL_REGISTER.getValue(), EOrderType.RETAIL_UPGRADE.getValue(), EOrderType.RETAIL_REPURCHASE.getValue()));
 | 
			
		||||
 | 
			
		||||
        // 更新当月会员, 将昨天业绩更到到今天,更新当月会员考核结果,有消费的考核通过
 | 
			
		||||
        // 结算期间表
 | 
			
		||||
| 
						 | 
				
			
			@ -354,6 +354,9 @@ public class BonusSettleRangeHandle extends BonusSettleHandle {
 | 
			
		|||
            if (cuMemberBonusPushList.size() > 0) {
 | 
			
		||||
                bonusRecordDetailVO.setCuMemberBonusPushList(cuMemberBonusPushList);
 | 
			
		||||
            }
 | 
			
		||||
            if (cuMemberBonusStageList.size() > 0) {
 | 
			
		||||
                bonusRecordDetailVO.setCuMemberBonusStageList(cuMemberBonusStageList);
 | 
			
		||||
            }
 | 
			
		||||
            if (cuMemberBonusRangeList.size() > 0) {
 | 
			
		||||
                bonusRecordDetailVO.setCuMemberBonusRangeList(cuMemberBonusRangeList);
 | 
			
		||||
            }
 | 
			
		||||
| 
						 | 
				
			
			@ -368,6 +371,7 @@ public class BonusSettleRangeHandle extends BonusSettleHandle {
 | 
			
		|||
            }
 | 
			
		||||
            // 更新日结数据
 | 
			
		||||
            iCuMemberRetailRangeService.updateCuMemberRetailRange(rangeTableName, memberRangeExtMap);
 | 
			
		||||
            CuMemberRetailRangeExt tt = memberRangeExtMap.get(20363L);
 | 
			
		||||
            // 更新日结明细数据
 | 
			
		||||
            iCuMemberRetailRangeService.updateCuMemberRetailDetail(rangeDetailTableName, memberRangeExtMap);
 | 
			
		||||
        }
 | 
			
		||||
| 
						 | 
				
			
			@ -947,6 +951,8 @@ public class BonusSettleRangeHandle extends BonusSettleHandle {
 | 
			
		|||
        }
 | 
			
		||||
        // 当前会员子点位总数
 | 
			
		||||
        int pointCount = sourceMember.getPointCount();
 | 
			
		||||
 | 
			
		||||
        newPointInt:
 | 
			
		||||
        for (int i = 1; i <= newPointInt; i++) {
 | 
			
		||||
            // 订单会员生成的新点位
 | 
			
		||||
            CuMemberRetailDetail newRetailDetail = CuMemberRetailDetail.builder()
 | 
			
		||||
| 
						 | 
				
			
			@ -958,6 +964,7 @@ public class BonusSettleRangeHandle extends BonusSettleHandle {
 | 
			
		|||
                    .pointType(EBonusStageType.NORMAL.getValue())
 | 
			
		||||
                    .pointGift(0)
 | 
			
		||||
                    .creationTime(settleDate)
 | 
			
		||||
                    .updateBool(0)
 | 
			
		||||
                    .build();
 | 
			
		||||
            detailList.put(newRetailDetail.getChildNode(), newRetailDetail);
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -977,47 +984,142 @@ public class BonusSettleRangeHandle extends BonusSettleHandle {
 | 
			
		|||
                    // 推荐人没有未完成点位,继续往上找
 | 
			
		||||
                    continue;
 | 
			
		||||
                }
 | 
			
		||||
                parentDetailList.forEach((key, parentRetailDetail) -> {
 | 
			
		||||
                for (Map.Entry<Integer, CuMemberRetailDetail> integerCuMemberRetailDetailEntry : parentDetailList.entrySet()) {
 | 
			
		||||
                    // 第一层填充
 | 
			
		||||
                    CuMemberRetailDetail parentRetailDetail = integerCuMemberRetailDetailEntry.getValue();
 | 
			
		||||
                    // 遍历推荐人点位,使用第一个未完成的点位,进行填充
 | 
			
		||||
                    if (EBonusStageStatus.NO.getValue() == parentRetailDetail.getStageStatus()) {
 | 
			
		||||
                        String newNode = iCuMemberBonusStageService.fillChildNode(parentRetailDetail, newRetailDetail);
 | 
			
		||||
                        if (null == newNode) {
 | 
			
		||||
                            return;
 | 
			
		||||
                        }
 | 
			
		||||
                        switch (newNode) {
 | 
			
		||||
                            case BonusConstants.POINT_11:
 | 
			
		||||
                            case BonusConstants.POINT_12:
 | 
			
		||||
                                // 新点位是推荐人点位的第一层
 | 
			
		||||
                                iCuMemberBonusStageService.handlePointFirst(memberRangeExtMap, newRetailDetail, parentRetailDetail,
 | 
			
		||||
                                        rangeTableName, rangeDetailTableName, newNode);
 | 
			
		||||
                                break;
 | 
			
		||||
                            case BonusConstants.POINT_21:
 | 
			
		||||
                            case BonusConstants.POINT_22:
 | 
			
		||||
                            case BonusConstants.POINT_23:
 | 
			
		||||
                            case BonusConstants.POINT_24:
 | 
			
		||||
                                // 新点位是推荐人点位的第二层
 | 
			
		||||
                                iCuMemberBonusStageService.handlePointSecond(memberRangeExtMap, newRetailDetail, parentRetailDetail,
 | 
			
		||||
                                        rangeTableName, rangeDetailTableName, newNode);
 | 
			
		||||
                                break;
 | 
			
		||||
                            case BonusConstants.POINT_38:
 | 
			
		||||
                                // 第一个点位已经全部填满,更新完成状态和时间
 | 
			
		||||
                                parentRetailDetail.setStageStatus(EBonusStageStatus.YES.getValue());
 | 
			
		||||
                                parentRetailDetail.setStageDate(settleDate);
 | 
			
		||||
                                // TODO 一阶段全满则需要发放一阶段奖金
 | 
			
		||||
                                // TODO 需要记录填满子点位,用来处理生成二阶段以及生成赠点
 | 
			
		||||
                            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:
 | 
			
		||||
                                // 新点位是推荐人点位的第三层
 | 
			
		||||
                                iCuMemberBonusStageService.handlePointThird(memberRangeExtMap, newRetailDetail, parentRetailDetail,
 | 
			
		||||
                                        rangeTableName, rangeDetailTableName, newNode);
 | 
			
		||||
                        if (null == parentRetailDetail.getPointMember11()) {
 | 
			
		||||
                            iCuMemberBonusStageService.fillRetailDetail(parentRetailDetail, BonusConstants.POINT_11,
 | 
			
		||||
                                    newRetailDetail.getPkMember(), newRetailDetail.getChildNode());
 | 
			
		||||
                            // 新点位是推荐人点位的第一层
 | 
			
		||||
                            iCuMemberBonusStageService.handlePointFirst(memberRangeExtMap, newRetailDetail, parentRetailDetail,
 | 
			
		||||
                                    rangeTableName, rangeDetailTableName, BonusConstants.POINT_11);
 | 
			
		||||
                            // 当前新子点位填充完成,进入下一个新子点位
 | 
			
		||||
                            continue newPointInt;
 | 
			
		||||
                        } else if (null == parentRetailDetail.getPointMember12()) {
 | 
			
		||||
                            iCuMemberBonusStageService.fillRetailDetail(parentRetailDetail, BonusConstants.POINT_12,
 | 
			
		||||
                                    newRetailDetail.getPkMember(), newRetailDetail.getChildNode());
 | 
			
		||||
                            // 新点位是推荐人点位的第一层
 | 
			
		||||
                            iCuMemberBonusStageService.handlePointFirst(memberRangeExtMap, newRetailDetail, parentRetailDetail,
 | 
			
		||||
                                    rangeTableName, rangeDetailTableName, BonusConstants.POINT_12);
 | 
			
		||||
                            // 当前新子点位填充完成,进入下一个新子点位
 | 
			
		||||
                            continue newPointInt;
 | 
			
		||||
                        }
 | 
			
		||||
                    }
 | 
			
		||||
                });
 | 
			
		||||
                }
 | 
			
		||||
                for (Map.Entry<Integer, CuMemberRetailDetail> integerCuMemberRetailDetailEntry : parentDetailList.entrySet()) {
 | 
			
		||||
                    // 第二层填充
 | 
			
		||||
                    CuMemberRetailDetail parentRetailDetail = integerCuMemberRetailDetailEntry.getValue();
 | 
			
		||||
                    // 遍历推荐人点位,使用第一个未完成的点位,进行填充
 | 
			
		||||
                    if (EBonusStageStatus.NO.getValue() == parentRetailDetail.getStageStatus()) {
 | 
			
		||||
                        if (null == parentRetailDetail.getPointMember21()) {
 | 
			
		||||
                            iCuMemberBonusStageService.fillRetailDetail(parentRetailDetail, BonusConstants.POINT_21,
 | 
			
		||||
                                    newRetailDetail.getPkMember(), newRetailDetail.getChildNode());
 | 
			
		||||
                            // 新点位是推荐人点位的第二层
 | 
			
		||||
                            iCuMemberBonusStageService.handlePointSecond(memberRangeExtMap, newRetailDetail, parentRetailDetail,
 | 
			
		||||
                                    rangeTableName, rangeDetailTableName, BonusConstants.POINT_21);
 | 
			
		||||
                            // 当前新子点位填充完成,进入下一个新子点位
 | 
			
		||||
                            continue newPointInt;
 | 
			
		||||
                        } else if (null == parentRetailDetail.getPointMember22()) {
 | 
			
		||||
                            iCuMemberBonusStageService.fillRetailDetail(parentRetailDetail, BonusConstants.POINT_22,
 | 
			
		||||
                                    newRetailDetail.getPkMember(), newRetailDetail.getChildNode());
 | 
			
		||||
                            // 新点位是推荐人点位的第二层
 | 
			
		||||
                            iCuMemberBonusStageService.handlePointSecond(memberRangeExtMap, newRetailDetail, parentRetailDetail,
 | 
			
		||||
                                    rangeTableName, rangeDetailTableName, BonusConstants.POINT_22);
 | 
			
		||||
                            // 当前新子点位填充完成,进入下一个新子点位
 | 
			
		||||
                            continue newPointInt;
 | 
			
		||||
                        } else if (null == parentRetailDetail.getPointMember23()) {
 | 
			
		||||
                            iCuMemberBonusStageService.fillRetailDetail(parentRetailDetail, BonusConstants.POINT_23,
 | 
			
		||||
                                    newRetailDetail.getPkMember(), newRetailDetail.getChildNode());
 | 
			
		||||
                            // 新点位是推荐人点位的第二层
 | 
			
		||||
                            iCuMemberBonusStageService.handlePointSecond(memberRangeExtMap, newRetailDetail, parentRetailDetail,
 | 
			
		||||
                                    rangeTableName, rangeDetailTableName, BonusConstants.POINT_23);
 | 
			
		||||
                            // 当前新子点位填充完成,进入下一个新子点位
 | 
			
		||||
                            continue newPointInt;
 | 
			
		||||
                        } else if (null == parentRetailDetail.getPointMember24()) {
 | 
			
		||||
                            iCuMemberBonusStageService.fillRetailDetail(parentRetailDetail, BonusConstants.POINT_24,
 | 
			
		||||
                                    newRetailDetail.getPkMember(), newRetailDetail.getChildNode());
 | 
			
		||||
                            // 新点位是推荐人点位的第二层
 | 
			
		||||
                            iCuMemberBonusStageService.handlePointSecond(memberRangeExtMap, newRetailDetail, parentRetailDetail,
 | 
			
		||||
                                    rangeTableName, rangeDetailTableName, BonusConstants.POINT_24);
 | 
			
		||||
                            // 当前新子点位填充完成,进入下一个新子点位
 | 
			
		||||
                            continue newPointInt;
 | 
			
		||||
                        }
 | 
			
		||||
                    }
 | 
			
		||||
                }
 | 
			
		||||
                for (Map.Entry<Integer, CuMemberRetailDetail> integerCuMemberRetailDetailEntry : parentDetailList.entrySet()) {
 | 
			
		||||
                    // 第三层填充
 | 
			
		||||
                    CuMemberRetailDetail parentRetailDetail = integerCuMemberRetailDetailEntry.getValue();
 | 
			
		||||
                    // 遍历推荐人点位,使用第一个未完成的点位,进行填充
 | 
			
		||||
                    if (EBonusStageStatus.NO.getValue() == parentRetailDetail.getStageStatus()) {
 | 
			
		||||
                        if (null == parentRetailDetail.getPointMember31()) {
 | 
			
		||||
                            iCuMemberBonusStageService.fillRetailDetail(parentRetailDetail, BonusConstants.POINT_31,
 | 
			
		||||
                                    newRetailDetail.getPkMember(), newRetailDetail.getChildNode());
 | 
			
		||||
                            // 新点位是推荐人点位的第三层
 | 
			
		||||
                            iCuMemberBonusStageService.handlePointThird(memberRangeExtMap, newRetailDetail, parentRetailDetail,
 | 
			
		||||
                                    rangeTableName, rangeDetailTableName, BonusConstants.POINT_31);
 | 
			
		||||
                            // 当前新子点位填充完成,进入下一个新子点位
 | 
			
		||||
                            continue newPointInt;
 | 
			
		||||
                        } else if (null == parentRetailDetail.getPointMember32()) {
 | 
			
		||||
                            iCuMemberBonusStageService.fillRetailDetail(parentRetailDetail, BonusConstants.POINT_32,
 | 
			
		||||
                                    newRetailDetail.getPkMember(), newRetailDetail.getChildNode());
 | 
			
		||||
                            // 新点位是推荐人点位的第三层
 | 
			
		||||
                            iCuMemberBonusStageService.handlePointThird(memberRangeExtMap, newRetailDetail, parentRetailDetail,
 | 
			
		||||
                                    rangeTableName, rangeDetailTableName, BonusConstants.POINT_32);
 | 
			
		||||
                            // 当前新子点位填充完成,进入下一个新子点位
 | 
			
		||||
                            continue newPointInt;
 | 
			
		||||
                        } else if (null == parentRetailDetail.getPointMember33()) {
 | 
			
		||||
                            iCuMemberBonusStageService.fillRetailDetail(parentRetailDetail, BonusConstants.POINT_33,
 | 
			
		||||
                                    newRetailDetail.getPkMember(), newRetailDetail.getChildNode());
 | 
			
		||||
                            // 新点位是推荐人点位的第三层
 | 
			
		||||
                            iCuMemberBonusStageService.handlePointThird(memberRangeExtMap, newRetailDetail, parentRetailDetail,
 | 
			
		||||
                                    rangeTableName, rangeDetailTableName, BonusConstants.POINT_33);
 | 
			
		||||
                            // 当前新子点位填充完成,进入下一个新子点位
 | 
			
		||||
                            continue newPointInt;
 | 
			
		||||
                        } else if (null == parentRetailDetail.getPointMember34()) {
 | 
			
		||||
                            iCuMemberBonusStageService.fillRetailDetail(parentRetailDetail, BonusConstants.POINT_34,
 | 
			
		||||
                                    newRetailDetail.getPkMember(), newRetailDetail.getChildNode());
 | 
			
		||||
                            // 新点位是推荐人点位的第三层
 | 
			
		||||
                            iCuMemberBonusStageService.handlePointThird(memberRangeExtMap, newRetailDetail, parentRetailDetail,
 | 
			
		||||
                                    rangeTableName, rangeDetailTableName, BonusConstants.POINT_34);
 | 
			
		||||
                            // 当前新子点位填充完成,进入下一个新子点位
 | 
			
		||||
                            continue newPointInt;
 | 
			
		||||
                        } else if (null == parentRetailDetail.getPointMember35()) {
 | 
			
		||||
                            iCuMemberBonusStageService.fillRetailDetail(parentRetailDetail, BonusConstants.POINT_35,
 | 
			
		||||
                                    newRetailDetail.getPkMember(), newRetailDetail.getChildNode());
 | 
			
		||||
                            // 新点位是推荐人点位的第三层
 | 
			
		||||
                            iCuMemberBonusStageService.handlePointThird(memberRangeExtMap, newRetailDetail, parentRetailDetail,
 | 
			
		||||
                                    rangeTableName, rangeDetailTableName, BonusConstants.POINT_35);
 | 
			
		||||
                            // 当前新子点位填充完成,进入下一个新子点位
 | 
			
		||||
                            continue newPointInt;
 | 
			
		||||
                        } else if (null == parentRetailDetail.getPointMember36()) {
 | 
			
		||||
                            iCuMemberBonusStageService.fillRetailDetail(parentRetailDetail, BonusConstants.POINT_36,
 | 
			
		||||
                                    newRetailDetail.getPkMember(), newRetailDetail.getChildNode());
 | 
			
		||||
                            // 新点位是推荐人点位的第三层
 | 
			
		||||
                            iCuMemberBonusStageService.handlePointThird(memberRangeExtMap, newRetailDetail, parentRetailDetail,
 | 
			
		||||
                                    rangeTableName, rangeDetailTableName, BonusConstants.POINT_36);
 | 
			
		||||
                            // 当前新子点位填充完成,进入下一个新子点位
 | 
			
		||||
                            continue newPointInt;
 | 
			
		||||
                        } else if (null == parentRetailDetail.getPointMember37()) {
 | 
			
		||||
                            iCuMemberBonusStageService.fillRetailDetail(parentRetailDetail, BonusConstants.POINT_37,
 | 
			
		||||
                                    newRetailDetail.getPkMember(), newRetailDetail.getChildNode());
 | 
			
		||||
                            // 新点位是推荐人点位的第三层
 | 
			
		||||
                            iCuMemberBonusStageService.handlePointThird(memberRangeExtMap, newRetailDetail, parentRetailDetail,
 | 
			
		||||
                                    rangeTableName, rangeDetailTableName, BonusConstants.POINT_37);
 | 
			
		||||
                            // 当前新子点位填充完成,进入下一个新子点位
 | 
			
		||||
                            continue newPointInt;
 | 
			
		||||
                        } else if (null == parentRetailDetail.getPointMember38()) {
 | 
			
		||||
                            iCuMemberBonusStageService.fillRetailDetail(parentRetailDetail, BonusConstants.POINT_38,
 | 
			
		||||
                                    newRetailDetail.getPkMember(), newRetailDetail.getChildNode());
 | 
			
		||||
                            // 新点位是推荐人点位的第三层
 | 
			
		||||
                            iCuMemberBonusStageService.handlePointThird(memberRangeExtMap, newRetailDetail, parentRetailDetail,
 | 
			
		||||
                                    rangeTableName, rangeDetailTableName, BonusConstants.POINT_38);
 | 
			
		||||
                            // 当前新子点位填充完成,进入下一个新子点位
 | 
			
		||||
                            continue newPointInt;
 | 
			
		||||
                        }
 | 
			
		||||
                    }
 | 
			
		||||
                }
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -40,22 +40,23 @@ public class BonusSettleServiceImpl implements IBonusSettleService {
 | 
			
		|||
    @Autowired
 | 
			
		||||
    private IBonusOrderService iBonusOrderService;
 | 
			
		||||
    @Autowired
 | 
			
		||||
    private ICuMemberSettlePeriodService cuMemberSettlePeriodService;
 | 
			
		||||
    @Autowired
 | 
			
		||||
    private BonusSettleRangeHandle bonusSettleRangeHandle;
 | 
			
		||||
    @Autowired
 | 
			
		||||
    private ICuMemberBonusService cuMemberBonusService;
 | 
			
		||||
    private ICuMemberSettlePeriodService iCuMemberSettlePeriodService;
 | 
			
		||||
    @Autowired
 | 
			
		||||
    private ICuMemberBonusPushService cuMemberBonusPushService;
 | 
			
		||||
    private ICuMemberBonusService iCuMemberBonusService;
 | 
			
		||||
    @Autowired
 | 
			
		||||
    private ICuMemberBonusRangeService cuMemberBonusRangeService;
 | 
			
		||||
    private ICuMemberBonusPushService iCuMemberBonusPushService;
 | 
			
		||||
    @Autowired
 | 
			
		||||
    private ICuMemberBonusDetailService cuMemberBonusDetailService;
 | 
			
		||||
 | 
			
		||||
    private ICuMemberBonusStageService iCuMemberBonusStageService;
 | 
			
		||||
    @Autowired
 | 
			
		||||
    private ICuMemberBonusRangeService iCuMemberBonusRangeService;
 | 
			
		||||
    @Autowired
 | 
			
		||||
    private ICuMemberBonusDetailService iCuMemberBonusDetailService;
 | 
			
		||||
    @Autowired
 | 
			
		||||
    private ICuMemberRetailRangeService iCuMemberRetailRangeService;
 | 
			
		||||
    @Autowired
 | 
			
		||||
    private ICuMemberService cuMemberService;
 | 
			
		||||
    private ICuMemberService iCuMemberService;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
| 
						 | 
				
			
			@ -68,8 +69,8 @@ public class BonusSettleServiceImpl implements IBonusSettleService {
 | 
			
		|||
        List<CuMemberBonus> cuMemberBonusList = setCuMemberBonusSeq(settleDate, cuMemberBonusMap);
 | 
			
		||||
        if (cuMemberBonusList.size() > 0) {
 | 
			
		||||
            // 插入奖金主表
 | 
			
		||||
            cuMemberBonusService.insertOrUpdateCuMemberBonus(cuMemberBonusList);
 | 
			
		||||
            List<CuMemberBonus> cuMemberBonuses = cuMemberBonusService.queryCuMemberBonus(period, cuMemberBonusList);
 | 
			
		||||
            iCuMemberBonusService.insertOrUpdateCuMemberBonus(cuMemberBonusList);
 | 
			
		||||
            List<CuMemberBonus> cuMemberBonuses = iCuMemberBonusService.queryCuMemberBonus(period, cuMemberBonusList);
 | 
			
		||||
            cuMemberBonuses.forEach(cuMemberBonus -> cuMemberBonusMap.put(cuMemberBonus.getPkMember(), cuMemberBonus));
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
| 
						 | 
				
			
			@ -79,10 +80,10 @@ public class BonusSettleServiceImpl implements IBonusSettleService {
 | 
			
		|||
    public void calculateCuMemberBonus(String settleDate) {
 | 
			
		||||
        try {
 | 
			
		||||
            // 结算期间
 | 
			
		||||
            Integer period = cuMemberSettlePeriodService.getCuMemberSettlePeriodByDate(settleDate).getPkId();
 | 
			
		||||
            Integer period = iCuMemberSettlePeriodService.getCuMemberSettlePeriodByDate(settleDate).getPkId();
 | 
			
		||||
            String yesterday = DateUtils.beforeDateStr(1, ChronoUnit.DAYS, DateUtils.YYYY_MM_DD, settleDate);
 | 
			
		||||
            // 结算期间前一天期间
 | 
			
		||||
            Integer yesterdayPeriod = cuMemberSettlePeriodService.getCuMemberSettlePeriodByDate(yesterday).getPkId();
 | 
			
		||||
            Integer yesterdayPeriod = iCuMemberSettlePeriodService.getCuMemberSettlePeriodByDate(yesterday).getPkId();
 | 
			
		||||
 | 
			
		||||
            // 获取所有国家的奖金项 key = 国家 + 奖金项的值
 | 
			
		||||
            BonusConfigDTO bonusConfigDTO = iBonusItemsServiceApi.queryBonusConfigDTO().getData();
 | 
			
		||||
| 
						 | 
				
			
			@ -121,10 +122,10 @@ public class BonusSettleServiceImpl implements IBonusSettleService {
 | 
			
		|||
            // 处理奖金结算秒结表,判断是否存在当天结算的秒接表,从cu_member中获取网体,从昨日结算表中获取累计、结余数据
 | 
			
		||||
            // 今天结算期数
 | 
			
		||||
            String settleDate = DateUtils.parseDateToStr(DateUtils.YYYY_MM_DD, saOrderExt.getPayTime());
 | 
			
		||||
            int currentPeriod = cuMemberSettlePeriodService.getCuMemberSettlePeriodByDate(settleDate).getPkId();
 | 
			
		||||
            int currentPeriod = iCuMemberSettlePeriodService.getCuMemberSettlePeriodByDate(settleDate).getPkId();
 | 
			
		||||
            // 昨天结算期数
 | 
			
		||||
            String beforeDay = DateUtils.parseDateToStr(DateUtils.YYYY_MM_DD, DateUtils.beforeDate(1, ChronoUnit.DAYS, saOrderExt.getPayTime()));
 | 
			
		||||
            int beforePeriod = cuMemberSettlePeriodService.getCuMemberSettlePeriodByDate(beforeDay).getPkId();
 | 
			
		||||
            int beforePeriod = iCuMemberSettlePeriodService.getCuMemberSettlePeriodByDate(beforeDay).getPkId();
 | 
			
		||||
            // 秒结表名
 | 
			
		||||
            String secondRangeTableName = TableNameConstants.CU_MEMBER_RETAIL_S + currentPeriod;
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -137,28 +138,28 @@ public class BonusSettleServiceImpl implements IBonusSettleService {
 | 
			
		|||
                        secondRangeTableName, beforePeriod, currentPeriod, cuMemberBonusMap, cuMemberBonusDetailList);
 | 
			
		||||
                saveCuMemberBonus(currentPeriod, settleDate, cuMemberBonusMap);
 | 
			
		||||
 | 
			
		||||
                Set<Long> memberIdSet = cuMemberBonusService.queryMemberBonusByPeriod(currentPeriod);
 | 
			
		||||
                Set<Long> memberIdSet = iCuMemberBonusService.queryMemberBonusByPeriod(currentPeriod);
 | 
			
		||||
                if (cuMemberBonusRangeList.size() > 0) {
 | 
			
		||||
                    cuMemberBonusRangeList.forEach(cuMemberBonusRange ->
 | 
			
		||||
                            cuMemberBonusRange.setPkBonus(cuMemberBonusMap.get(cuMemberBonusRange.getPkBonus()).getPkId()));
 | 
			
		||||
                    cuMemberBonusRangeService.batchInsertCuMemberBonusRange(cuMemberBonusRangeList, memberIdSet);
 | 
			
		||||
                    iCuMemberBonusRangeService.batchInsertCuMemberBonusRange(cuMemberBonusRangeList, memberIdSet);
 | 
			
		||||
                }
 | 
			
		||||
                if (cuMemberBonusDetailList.size() > 0) {
 | 
			
		||||
                    cuMemberBonusDetailList.forEach(cuMemberBonusDetail ->
 | 
			
		||||
                            cuMemberBonusDetail.setPkBonus(cuMemberBonusMap.get(cuMemberBonusDetail.getPkBonus()).getPkId()));
 | 
			
		||||
                    cuMemberBonusDetailService.batchInsertCuMemberBonusDetail(cuMemberBonusDetailList, memberIdSet);
 | 
			
		||||
                    iCuMemberBonusDetailService.batchInsertCuMemberBonusDetail(cuMemberBonusDetailList, memberIdSet);
 | 
			
		||||
                }
 | 
			
		||||
            } else {
 | 
			
		||||
                // 订单撤单处理(逆向)
 | 
			
		||||
                if (!DateUtils.isSameDay(saOrderExt.getPayTime(), DateUtils.currentDate())) {
 | 
			
		||||
                    settleDate = DateUtils.parseDateToFormat(DateUtils.YYYY_MM_DD, DateUtils.beforeDate(1, ChronoUnit.DAYS));
 | 
			
		||||
                    currentPeriod = cuMemberSettlePeriodService.getCuMemberSettlePeriodByDate(settleDate).getPkId();
 | 
			
		||||
                    currentPeriod = iCuMemberSettlePeriodService.getCuMemberSettlePeriodByDate(settleDate).getPkId();
 | 
			
		||||
                }
 | 
			
		||||
                // 实时计算撤单数据(业绩、等级、奖衔、日奖)
 | 
			
		||||
                bonusSettleRangeHandle.calculateCuMemberBackRetailIncome(saOrderExt, bonusConfigDTO,
 | 
			
		||||
                        secondRangeTableName, beforePeriod, currentPeriod);
 | 
			
		||||
                // 处理收益
 | 
			
		||||
                cuMemberBonusService.mergeBackMemberBonusIncome(saOrderExt.getPkId());
 | 
			
		||||
                iCuMemberBonusService.mergeBackMemberBonusIncome(saOrderExt.getPkId());
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
| 
						 | 
				
			
			@ -177,11 +178,11 @@ public class BonusSettleServiceImpl implements IBonusSettleService {
 | 
			
		|||
        }
 | 
			
		||||
        // 今天结算期数
 | 
			
		||||
        String settleDate = DateUtils.parseDateToStr(DateUtils.YYYY_MM_DD, orderExt.getPayTime());
 | 
			
		||||
        int currentPeriod = cuMemberSettlePeriodService.getCuMemberSettlePeriodByDate(settleDate).getPkId();
 | 
			
		||||
        int currentPeriod = iCuMemberSettlePeriodService.getCuMemberSettlePeriodByDate(settleDate).getPkId();
 | 
			
		||||
        // 秒结表名
 | 
			
		||||
        String secondRangeTableName = TableNameConstants.CU_MEMBER_RETAIL_S + currentPeriod;
 | 
			
		||||
        List<CuMemberExt> memberList = iCuMemberRetailRangeService.findParentMemberList(orderExt.getPkMember());
 | 
			
		||||
        CuMember self = cuMemberService.getById(orderExt.getPkId());
 | 
			
		||||
        CuMember self = iCuMemberService.getById(orderExt.getPkId());
 | 
			
		||||
        iCuMemberRetailRangeService.updateMemberRetailSecondRangeSelf(secondRangeTableName, orderExt, self, updateType, symbol);
 | 
			
		||||
        iCuMemberRetailRangeService.updateMemberRetailSecondRangeParent(secondRangeTableName, orderExt, memberList, updateType, symbol);
 | 
			
		||||
    }
 | 
			
		||||
| 
						 | 
				
			
			@ -193,10 +194,11 @@ public class BonusSettleServiceImpl implements IBonusSettleService {
 | 
			
		|||
     * @param bonusRecordDetailVO 奖金明细表
 | 
			
		||||
     */
 | 
			
		||||
    void insertCuMemberBonus(String settleDate, Integer period, Map<Long, CuMemberBonus> cuMemberBonusMap, BonusRecordDetailVO bonusRecordDetailVO) {
 | 
			
		||||
        cuMemberBonusPushService.deleteCuMemberBonusPush(period);
 | 
			
		||||
        cuMemberBonusDetailService.deleteCuMemberBonusDetail(period);
 | 
			
		||||
        cuMemberBonusRangeService.deleteCuMemberBonusRange(period);
 | 
			
		||||
        cuMemberBonusService.deleteCuMemberBonus(period);
 | 
			
		||||
        iCuMemberBonusPushService.deleteCuMemberBonusPush(period);
 | 
			
		||||
        iCuMemberBonusStageService.deleteCuMemberBonusStage(period);
 | 
			
		||||
        iCuMemberBonusDetailService.deleteCuMemberBonusDetail(period);
 | 
			
		||||
        iCuMemberBonusRangeService.deleteCuMemberBonusRange(period);
 | 
			
		||||
        iCuMemberBonusService.deleteCuMemberBonus(period);
 | 
			
		||||
        if (cuMemberBonusMap.size() == 0) {
 | 
			
		||||
            return;
 | 
			
		||||
        }
 | 
			
		||||
| 
						 | 
				
			
			@ -207,11 +209,17 @@ public class BonusSettleServiceImpl implements IBonusSettleService {
 | 
			
		|||
        List<CuMemberBonusPush> cuMemberBonusPushList = bonusRecordDetailVO.getCuMemberBonusPushList();
 | 
			
		||||
        List<CuMemberBonusDetail> cuMemberBonusDetailList = bonusRecordDetailVO.getCuMemberBonusDetailList();
 | 
			
		||||
        List<CuMemberBonusRange> cuMemberBonusRangeList = bonusRecordDetailVO.getCuMemberBonusRangeList();
 | 
			
		||||
        // 阶段收益奖金明细
 | 
			
		||||
        List<CuMemberBonusStage> cuMemberBonusStageList = bonusRecordDetailVO.getCuMemberBonusStageList();
 | 
			
		||||
        if (cuMemberBonusPushList != null && cuMemberBonusPushList.size() > 0) {
 | 
			
		||||
            cuMemberBonusPushList.forEach(cuMemberBonusPush ->
 | 
			
		||||
                    cuMemberBonusPush.setPkBonus(cuMemberBonusMap.get(cuMemberBonusPush.getPkBonus()).getPkId()));
 | 
			
		||||
            batchMemberBonusPushList.addAll(cuMemberBonusPushList);
 | 
			
		||||
        }
 | 
			
		||||
        if (cuMemberBonusStageList != null && cuMemberBonusStageList.size() > 0) {
 | 
			
		||||
            cuMemberBonusStageList.forEach(cuMemberBonusStage ->
 | 
			
		||||
                    cuMemberBonusStage.setPkBonus(cuMemberBonusMap.get(cuMemberBonusStage.getPkBonus()).getPkId()));
 | 
			
		||||
        }
 | 
			
		||||
        if (cuMemberBonusDetailList != null && cuMemberBonusDetailList.size() > 0) {
 | 
			
		||||
            cuMemberBonusDetailList.forEach(cuMemberBonusDetail ->
 | 
			
		||||
                    cuMemberBonusDetail.setPkBonus(cuMemberBonusMap.get(cuMemberBonusDetail.getPkBonus()).getPkId()));
 | 
			
		||||
| 
						 | 
				
			
			@ -223,15 +231,16 @@ public class BonusSettleServiceImpl implements IBonusSettleService {
 | 
			
		|||
            batchMemberBonusRangeList.addAll(cuMemberBonusRangeList);
 | 
			
		||||
        }
 | 
			
		||||
        // 插入奖金主表
 | 
			
		||||
        cuMemberBonusService.batchInsertCuMemberBonus(cuMemberBonusList);
 | 
			
		||||
        Set<Long> memberIdSet = cuMemberBonusService.queryMemberBonusByPeriod(period);
 | 
			
		||||
        cuMemberBonusPushService.batchInsertCuMemberBonusPush(batchMemberBonusPushList, memberIdSet);
 | 
			
		||||
        cuMemberBonusDetailService.batchInsertCuMemberBonusDetail(batchMemberBonusDetailList, memberIdSet);
 | 
			
		||||
        cuMemberBonusRangeService.batchInsertCuMemberBonusRange(batchMemberBonusRangeList, memberIdSet);
 | 
			
		||||
        iCuMemberBonusService.batchInsertCuMemberBonus(cuMemberBonusList);
 | 
			
		||||
        Set<Long> memberIdSet = iCuMemberBonusService.queryMemberBonusByPeriod(period);
 | 
			
		||||
        iCuMemberBonusPushService.batchInsertCuMemberBonusPush(batchMemberBonusPushList, memberIdSet);
 | 
			
		||||
        iCuMemberBonusStageService.batchInsertCuMemberBonusStage(cuMemberBonusStageList, memberIdSet);
 | 
			
		||||
        iCuMemberBonusDetailService.batchInsertCuMemberBonusDetail(batchMemberBonusDetailList, memberIdSet);
 | 
			
		||||
        iCuMemberBonusRangeService.batchInsertCuMemberBonusRange(batchMemberBonusRangeList, memberIdSet);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    private List<CuMemberBonus> setCuMemberBonusSeq(String settleDate, Map<Long, CuMemberBonus> cuMemberBonusMap) {
 | 
			
		||||
        List<Long> pkIdList = cuMemberBonusService.batchQueryCuMemberBonusSeq(cuMemberBonusMap.size());
 | 
			
		||||
        List<Long> pkIdList = iCuMemberBonusService.batchQueryCuMemberBonusSeq(cuMemberBonusMap.size());
 | 
			
		||||
        int i = 0;
 | 
			
		||||
        // 判断时间,重算的时候直接是已公布
 | 
			
		||||
        Integer grantStatus = EGrantStatus.SETTLED.getValue();
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -5,23 +5,26 @@ import cn.hutool.core.util.ObjectUtil;
 | 
			
		|||
import cn.hutool.core.util.ReflectUtil;
 | 
			
		||||
import com.hzs.bonus.achieve.mapper.CuMemberRetailRangeMapper;
 | 
			
		||||
import com.hzs.bonus.achieve.service.ICuMemberRetailDetailService;
 | 
			
		||||
import com.hzs.bonus.achieve.service.impl.CuMemberBonusSettle;
 | 
			
		||||
import com.hzs.bonus.bonus.mapper.CuMemberBonusStageMapper;
 | 
			
		||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 | 
			
		||||
import com.hzs.bonus.bonus.service.ICuMemberBonusStageService;
 | 
			
		||||
import com.hzs.bonus.constant.BonusConstants;
 | 
			
		||||
import com.hzs.common.core.constant.MagicNumberConstants;
 | 
			
		||||
import com.hzs.common.core.enums.EBonusStage;
 | 
			
		||||
import com.hzs.common.core.enums.ECalType;
 | 
			
		||||
import com.hzs.common.domain.member.achieve.CuMemberRetailDetail;
 | 
			
		||||
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 org.springframework.beans.factory.annotation.Autowired;
 | 
			
		||||
import org.springframework.stereotype.Service;
 | 
			
		||||
 | 
			
		||||
import javax.annotation.Resource;
 | 
			
		||||
import java.lang.reflect.Field;
 | 
			
		||||
import java.util.ArrayList;
 | 
			
		||||
import java.util.HashMap;
 | 
			
		||||
import java.util.List;
 | 
			
		||||
import java.util.Map;
 | 
			
		||||
import java.math.BigDecimal;
 | 
			
		||||
import java.util.*;
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * 会员奖金-阶段收益明细表 服务实现类
 | 
			
		||||
| 
						 | 
				
			
			@ -29,25 +32,65 @@ import java.util.Map;
 | 
			
		|||
@Service
 | 
			
		||||
public class CuMemberBonusStageServiceImpl extends ServiceImpl<CuMemberBonusStageMapper, CuMemberBonusStage> implements ICuMemberBonusStageService {
 | 
			
		||||
 | 
			
		||||
    @Autowired
 | 
			
		||||
    private CuMemberBonusSettle cuMemberBonusSettle;
 | 
			
		||||
    @Autowired
 | 
			
		||||
    private ICuMemberRetailDetailService iCuMemberRetailDetailService;
 | 
			
		||||
 | 
			
		||||
    @Resource
 | 
			
		||||
    private CuMemberRetailRangeMapper cuMemberRetailRangeMapper;
 | 
			
		||||
 | 
			
		||||
    private void initFieldMap() {
 | 
			
		||||
        BonusConstants.FIELD_MAP = new HashMap<>();
 | 
			
		||||
        for (String suffix : BonusConstants.FIELD_LIST) {
 | 
			
		||||
            BonusConstants.FIELD_MAP.put(BonusConstants.POINT_MEMBER_FIELD_NAME + suffix, ReflectUtil.getField(CuMemberRetailDetail.class, BonusConstants.POINT_MEMBER_FIELD_NAME + suffix));
 | 
			
		||||
            BonusConstants.FIELD_MAP.put(BonusConstants.POINT_FIELD_NAME + suffix, ReflectUtil.getField(CuMemberRetailDetail.class, BonusConstants.POINT_FIELD_NAME + suffix));
 | 
			
		||||
    @Override
 | 
			
		||||
    public void deleteCuMemberBonusStage(Integer period) {
 | 
			
		||||
        baseMapper.deleteCuMemberBonusStage(period);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @Override
 | 
			
		||||
    public void batchInsertCuMemberBonusStage(List<CuMemberBonusStage> cuMemberBonusStageList, Set<Long> memberIdSet) {
 | 
			
		||||
        if (CollectionUtil.isEmpty(cuMemberBonusStageList)) {
 | 
			
		||||
            return;
 | 
			
		||||
        }
 | 
			
		||||
        List<CuMemberBonusStage> addMemberBonusStageList = new ArrayList<>();
 | 
			
		||||
        for (CuMemberBonusStage cuMemberBonusStage : cuMemberBonusStageList) {
 | 
			
		||||
            if (memberIdSet.contains(cuMemberBonusStage.getPkBonus())) {
 | 
			
		||||
                addMemberBonusStageList.add(cuMemberBonusStage);
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
        if (addMemberBonusStageList.size() == 0) {
 | 
			
		||||
            return;
 | 
			
		||||
        }
 | 
			
		||||
        List<List<?>> lists = cuMemberBonusSettle.handleCutList(addMemberBonusStageList);
 | 
			
		||||
        lists.forEach(list ->
 | 
			
		||||
                baseMapper.batchInsertCuMemberBonusStage(list));
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * 获取阶段收益信息
 | 
			
		||||
     */
 | 
			
		||||
    @Override
 | 
			
		||||
    public CuMemberBonusStage getCuMemberBonusStage(SaOrderExt saOrderExt, CuMemberRetailRangeExt cuMemberRetailRange, CuMemberBonus cuMemberBonus, Integer pkBonusItems) {
 | 
			
		||||
        CuMemberBonusStage cuMemberBonusStage = CuMemberBonusStage.builder()
 | 
			
		||||
                .pkBonus(cuMemberBonus.getPkId())
 | 
			
		||||
                .pkOrder(saOrderExt.getPkId())
 | 
			
		||||
                .pkBonusItems(pkBonusItems)
 | 
			
		||||
                .incomeStatus(cuMemberRetailRange.getIncomeStatus())
 | 
			
		||||
                .calType(ECalType.VALUE.getValue())
 | 
			
		||||
                .calAchieve(BigDecimal.ZERO)
 | 
			
		||||
                .calValue(BigDecimal.ZERO)
 | 
			
		||||
                .pretaxIncome(BigDecimal.ZERO)
 | 
			
		||||
                .incomeTax(BigDecimal.ZERO)
 | 
			
		||||
                .realIncome(BigDecimal.ZERO)
 | 
			
		||||
                .incomeRatio(BigDecimal.ZERO)
 | 
			
		||||
                .incomeDialRatio(BigDecimal.ZERO)
 | 
			
		||||
                .orderDialRatio(BigDecimal.ZERO)
 | 
			
		||||
                .build();
 | 
			
		||||
        cuMemberBonusStage.setPkCountry(cuMemberRetailRange.getPkSettleCountry());
 | 
			
		||||
        cuMemberBonusStage.setPkCreator(MagicNumberConstants.PK_ADMIN);
 | 
			
		||||
        return cuMemberBonusStage;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @Override
 | 
			
		||||
    public String fillChildNode(CuMemberRetailDetail cuMemberRetailDetail, CuMemberRetailDetail newRetailDetail) {
 | 
			
		||||
        if (ObjectUtil.isEmpty(BonusConstants.FIELD_MAP)) {
 | 
			
		||||
            initFieldMap();
 | 
			
		||||
        }
 | 
			
		||||
        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);
 | 
			
		||||
| 
						 | 
				
			
			@ -55,6 +98,7 @@ public class CuMemberBonusStageServiceImpl extends ServiceImpl<CuMemberBonusStag
 | 
			
		|||
            if (ObjectUtil.isEmpty(pointFieldValue)) {
 | 
			
		||||
                ReflectUtil.setFieldValue(cuMemberRetailDetail, pointMemberField, newRetailDetail.getPkMember());
 | 
			
		||||
                ReflectUtil.setFieldValue(cuMemberRetailDetail, pointField, newRetailDetail.getChildNode());
 | 
			
		||||
                ReflectUtil.setFieldValue(cuMemberRetailDetail, BonusConstants.UPDATE_FLAG, 0);
 | 
			
		||||
                return suffix;
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
| 
						 | 
				
			
			@ -64,8 +108,8 @@ public class CuMemberBonusStageServiceImpl extends ServiceImpl<CuMemberBonusStag
 | 
			
		|||
    /**
 | 
			
		||||
     * 向上填充子点位
 | 
			
		||||
     */
 | 
			
		||||
    public void fillUpTargetRetailDetail(CuMemberRetailDetail targetRetailDetail, CuMemberRetailDetail newParentRetailDetail,
 | 
			
		||||
                                         CuMemberRetailDetail newRetailDetail, String node) {
 | 
			
		||||
    private void fillUpTargetRetailDetail(CuMemberRetailDetail targetRetailDetail, CuMemberRetailDetail newParentRetailDetail,
 | 
			
		||||
                                          CuMemberRetailDetail newRetailDetail, String node) {
 | 
			
		||||
        if (null == targetRetailDetail) {
 | 
			
		||||
            return;
 | 
			
		||||
        }
 | 
			
		||||
| 
						 | 
				
			
			@ -78,80 +122,60 @@ public class CuMemberBonusStageServiceImpl extends ServiceImpl<CuMemberBonusStag
 | 
			
		|||
                switch (suffix) {
 | 
			
		||||
                    case BonusConstants.POINT_11:
 | 
			
		||||
                        if (BonusConstants.POINT_11.equals(node)) {
 | 
			
		||||
                            ReflectUtil.setFieldValue(targetRetailDetail, BonusConstants.POINT_MEMBER_FIELD_NAME + BonusConstants.POINT_21, newRetailDetail.getPkMember());
 | 
			
		||||
                            ReflectUtil.setFieldValue(targetRetailDetail, BonusConstants.POINT_FIELD_NAME + BonusConstants.POINT_21, newRetailDetail.getChildNode());
 | 
			
		||||
                            this.fillRetailDetail(targetRetailDetail, BonusConstants.POINT_21, newRetailDetail.getPkMember(), newRetailDetail.getChildNode());
 | 
			
		||||
                        } else if (BonusConstants.POINT_12.equals(node)) {
 | 
			
		||||
                            ReflectUtil.setFieldValue(targetRetailDetail, BonusConstants.POINT_MEMBER_FIELD_NAME + BonusConstants.POINT_22, newRetailDetail.getPkMember());
 | 
			
		||||
                            ReflectUtil.setFieldValue(targetRetailDetail, BonusConstants.POINT_FIELD_NAME + BonusConstants.POINT_22, newRetailDetail.getChildNode());
 | 
			
		||||
                            this.fillRetailDetail(targetRetailDetail, BonusConstants.POINT_22, newRetailDetail.getPkMember(), newRetailDetail.getChildNode());
 | 
			
		||||
                        } else if (BonusConstants.POINT_21.equals(node)) {
 | 
			
		||||
                            ReflectUtil.setFieldValue(targetRetailDetail, BonusConstants.POINT_MEMBER_FIELD_NAME + BonusConstants.POINT_31, newRetailDetail.getPkMember());
 | 
			
		||||
                            ReflectUtil.setFieldValue(targetRetailDetail, BonusConstants.POINT_FIELD_NAME + BonusConstants.POINT_31, newRetailDetail.getChildNode());
 | 
			
		||||
                            this.fillRetailDetail(targetRetailDetail, BonusConstants.POINT_31, newRetailDetail.getPkMember(), newRetailDetail.getChildNode());
 | 
			
		||||
                        } else if (BonusConstants.POINT_22.equals(node)) {
 | 
			
		||||
                            ReflectUtil.setFieldValue(targetRetailDetail, BonusConstants.POINT_MEMBER_FIELD_NAME + BonusConstants.POINT_32, newRetailDetail.getPkMember());
 | 
			
		||||
                            ReflectUtil.setFieldValue(targetRetailDetail, BonusConstants.POINT_FIELD_NAME + BonusConstants.POINT_32, newRetailDetail.getChildNode());
 | 
			
		||||
                            this.fillRetailDetail(targetRetailDetail, BonusConstants.POINT_32, newRetailDetail.getPkMember(), newRetailDetail.getChildNode());
 | 
			
		||||
                        } else if (BonusConstants.POINT_23.equals(node)) {
 | 
			
		||||
                            ReflectUtil.setFieldValue(targetRetailDetail, BonusConstants.POINT_MEMBER_FIELD_NAME + BonusConstants.POINT_33, newRetailDetail.getPkMember());
 | 
			
		||||
                            ReflectUtil.setFieldValue(targetRetailDetail, BonusConstants.POINT_FIELD_NAME + BonusConstants.POINT_33, newRetailDetail.getChildNode());
 | 
			
		||||
                            this.fillRetailDetail(targetRetailDetail, BonusConstants.POINT_33, newRetailDetail.getPkMember(), newRetailDetail.getChildNode());
 | 
			
		||||
                        } else if (BonusConstants.POINT_24.equals(node)) {
 | 
			
		||||
                            ReflectUtil.setFieldValue(targetRetailDetail, BonusConstants.POINT_MEMBER_FIELD_NAME + BonusConstants.POINT_34, newRetailDetail.getPkMember());
 | 
			
		||||
                            ReflectUtil.setFieldValue(targetRetailDetail, BonusConstants.POINT_FIELD_NAME + BonusConstants.POINT_34, newRetailDetail.getChildNode());
 | 
			
		||||
                            this.fillRetailDetail(targetRetailDetail, BonusConstants.POINT_34, newRetailDetail.getPkMember(), newRetailDetail.getChildNode());
 | 
			
		||||
                        }
 | 
			
		||||
                        break;
 | 
			
		||||
                    case BonusConstants.POINT_12:
 | 
			
		||||
                        if (BonusConstants.POINT_11.equals(node)) {
 | 
			
		||||
                            ReflectUtil.setFieldValue(targetRetailDetail, BonusConstants.POINT_MEMBER_FIELD_NAME + BonusConstants.POINT_23, newRetailDetail.getPkMember());
 | 
			
		||||
                            ReflectUtil.setFieldValue(targetRetailDetail, BonusConstants.POINT_FIELD_NAME + BonusConstants.POINT_23, newRetailDetail.getChildNode());
 | 
			
		||||
                            this.fillRetailDetail(targetRetailDetail, BonusConstants.POINT_23, newRetailDetail.getPkMember(), newRetailDetail.getChildNode());
 | 
			
		||||
                        } else if (BonusConstants.POINT_12.equals(node)) {
 | 
			
		||||
                            ReflectUtil.setFieldValue(targetRetailDetail, BonusConstants.POINT_MEMBER_FIELD_NAME + BonusConstants.POINT_24, newRetailDetail.getPkMember());
 | 
			
		||||
                            ReflectUtil.setFieldValue(targetRetailDetail, BonusConstants.POINT_FIELD_NAME + BonusConstants.POINT_24, newRetailDetail.getChildNode());
 | 
			
		||||
                            this.fillRetailDetail(targetRetailDetail, BonusConstants.POINT_24, newRetailDetail.getPkMember(), newRetailDetail.getChildNode());
 | 
			
		||||
                        } else if (BonusConstants.POINT_21.equals(node)) {
 | 
			
		||||
                            ReflectUtil.setFieldValue(targetRetailDetail, BonusConstants.POINT_MEMBER_FIELD_NAME + BonusConstants.POINT_35, newRetailDetail.getPkMember());
 | 
			
		||||
                            ReflectUtil.setFieldValue(targetRetailDetail, BonusConstants.POINT_FIELD_NAME + BonusConstants.POINT_35, newRetailDetail.getChildNode());
 | 
			
		||||
                            this.fillRetailDetail(targetRetailDetail, BonusConstants.POINT_35, newRetailDetail.getPkMember(), newRetailDetail.getChildNode());
 | 
			
		||||
                        } else if (BonusConstants.POINT_22.equals(node)) {
 | 
			
		||||
                            ReflectUtil.setFieldValue(targetRetailDetail, BonusConstants.POINT_MEMBER_FIELD_NAME + BonusConstants.POINT_36, newRetailDetail.getPkMember());
 | 
			
		||||
                            ReflectUtil.setFieldValue(targetRetailDetail, BonusConstants.POINT_FIELD_NAME + BonusConstants.POINT_36, newRetailDetail.getChildNode());
 | 
			
		||||
                            this.fillRetailDetail(targetRetailDetail, BonusConstants.POINT_36, newRetailDetail.getPkMember(), newRetailDetail.getChildNode());
 | 
			
		||||
                        } else if (BonusConstants.POINT_23.equals(node)) {
 | 
			
		||||
                            ReflectUtil.setFieldValue(targetRetailDetail, BonusConstants.POINT_MEMBER_FIELD_NAME + BonusConstants.POINT_37, newRetailDetail.getPkMember());
 | 
			
		||||
                            ReflectUtil.setFieldValue(targetRetailDetail, BonusConstants.POINT_FIELD_NAME + BonusConstants.POINT_37, newRetailDetail.getChildNode());
 | 
			
		||||
                            this.fillRetailDetail(targetRetailDetail, BonusConstants.POINT_37, newRetailDetail.getPkMember(), newRetailDetail.getChildNode());
 | 
			
		||||
                        } else if (BonusConstants.POINT_24.equals(node)) {
 | 
			
		||||
                            ReflectUtil.setFieldValue(targetRetailDetail, BonusConstants.POINT_MEMBER_FIELD_NAME + BonusConstants.POINT_38, newRetailDetail.getPkMember());
 | 
			
		||||
                            ReflectUtil.setFieldValue(targetRetailDetail, BonusConstants.POINT_FIELD_NAME + BonusConstants.POINT_38, newRetailDetail.getChildNode());
 | 
			
		||||
                            this.fillRetailDetail(targetRetailDetail, BonusConstants.POINT_38, newRetailDetail.getPkMember(), newRetailDetail.getChildNode());
 | 
			
		||||
                        }
 | 
			
		||||
                        break;
 | 
			
		||||
                    case BonusConstants.POINT_21:
 | 
			
		||||
                        if (BonusConstants.POINT_11.equals(node)) {
 | 
			
		||||
                            ReflectUtil.setFieldValue(targetRetailDetail, BonusConstants.POINT_MEMBER_FIELD_NAME + BonusConstants.POINT_31, newRetailDetail.getPkMember());
 | 
			
		||||
                            ReflectUtil.setFieldValue(targetRetailDetail, BonusConstants.POINT_FIELD_NAME + BonusConstants.POINT_31, newRetailDetail.getChildNode());
 | 
			
		||||
                            this.fillRetailDetail(targetRetailDetail, BonusConstants.POINT_31, newRetailDetail.getPkMember(), newRetailDetail.getChildNode());
 | 
			
		||||
                        } else if (BonusConstants.POINT_12.equals(node)) {
 | 
			
		||||
                            ReflectUtil.setFieldValue(targetRetailDetail, BonusConstants.POINT_MEMBER_FIELD_NAME + BonusConstants.POINT_32, newRetailDetail.getPkMember());
 | 
			
		||||
                            ReflectUtil.setFieldValue(targetRetailDetail, BonusConstants.POINT_FIELD_NAME + BonusConstants.POINT_32, newRetailDetail.getChildNode());
 | 
			
		||||
                            this.fillRetailDetail(targetRetailDetail, BonusConstants.POINT_32, newRetailDetail.getPkMember(), newRetailDetail.getChildNode());
 | 
			
		||||
                        }
 | 
			
		||||
                        break;
 | 
			
		||||
                    case BonusConstants.POINT_22:
 | 
			
		||||
                        if (BonusConstants.POINT_11.equals(node)) {
 | 
			
		||||
                            ReflectUtil.setFieldValue(targetRetailDetail, BonusConstants.POINT_MEMBER_FIELD_NAME + BonusConstants.POINT_33, newRetailDetail.getPkMember());
 | 
			
		||||
                            ReflectUtil.setFieldValue(targetRetailDetail, BonusConstants.POINT_FIELD_NAME + BonusConstants.POINT_33, newRetailDetail.getChildNode());
 | 
			
		||||
                            this.fillRetailDetail(targetRetailDetail, BonusConstants.POINT_33, newRetailDetail.getPkMember(), newRetailDetail.getChildNode());
 | 
			
		||||
                        } else if (BonusConstants.POINT_12.equals(node)) {
 | 
			
		||||
                            ReflectUtil.setFieldValue(targetRetailDetail, BonusConstants.POINT_MEMBER_FIELD_NAME + BonusConstants.POINT_34, newRetailDetail.getPkMember());
 | 
			
		||||
                            ReflectUtil.setFieldValue(targetRetailDetail, BonusConstants.POINT_FIELD_NAME + BonusConstants.POINT_34, newRetailDetail.getChildNode());
 | 
			
		||||
                            this.fillRetailDetail(targetRetailDetail, BonusConstants.POINT_34, newRetailDetail.getPkMember(), newRetailDetail.getChildNode());
 | 
			
		||||
                        }
 | 
			
		||||
                        break;
 | 
			
		||||
                    case BonusConstants.POINT_23:
 | 
			
		||||
                        if (BonusConstants.POINT_11.equals(node)) {
 | 
			
		||||
                            ReflectUtil.setFieldValue(targetRetailDetail, BonusConstants.POINT_MEMBER_FIELD_NAME + BonusConstants.POINT_35, newRetailDetail.getPkMember());
 | 
			
		||||
                            ReflectUtil.setFieldValue(targetRetailDetail, BonusConstants.POINT_FIELD_NAME + BonusConstants.POINT_35, newRetailDetail.getChildNode());
 | 
			
		||||
                            this.fillRetailDetail(targetRetailDetail, BonusConstants.POINT_35, newRetailDetail.getPkMember(), newRetailDetail.getChildNode());
 | 
			
		||||
                        } else if (BonusConstants.POINT_12.equals(node)) {
 | 
			
		||||
                            ReflectUtil.setFieldValue(targetRetailDetail, BonusConstants.POINT_MEMBER_FIELD_NAME + BonusConstants.POINT_36, newRetailDetail.getPkMember());
 | 
			
		||||
                            ReflectUtil.setFieldValue(targetRetailDetail, BonusConstants.POINT_FIELD_NAME + BonusConstants.POINT_36, newRetailDetail.getChildNode());
 | 
			
		||||
                            this.fillRetailDetail(targetRetailDetail, BonusConstants.POINT_36, newRetailDetail.getPkMember(), newRetailDetail.getChildNode());
 | 
			
		||||
                        }
 | 
			
		||||
                        break;
 | 
			
		||||
                    case BonusConstants.POINT_24:
 | 
			
		||||
                        if (BonusConstants.POINT_11.equals(node)) {
 | 
			
		||||
                            ReflectUtil.setFieldValue(targetRetailDetail, BonusConstants.POINT_MEMBER_FIELD_NAME + BonusConstants.POINT_37, newRetailDetail.getPkMember());
 | 
			
		||||
                            ReflectUtil.setFieldValue(targetRetailDetail, BonusConstants.POINT_FIELD_NAME + BonusConstants.POINT_37, newRetailDetail.getChildNode());
 | 
			
		||||
                            this.fillRetailDetail(targetRetailDetail, BonusConstants.POINT_37, newRetailDetail.getPkMember(), newRetailDetail.getChildNode());
 | 
			
		||||
                        } else if (BonusConstants.POINT_12.equals(node)) {
 | 
			
		||||
                            ReflectUtil.setFieldValue(targetRetailDetail, BonusConstants.POINT_MEMBER_FIELD_NAME + BonusConstants.POINT_38, newRetailDetail.getPkMember());
 | 
			
		||||
                            ReflectUtil.setFieldValue(targetRetailDetail, BonusConstants.POINT_FIELD_NAME + BonusConstants.POINT_38, newRetailDetail.getChildNode());
 | 
			
		||||
                            this.fillRetailDetail(targetRetailDetail, BonusConstants.POINT_38, newRetailDetail.getPkMember(), newRetailDetail.getChildNode());
 | 
			
		||||
                        }
 | 
			
		||||
                        break;
 | 
			
		||||
                }
 | 
			
		||||
| 
						 | 
				
			
			@ -163,8 +187,8 @@ public class CuMemberBonusStageServiceImpl extends ServiceImpl<CuMemberBonusStag
 | 
			
		|||
    /**
 | 
			
		||||
     * 向下填充子点位
 | 
			
		||||
     */
 | 
			
		||||
    public void fillDownTargetRetailDetail(CuMemberRetailDetail targetRetailDetail, CuMemberRetailDetail newRetailDetail,
 | 
			
		||||
                                           String node, Integer level) {
 | 
			
		||||
    private void fillDownTargetRetailDetail(CuMemberRetailDetail targetRetailDetail, CuMemberRetailDetail newRetailDetail,
 | 
			
		||||
                                            String node, Integer level) {
 | 
			
		||||
        if (null == targetRetailDetail) {
 | 
			
		||||
            return;
 | 
			
		||||
        }
 | 
			
		||||
| 
						 | 
				
			
			@ -175,38 +199,43 @@ public class CuMemberBonusStageServiceImpl extends ServiceImpl<CuMemberBonusStag
 | 
			
		|||
                    || BonusConstants.POINT_33.equals(node)
 | 
			
		||||
                    || BonusConstants.POINT_35.equals(node)
 | 
			
		||||
                    || BonusConstants.POINT_37.equals(node)) {
 | 
			
		||||
                targetRetailDetail.setPointMember11(newRetailDetail.getPkMember());
 | 
			
		||||
                targetRetailDetail.setPoint11(newRetailDetail.getChildNode());
 | 
			
		||||
                this.fillRetailDetail(targetRetailDetail, BonusConstants.POINT_11, newRetailDetail.getPkMember(), newRetailDetail.getChildNode());
 | 
			
		||||
            } else if (BonusConstants.POINT_22.equals(node)
 | 
			
		||||
                    || BonusConstants.POINT_24.equals(node)
 | 
			
		||||
                    || BonusConstants.POINT_32.equals(node)
 | 
			
		||||
                    || BonusConstants.POINT_34.equals(node)
 | 
			
		||||
                    || BonusConstants.POINT_36.equals(node)
 | 
			
		||||
                    || BonusConstants.POINT_38.equals(node)) {
 | 
			
		||||
                targetRetailDetail.setPointMember12(newRetailDetail.getPkMember());
 | 
			
		||||
                targetRetailDetail.setPoint12(newRetailDetail.getChildNode());
 | 
			
		||||
                this.fillRetailDetail(targetRetailDetail, BonusConstants.POINT_12, newRetailDetail.getPkMember(), newRetailDetail.getChildNode());
 | 
			
		||||
            }
 | 
			
		||||
        } else if (level.equals(2)) {
 | 
			
		||||
            if (BonusConstants.POINT_31.equals(node)
 | 
			
		||||
                    || BonusConstants.POINT_35.equals(node)) {
 | 
			
		||||
                targetRetailDetail.setPointMember21(newRetailDetail.getPkMember());
 | 
			
		||||
                targetRetailDetail.setPoint21(newRetailDetail.getChildNode());
 | 
			
		||||
                this.fillRetailDetail(targetRetailDetail, BonusConstants.POINT_21, newRetailDetail.getPkMember(), newRetailDetail.getChildNode());
 | 
			
		||||
            } else if (BonusConstants.POINT_32.equals(node)
 | 
			
		||||
                    || BonusConstants.POINT_36.equals(node)) {
 | 
			
		||||
                targetRetailDetail.setPointMember22(newRetailDetail.getPkMember());
 | 
			
		||||
                targetRetailDetail.setPoint22(newRetailDetail.getChildNode());
 | 
			
		||||
                this.fillRetailDetail(targetRetailDetail, BonusConstants.POINT_22, newRetailDetail.getPkMember(), newRetailDetail.getChildNode());
 | 
			
		||||
            } else if (BonusConstants.POINT_33.equals(node)
 | 
			
		||||
                    || BonusConstants.POINT_37.equals(node)) {
 | 
			
		||||
                targetRetailDetail.setPointMember23(newRetailDetail.getPkMember());
 | 
			
		||||
                targetRetailDetail.setPoint23(newRetailDetail.getChildNode());
 | 
			
		||||
                this.fillRetailDetail(targetRetailDetail, BonusConstants.POINT_23, newRetailDetail.getPkMember(), newRetailDetail.getChildNode());
 | 
			
		||||
            } else if (BonusConstants.POINT_34.equals(node)
 | 
			
		||||
                    || BonusConstants.POINT_38.equals(node)) {
 | 
			
		||||
                targetRetailDetail.setPointMember24(newRetailDetail.getPkMember());
 | 
			
		||||
                targetRetailDetail.setPoint24(newRetailDetail.getChildNode());
 | 
			
		||||
                this.fillRetailDetail(targetRetailDetail, BonusConstants.POINT_24, newRetailDetail.getPkMember(), newRetailDetail.getChildNode());
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * 填充点位
 | 
			
		||||
     */
 | 
			
		||||
    @Override
 | 
			
		||||
    public void fillRetailDetail(CuMemberRetailDetail targetRetailDetail, String point,
 | 
			
		||||
                                 Long pkMember, Integer childNode) {
 | 
			
		||||
        ReflectUtil.setFieldValue(targetRetailDetail, BonusConstants.POINT_MEMBER_FIELD_NAME + point, pkMember);
 | 
			
		||||
        ReflectUtil.setFieldValue(targetRetailDetail, BonusConstants.POINT_FIELD_NAME + point, childNode);
 | 
			
		||||
        ReflectUtil.setFieldValue(targetRetailDetail, BonusConstants.UPDATE_FLAG, 0);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @Override
 | 
			
		||||
    public void handlePointFirst(Map<Long, CuMemberRetailRangeExt> memberRangeExtMap,
 | 
			
		||||
                                 CuMemberRetailDetail newRetailDetail, CuMemberRetailDetail newParentRetailDetail,
 | 
			
		||||
| 
						 | 
				
			
			@ -238,22 +267,25 @@ public class CuMemberBonusStageServiceImpl extends ServiceImpl<CuMemberBonusStag
 | 
			
		|||
        }
 | 
			
		||||
 | 
			
		||||
        // 新点位的上第二层
 | 
			
		||||
        newRetailDetail.setPointMemberSecond(newParentRetailDetail.getPointMemberFirst());
 | 
			
		||||
        newRetailDetail.setPointSecond(newParentRetailDetail.getPointFirst());
 | 
			
		||||
        CuMemberRetailRangeExt firstMemberRetail = memberRangeExtMap.get(newParentRetailDetail.getPointMemberFirst());
 | 
			
		||||
        if (null != firstMemberRetail) {
 | 
			
		||||
            CuMemberRetailDetail memberDetail = firstMemberRetail.getOneDetailMap().get(newParentRetailDetail.getPointFirst());
 | 
			
		||||
            this.fillUpTargetRetailDetail(memberDetail, newParentRetailDetail, newRetailDetail, newNode);
 | 
			
		||||
            if (null != memberDetail) {
 | 
			
		||||
                newRetailDetail.setPointMemberSecond(newParentRetailDetail.getPointMemberFirst());
 | 
			
		||||
                newRetailDetail.setPointSecond(newParentRetailDetail.getPointFirst());
 | 
			
		||||
                this.fillUpTargetRetailDetail(memberDetail, newParentRetailDetail, newRetailDetail, newNode);
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
        // 新点位的上第三层
 | 
			
		||||
        newRetailDetail.setPointMemberThird(newParentRetailDetail.getPointMemberSecond());
 | 
			
		||||
        newRetailDetail.setPointThird(newParentRetailDetail.getPointSecond());
 | 
			
		||||
        CuMemberRetailRangeExt secondMemberRetail = memberRangeExtMap.get(newParentRetailDetail.getPointMemberSecond());
 | 
			
		||||
        if (null != secondMemberRetail) {
 | 
			
		||||
            CuMemberRetailDetail memberDetail = secondMemberRetail.getOneDetailMap().get(newParentRetailDetail.getPointSecond());
 | 
			
		||||
            this.fillUpTargetRetailDetail(memberDetail, newParentRetailDetail, newRetailDetail, newNode);
 | 
			
		||||
            if (null != memberDetail) {
 | 
			
		||||
                newRetailDetail.setPointMemberThird(newParentRetailDetail.getPointMemberSecond());
 | 
			
		||||
                newRetailDetail.setPointThird(newParentRetailDetail.getPointSecond());
 | 
			
		||||
                this.fillUpTargetRetailDetail(memberDetail, newParentRetailDetail, newRetailDetail, newNode);
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -268,7 +300,7 @@ public class CuMemberBonusStageServiceImpl extends ServiceImpl<CuMemberBonusStag
 | 
			
		|||
        List<Long> queryMemberList = new ArrayList<>(2);
 | 
			
		||||
        // 获取上第三层结算数据
 | 
			
		||||
        CuMemberRetailRangeExt memberUpFirst = memberRangeExtMap.get(newParentRetailDetail.getPointMemberFirst());
 | 
			
		||||
        if (null == memberUpFirst) {
 | 
			
		||||
        if (null == memberUpFirst && null != newParentRetailDetail.getPointMemberFirst()) {
 | 
			
		||||
            queryMemberList.add(newParentRetailDetail.getPointMemberFirst());
 | 
			
		||||
        }
 | 
			
		||||
        // 获取上第一层结算数据
 | 
			
		||||
| 
						 | 
				
			
			@ -287,7 +319,7 @@ public class CuMemberBonusStageServiceImpl extends ServiceImpl<CuMemberBonusStag
 | 
			
		|||
                break;
 | 
			
		||||
        }
 | 
			
		||||
        CuMemberRetailRangeExt memberDownFirst = memberRangeExtMap.get(downFirstMember);
 | 
			
		||||
        if (null == memberDownFirst) {
 | 
			
		||||
        if (null == memberDownFirst && null != downFirstMember) {
 | 
			
		||||
            queryMemberList.add(downFirstMember);
 | 
			
		||||
        }
 | 
			
		||||
        if (CollectionUtil.isNotEmpty(queryMemberList)) {
 | 
			
		||||
| 
						 | 
				
			
			@ -303,12 +335,14 @@ public class CuMemberBonusStageServiceImpl extends ServiceImpl<CuMemberBonusStag
 | 
			
		|||
        }
 | 
			
		||||
 | 
			
		||||
        // 新点位的上第三层
 | 
			
		||||
        newRetailDetail.setPointMemberThird(newParentRetailDetail.getPointMemberFirst());
 | 
			
		||||
        newRetailDetail.setPointThird(newParentRetailDetail.getPointFirst());
 | 
			
		||||
        CuMemberRetailRangeExt thirdMemberRetail = memberRangeExtMap.get(newParentRetailDetail.getPointMemberFirst());
 | 
			
		||||
        if (null != thirdMemberRetail) {
 | 
			
		||||
            CuMemberRetailDetail memberDetail = thirdMemberRetail.getOneDetailMap().get(newParentRetailDetail.getPointFirst());
 | 
			
		||||
            this.fillUpTargetRetailDetail(memberDetail, newParentRetailDetail, newRetailDetail, newNode);
 | 
			
		||||
            if (null != memberDetail) {
 | 
			
		||||
                newRetailDetail.setPointMemberThird(newParentRetailDetail.getPointMemberFirst());
 | 
			
		||||
                newRetailDetail.setPointThird(newParentRetailDetail.getPointFirst());
 | 
			
		||||
                this.fillUpTargetRetailDetail(memberDetail, newParentRetailDetail, newRetailDetail, newNode);
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        // 新点位的上第一层
 | 
			
		||||
| 
						 | 
				
			
			@ -371,11 +405,11 @@ public class CuMemberBonusStageServiceImpl extends ServiceImpl<CuMemberBonusStag
 | 
			
		|||
                break;
 | 
			
		||||
        }
 | 
			
		||||
        CuMemberRetailRangeExt memberDownSecond = memberRangeExtMap.get(downSecondMember);
 | 
			
		||||
        if (null == memberDownSecond) {
 | 
			
		||||
        if (null == memberDownSecond && null != downSecondMember) {
 | 
			
		||||
            queryMemberList.add(downSecondMember);
 | 
			
		||||
        }
 | 
			
		||||
        CuMemberRetailRangeExt memberDownFirst = memberRangeExtMap.get(downFirstMember);
 | 
			
		||||
        if (null == memberDownFirst) {
 | 
			
		||||
        if (null == memberDownFirst && null != downFirstMember) {
 | 
			
		||||
            queryMemberList.add(downFirstMember);
 | 
			
		||||
        }
 | 
			
		||||
        if (CollectionUtil.isNotEmpty(queryMemberList)) {
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -18,10 +18,15 @@ public class BonusRecordDetailVO implements Serializable {
 | 
			
		|||
    private Long pkMember;
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     *
 | 
			
		||||
     * 直推收益、见点收益
 | 
			
		||||
     */
 | 
			
		||||
    private List<CuMemberBonusPush> cuMemberBonusPushList;
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * 阶段收益
 | 
			
		||||
     */
 | 
			
		||||
    private List<CuMemberBonusStage> cuMemberBonusStageList;
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * 新零售 - 区域分红、月度分红
 | 
			
		||||
     */
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1,7 +1,11 @@
 | 
			
		|||
package com.hzs.bonus.constant;
 | 
			
		||||
 | 
			
		||||
import cn.hutool.core.util.ReflectUtil;
 | 
			
		||||
import com.hzs.common.domain.member.achieve.CuMemberRetailDetail;
 | 
			
		||||
 | 
			
		||||
import java.lang.reflect.Field;
 | 
			
		||||
import java.util.Arrays;
 | 
			
		||||
import java.util.HashMap;
 | 
			
		||||
import java.util.List;
 | 
			
		||||
import java.util.Map;
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -25,9 +29,21 @@ public class BonusConstants {
 | 
			
		|||
    public static final List<String> FIELD_LIST = Arrays.asList(POINT_11, POINT_12, POINT_21, POINT_22, POINT_23, POINT_24,
 | 
			
		||||
            POINT_31, POINT_32, POINT_33, POINT_34, POINT_35, POINT_36, POINT_37, POINT_38);
 | 
			
		||||
 | 
			
		||||
    public static final String POINT_FIELD_NAME = "point";
 | 
			
		||||
    // 会员ID字段
 | 
			
		||||
    public static final String POINT_MEMBER_FIELD_NAME = "pointMember";
 | 
			
		||||
    // 会员子点位字段
 | 
			
		||||
    public static final String POINT_FIELD_NAME = "point";
 | 
			
		||||
    // 入库标记字段
 | 
			
		||||
    public static final String UPDATE_FLAG = "updateBool";
 | 
			
		||||
 | 
			
		||||
    public static Map<String, Field> FIELD_MAP = null;
 | 
			
		||||
 | 
			
		||||
    static {
 | 
			
		||||
        BonusConstants.FIELD_MAP = new HashMap<>();
 | 
			
		||||
        for (String suffix : BonusConstants.FIELD_LIST) {
 | 
			
		||||
            BonusConstants.FIELD_MAP.put(BonusConstants.POINT_MEMBER_FIELD_NAME + suffix, ReflectUtil.getField(CuMemberRetailDetail.class, BonusConstants.POINT_MEMBER_FIELD_NAME + suffix));
 | 
			
		||||
            BonusConstants.FIELD_MAP.put(BonusConstants.POINT_FIELD_NAME + suffix, ReflectUtil.getField(CuMemberRetailDetail.class, BonusConstants.POINT_FIELD_NAME + suffix));
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -299,32 +299,32 @@
 | 
			
		|||
            stage_status        NUMBER(1) default 1 not null,
 | 
			
		||||
            stage_date          DATE,
 | 
			
		||||
            point_11            NUMBER(8),
 | 
			
		||||
            point_12            NUMBER(8),
 | 
			
		||||
            point_21            NUMBER(8),
 | 
			
		||||
            point_22            NUMBER(8),
 | 
			
		||||
            point_23            NUMBER(8),
 | 
			
		||||
            point_24            NUMBER(8),
 | 
			
		||||
            point_31            NUMBER(8),
 | 
			
		||||
            point_32            NUMBER(8),
 | 
			
		||||
            point_33            NUMBER(8),
 | 
			
		||||
            point_34            NUMBER(8),
 | 
			
		||||
            point_35            NUMBER(8),
 | 
			
		||||
            point_36            NUMBER(8),
 | 
			
		||||
            point_37            NUMBER(8),
 | 
			
		||||
            point_38            NUMBER(8),
 | 
			
		||||
            point_member_11     NUMBER(20),
 | 
			
		||||
            point_12            NUMBER(8),
 | 
			
		||||
            point_member_12     NUMBER(20),
 | 
			
		||||
            point_21            NUMBER(8),
 | 
			
		||||
            point_member_21     NUMBER(20),
 | 
			
		||||
            point_22            NUMBER(8),
 | 
			
		||||
            point_member_22     NUMBER(20),
 | 
			
		||||
            point_23            NUMBER(8),
 | 
			
		||||
            point_member_23     NUMBER(20),
 | 
			
		||||
            point_24            NUMBER(8),
 | 
			
		||||
            point_member_24     NUMBER(20),
 | 
			
		||||
            point_31            NUMBER(8),
 | 
			
		||||
            point_member_31     NUMBER(20),
 | 
			
		||||
            point_32            NUMBER(8),
 | 
			
		||||
            point_member_32     NUMBER(20),
 | 
			
		||||
            point_33            NUMBER(8),
 | 
			
		||||
            point_member_33     NUMBER(20),
 | 
			
		||||
            point_34            NUMBER(8),
 | 
			
		||||
            point_member_34     NUMBER(20),
 | 
			
		||||
            point_35            NUMBER(8),
 | 
			
		||||
            point_member_35     NUMBER(20),
 | 
			
		||||
            point_36            NUMBER(8),
 | 
			
		||||
            point_member_36     NUMBER(20),
 | 
			
		||||
            point_37            NUMBER(8),
 | 
			
		||||
            point_member_37     NUMBER(20),
 | 
			
		||||
            point_38            NUMBER(8),
 | 
			
		||||
            point_member_38     NUMBER(20),
 | 
			
		||||
            point_type          NUMBER(1) default 0 not null,
 | 
			
		||||
            point_gift          NUMBER(1) default 0 not null,
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -2,31 +2,36 @@
 | 
			
		|||
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
 | 
			
		||||
<mapper namespace="com.hzs.bonus.bonus.mapper.CuMemberBonusStageMapper">
 | 
			
		||||
 | 
			
		||||
    <!-- 通用查询映射结果 -->
 | 
			
		||||
    <resultMap id="BaseResultMap" type="com.hzs.common.domain.member.bonus.CuMemberBonusStage">
 | 
			
		||||
        <id column="PK_ID" property="pkId"/>
 | 
			
		||||
        <result column="DEL_FLAG" property="delFlag"/>
 | 
			
		||||
        <result column="PK_COUNTRY" property="pkCountry"/>
 | 
			
		||||
        <result column="PK_CREATOR" property="pkCreator"/>
 | 
			
		||||
        <result column="CREATION_TIME" property="creationTime"/>
 | 
			
		||||
        <result column="PK_MODIFIED" property="pkModified"/>
 | 
			
		||||
        <result column="MODIFIED_TIME" property="modifiedTime"/>
 | 
			
		||||
        <result column="PK_BONUS" property="pkBonus"/>
 | 
			
		||||
        <result column="PK_ORDER" property="pkOrder"/>
 | 
			
		||||
        <result column="PK_BONUS_ITEMS" property="pkBonusItems"/>
 | 
			
		||||
        <result column="INCOME_STATUS" property="incomeStatus"/>
 | 
			
		||||
        <result column="CAL_TYPE" property="calType"/>
 | 
			
		||||
        <result column="CAL_ACHIEVE" property="calAchieve"/>
 | 
			
		||||
        <result column="CAL_VALUE" property="calValue"/>
 | 
			
		||||
        <result column="PRETAX_INCOME" property="pretaxIncome"/>
 | 
			
		||||
        <result column="INCOME_TAX" property="incomeTax"/>
 | 
			
		||||
        <result column="REAL_INCOME" property="realIncome"/>
 | 
			
		||||
        <result column="REMARK" property="remark"/>
 | 
			
		||||
        <result column="INCOME_RATIO" property="incomeRatio"/>
 | 
			
		||||
        <result column="INCOME_DIAL_RATIO" property="incomeDialRatio"/>
 | 
			
		||||
        <result column="ORDER_DIAL_RATIO" property="orderDialRatio"/>
 | 
			
		||||
        <result column="STAGE" property="stage"/>
 | 
			
		||||
        <result column="STAGE_NUM" property="stageNum"/>
 | 
			
		||||
    </resultMap>
 | 
			
		||||
    <!-- 删除会员阶段奖金表 -->
 | 
			
		||||
    <delete id="deleteCuMemberBonusStage">
 | 
			
		||||
        delete
 | 
			
		||||
        from CU_MEMBER_BONUS_STAGE
 | 
			
		||||
        where PK_BONUS in (
 | 
			
		||||
            select pk_id
 | 
			
		||||
            from cu_member_bonus
 | 
			
		||||
            where period = #{period}
 | 
			
		||||
              and grant_status <= 2)
 | 
			
		||||
    </delete>
 | 
			
		||||
 | 
			
		||||
    <!-- 批量插入会员阶段奖 -->
 | 
			
		||||
    <insert id="batchInsertCuMemberBonusStage">
 | 
			
		||||
        insert ALL
 | 
			
		||||
        <foreach item="item" index="index" collection="cuMemberBonusStageList" separator=" ">
 | 
			
		||||
            into cu_member_bonus_stage (
 | 
			
		||||
            pk_bonus, pk_order, pk_bonus_items, income_status,
 | 
			
		||||
            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)
 | 
			
		||||
            values (
 | 
			
		||||
            #{item.pkBonus}, #{item.pkOrder}, #{item.pkBonusItems}, #{item.incomeStatus},
 | 
			
		||||
            #{item.calType}, #{item.calAchieve}, #{item.calValue},
 | 
			
		||||
            #{item.pretaxIncome}, #{item.incomeTax}, #{item.realIncome},
 | 
			
		||||
            #{item.round}, #{item.second}, #{item.remark},
 | 
			
		||||
            #{item.incomeRatio}, #{item.incomeDialRatio}, #{item.orderDialRatio},
 | 
			
		||||
            #{item.pkCreator}, #{item.childNode}, #{item.stage}, #{item.stageNum})
 | 
			
		||||
        </foreach>
 | 
			
		||||
        SELECT 1 FROM dual
 | 
			
		||||
    </insert>
 | 
			
		||||
 | 
			
		||||
</mapper>
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -90,7 +90,7 @@
 | 
			
		|||
        </if>
 | 
			
		||||
        and so.pay_time >= #{startDate}
 | 
			
		||||
        and so.pay_time < #{endDate}
 | 
			
		||||
        order by pay_time desc
 | 
			
		||||
        order by pay_time
 | 
			
		||||
    </select>
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -0,0 +1,23 @@
 | 
			
		|||
package com.hzs.member.base.mapper;
 | 
			
		||||
 | 
			
		||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 | 
			
		||||
import com.hzs.common.domain.member.achieve.CuMemberRetailDetail;
 | 
			
		||||
import com.hzs.member.structure.controller.vo.ChildCodeVO;
 | 
			
		||||
import org.apache.ibatis.annotations.Param;
 | 
			
		||||
 | 
			
		||||
import java.util.List;
 | 
			
		||||
 | 
			
		||||
public interface CuMemberRetailDetailMapper extends BaseMapper<CuMemberRetailDetail> {
 | 
			
		||||
    List<ChildCodeVO> getChildList(@Param("memberCode") String memberCode,
 | 
			
		||||
                                   @Param("stage")Integer stage,
 | 
			
		||||
                                   @Param("stageStatus")Integer stageStatus,
 | 
			
		||||
                                   @Param("settleTableName")String settleTableName);
 | 
			
		||||
 | 
			
		||||
    CuMemberRetailDetail getCuMemberRetailDetailExt(@Param("memberCode")String memberCode,
 | 
			
		||||
                                                       @Param("stage")Integer stage,
 | 
			
		||||
                                                       @Param("stageStatus")Integer stageStatus,
 | 
			
		||||
                                                       @Param("childNode")String childNode,
 | 
			
		||||
                                                       @Param("settleTableName")String settleTableName);
 | 
			
		||||
 | 
			
		||||
    Integer getFindCumemberRetailDetail(@Param("settleTableName") String settleTableName);
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			@ -0,0 +1,17 @@
 | 
			
		|||
package com.hzs.member.base.service;
 | 
			
		||||
 | 
			
		||||
import cn.hutool.core.lang.tree.Tree;
 | 
			
		||||
import com.hzs.common.domain.member.achieve.CuMemberRetailDetail;
 | 
			
		||||
import com.hzs.member.structure.controller.vo.ChildCodeVO;
 | 
			
		||||
 | 
			
		||||
import java.util.List;
 | 
			
		||||
 | 
			
		||||
public interface ICumemberRetailDetail {
 | 
			
		||||
    List<ChildCodeVO> getChildList(String memberCode, Integer stage, Integer stageStatus, String settleTableName);
 | 
			
		||||
 | 
			
		||||
    CuMemberRetailDetail getCuMemberRetailDetail(String memberCode, Integer stage, Integer stageStatus, String childNode, String settleTableName);
 | 
			
		||||
 | 
			
		||||
    Integer getFindCumemberRetailDetail(String settleTableName);
 | 
			
		||||
 | 
			
		||||
    List<Tree<String>> convertToNodeList(CuMemberRetailDetail cuMemberRetailDetail);
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			@ -0,0 +1,115 @@
 | 
			
		|||
package com.hzs.member.base.service.impl;
 | 
			
		||||
 | 
			
		||||
import cn.hutool.core.lang.tree.Tree;
 | 
			
		||||
import cn.hutool.core.lang.tree.TreeUtil;
 | 
			
		||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 | 
			
		||||
import com.hzs.common.domain.member.achieve.CuMemberRetailDetail;
 | 
			
		||||
import com.hzs.common.domain.member.base.CuMember;
 | 
			
		||||
import com.hzs.member.base.mapper.CuMemberRetailDetailMapper;
 | 
			
		||||
import com.hzs.member.base.service.ICuMemberService;
 | 
			
		||||
import com.hzs.member.base.service.ICumemberRetailDetail;
 | 
			
		||||
import com.hzs.member.structure.controller.vo.ChildCodeVO;
 | 
			
		||||
import org.springframework.beans.factory.annotation.Autowired;
 | 
			
		||||
import org.springframework.stereotype.Service;
 | 
			
		||||
 | 
			
		||||
import java.util.*;
 | 
			
		||||
import java.util.function.Function;
 | 
			
		||||
import java.util.stream.Collectors;
 | 
			
		||||
import java.util.stream.Stream;
 | 
			
		||||
 | 
			
		||||
@Service
 | 
			
		||||
public class ICumemberRetailDetailImpl extends ServiceImpl<CuMemberRetailDetailMapper, CuMemberRetailDetail> implements ICumemberRetailDetail {
 | 
			
		||||
    @Autowired
 | 
			
		||||
    private ICuMemberService iCuMemberService;
 | 
			
		||||
    @Override
 | 
			
		||||
    public List<ChildCodeVO> getChildList(String memberCode, Integer stage, Integer stageStatus, String settleTableName) {
 | 
			
		||||
        return baseMapper.getChildList(memberCode,stage,stageStatus,settleTableName);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @Override
 | 
			
		||||
    public CuMemberRetailDetail getCuMemberRetailDetail(String memberCode, Integer stage, Integer stageStatus,String childNode,String settleTableName) {
 | 
			
		||||
        return baseMapper.getCuMemberRetailDetailExt(memberCode,stage,stageStatus,childNode,settleTableName);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @Override
 | 
			
		||||
    public Integer getFindCumemberRetailDetail(String settleTableName) {
 | 
			
		||||
        return baseMapper.getFindCumemberRetailDetail(settleTableName);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @Override
 | 
			
		||||
    public List<Tree<String>> convertToNodeList(CuMemberRetailDetail cuMemberRetailDetail) {
 | 
			
		||||
        // 所有会员id
 | 
			
		||||
        Set<Long> ids = new LinkedHashSet<>();
 | 
			
		||||
        ids.add(cuMemberRetailDetail.getPkMember());
 | 
			
		||||
        // 过滤空的会员id
 | 
			
		||||
        Stream.of(
 | 
			
		||||
                cuMemberRetailDetail.getPointMember11(), cuMemberRetailDetail.getPointMember12(),
 | 
			
		||||
                cuMemberRetailDetail.getPointMember21(), cuMemberRetailDetail.getPointMember22(), cuMemberRetailDetail.getPointMember23(), cuMemberRetailDetail.getPointMember24(),
 | 
			
		||||
                cuMemberRetailDetail.getPointMember31(), cuMemberRetailDetail.getPointMember32(), cuMemberRetailDetail.getPointMember33(), cuMemberRetailDetail.getPointMember34(),
 | 
			
		||||
                cuMemberRetailDetail.getPointMember35(), cuMemberRetailDetail.getPointMember36(), cuMemberRetailDetail.getPointMember37(), cuMemberRetailDetail.getPointMember38(),
 | 
			
		||||
                cuMemberRetailDetail.getPointMemberFirst(), cuMemberRetailDetail.getPointMemberSecond(), cuMemberRetailDetail.getPointMemberThird()
 | 
			
		||||
        ).filter(Objects::nonNull).forEach(ids::add);
 | 
			
		||||
 | 
			
		||||
        // 查找对应会员信息
 | 
			
		||||
        List<CuMember> members;
 | 
			
		||||
        if (ids.isEmpty()) {
 | 
			
		||||
            members = Collections.emptyList();
 | 
			
		||||
        } else {
 | 
			
		||||
            members = iCuMemberService.listByIds(new ArrayList<>(ids));
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        Map<Long, CuMember> memberMap = members.stream()
 | 
			
		||||
                .collect(Collectors.toMap(CuMember::getPkId, Function.identity(), (a, b) -> a));
 | 
			
		||||
 | 
			
		||||
        // 构建node
 | 
			
		||||
        List<Map<String, Object>> nodeList = new ArrayList<>();
 | 
			
		||||
        nodeList.add(makeNode("root", "0", "root", cuMemberRetailDetail.getPkMember(), memberMap));
 | 
			
		||||
 | 
			
		||||
        nodeList.add(makeNode("1", "root", "1", cuMemberRetailDetail.getPointMember11(), memberMap));
 | 
			
		||||
        nodeList.add(makeNode("2", "root", "2", cuMemberRetailDetail.getPointMember12(), memberMap));
 | 
			
		||||
 | 
			
		||||
        nodeList.add(makeNode("3", "1", "3", cuMemberRetailDetail.getPointMember21(), memberMap));
 | 
			
		||||
        nodeList.add(makeNode("4", "1", "4", cuMemberRetailDetail.getPointMember22(), memberMap));
 | 
			
		||||
        nodeList.add(makeNode("5", "2", "5", cuMemberRetailDetail.getPointMember23(), memberMap));
 | 
			
		||||
        nodeList.add(makeNode("6", "2", "6", cuMemberRetailDetail.getPointMember24(), memberMap));
 | 
			
		||||
 | 
			
		||||
        nodeList.add(makeNode("7", "3", "7", cuMemberRetailDetail.getPointMember31(), memberMap));
 | 
			
		||||
        nodeList.add(makeNode("8", "3", "8", cuMemberRetailDetail.getPointMember32(), memberMap));
 | 
			
		||||
        nodeList.add(makeNode("9", "4", "9", cuMemberRetailDetail.getPointMember33(), memberMap));
 | 
			
		||||
        nodeList.add(makeNode("10", "4", "10", cuMemberRetailDetail.getPointMember34(), memberMap));
 | 
			
		||||
        nodeList.add(makeNode("11", "5", "11", cuMemberRetailDetail.getPointMember35(), memberMap));
 | 
			
		||||
        nodeList.add(makeNode("12", "5", "12", cuMemberRetailDetail.getPointMember36(), memberMap));
 | 
			
		||||
        nodeList.add(makeNode("13", "6", "13", cuMemberRetailDetail.getPointMember37(), memberMap));
 | 
			
		||||
        nodeList.add(makeNode("14", "6", "14", cuMemberRetailDetail.getPointMember38(), memberMap));
 | 
			
		||||
 | 
			
		||||
        // 构造树结构
 | 
			
		||||
        return TreeUtil.build(nodeList, "0", (node, tree) -> {
 | 
			
		||||
            tree.setId((String) node.get("id"));
 | 
			
		||||
            tree.setParentId((String) node.get("parentId"));
 | 
			
		||||
            tree.setName((String) node.get("label"));
 | 
			
		||||
            tree.putExtra("memberCode", node.get("memberCode"));
 | 
			
		||||
            tree.putExtra("memberName", node.get("memberName"));
 | 
			
		||||
            tree.putExtra("nodeCode", node.get("nodeCode"));
 | 
			
		||||
        });
 | 
			
		||||
    }
 | 
			
		||||
    private Map<String, Object> makeNode(String id, String parentId, String label,
 | 
			
		||||
                                         Long memberId, Map<Long, CuMember> memberMap) {
 | 
			
		||||
        Map<String, Object> map = new HashMap<>();
 | 
			
		||||
        map.put("id", id);
 | 
			
		||||
        map.put("parentId", parentId);
 | 
			
		||||
        map.put("label", label);
 | 
			
		||||
        map.put("nodeCode", label);
 | 
			
		||||
 | 
			
		||||
        if (memberId != null && memberMap.containsKey(memberId)) {
 | 
			
		||||
            CuMember member = memberMap.get(memberId);
 | 
			
		||||
            map.put("memberCode", member.getMemberCode());
 | 
			
		||||
            map.put("memberName", member.getMemberName());
 | 
			
		||||
        } else {
 | 
			
		||||
            // 没有信息置空
 | 
			
		||||
            map.put("memberCode", "");
 | 
			
		||||
            map.put("memberName", "");
 | 
			
		||||
        }
 | 
			
		||||
        return map;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			@ -3,19 +3,26 @@ package com.hzs.member.structure.controller.manage;
 | 
			
		|||
import cn.hutool.core.bean.BeanUtil;
 | 
			
		||||
import cn.hutool.core.date.DateTime;
 | 
			
		||||
import cn.hutool.core.date.DateUtil;
 | 
			
		||||
import cn.hutool.core.lang.tree.Tree;
 | 
			
		||||
import com.alibaba.fastjson2.JSONArray;
 | 
			
		||||
import com.alibaba.fastjson2.JSONObject;
 | 
			
		||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 | 
			
		||||
import com.hzs.common.core.annotation.AccessPermissions;
 | 
			
		||||
import com.hzs.common.core.annotation.Log;
 | 
			
		||||
import com.hzs.common.core.constant.*;
 | 
			
		||||
import com.hzs.common.core.constant.msg.CommonMsgConstants;
 | 
			
		||||
import com.hzs.common.core.constant.msg.MemberMsgConstants;
 | 
			
		||||
import com.hzs.common.core.domain.R;
 | 
			
		||||
import com.hzs.common.core.enums.EOperationBusiness;
 | 
			
		||||
import com.hzs.common.core.enums.EOperationMethod;
 | 
			
		||||
import com.hzs.common.core.enums.EOperationModule;
 | 
			
		||||
import com.hzs.common.core.enums.EYesNo;
 | 
			
		||||
import com.hzs.common.core.utils.DateUtils;
 | 
			
		||||
import com.hzs.common.core.utils.StringUtils;
 | 
			
		||||
import com.hzs.common.core.utils.sign.Base64Util;
 | 
			
		||||
import com.hzs.common.core.web.controller.BaseController;
 | 
			
		||||
import com.hzs.common.core.web.domain.AjaxResult;
 | 
			
		||||
import com.hzs.common.domain.member.achieve.CuMemberRetailDetail;
 | 
			
		||||
import com.hzs.common.domain.member.achieve.CuMemberSettlePeriod;
 | 
			
		||||
import com.hzs.common.domain.member.achieve.ext.CuMemberRetailSExt;
 | 
			
		||||
import com.hzs.common.domain.member.base.CuMember;
 | 
			
		||||
| 
						 | 
				
			
			@ -24,11 +31,14 @@ import com.hzs.common.util.TransactionUtils;
 | 
			
		|||
import com.hzs.member.achieve.service.ICuMemberSettlePeriodService;
 | 
			
		||||
import com.hzs.member.achieve.service.ICuMemberTreeService;
 | 
			
		||||
import com.hzs.member.base.service.ICuMemberService;
 | 
			
		||||
import com.hzs.member.base.service.ICumemberRetailDetail;
 | 
			
		||||
import com.hzs.member.structure.controller.vo.ChildCodeVO;
 | 
			
		||||
import com.hzs.member.structure.controller.vo.CuMemberSettlePeriodVo;
 | 
			
		||||
import com.hzs.system.config.IGradeServiceApi;
 | 
			
		||||
import com.hzs.system.config.dto.GradeDTO;
 | 
			
		||||
import com.hzs.system.sys.IUserServiceApi;
 | 
			
		||||
import com.hzs.system.sys.dto.UserAuthorityDTO;
 | 
			
		||||
import lombok.extern.slf4j.Slf4j;
 | 
			
		||||
import org.apache.dubbo.config.annotation.DubboReference;
 | 
			
		||||
import org.springframework.beans.factory.annotation.Autowired;
 | 
			
		||||
import org.springframework.web.bind.annotation.*;
 | 
			
		||||
| 
						 | 
				
			
			@ -38,6 +48,7 @@ import java.util.*;
 | 
			
		|||
/**
 | 
			
		||||
 * 架构管理
 | 
			
		||||
 */
 | 
			
		||||
@Slf4j
 | 
			
		||||
@RestController
 | 
			
		||||
@RequestMapping("/manage/member-structure")
 | 
			
		||||
public class MemberStructureController extends BaseController {
 | 
			
		||||
| 
						 | 
				
			
			@ -49,6 +60,8 @@ public class MemberStructureController extends BaseController {
 | 
			
		|||
    @Autowired
 | 
			
		||||
    private ICuMemberService iCuMemberService;
 | 
			
		||||
 | 
			
		||||
    @Autowired
 | 
			
		||||
    private ICumemberRetailDetail iCumemberRetailDetail;
 | 
			
		||||
    @DubboReference
 | 
			
		||||
    IUserServiceApi iUserServiceApi;
 | 
			
		||||
    @DubboReference
 | 
			
		||||
| 
						 | 
				
			
			@ -193,6 +206,68 @@ public class MemberStructureController extends BaseController {
 | 
			
		|||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * 三阶段架构
 | 
			
		||||
     * @param memberSettlePeriodId
 | 
			
		||||
     * @param memberCode
 | 
			
		||||
     * @param stage
 | 
			
		||||
     * @param childNode
 | 
			
		||||
     * @param stageStatus
 | 
			
		||||
     * @return
 | 
			
		||||
     */
 | 
			
		||||
    @Log(module = EOperationModule.MEMBER_RETAIL_TREE, business = EOperationBusiness.MEMBER_RETAIL_TREE, method = EOperationMethod.SELECT)
 | 
			
		||||
    @GetMapping("/three-framework")
 | 
			
		||||
    public AjaxResult Framework(Long memberSettlePeriodId, String memberCode,Integer stage,String childNode,Integer stageStatus) {
 | 
			
		||||
        if (memberSettlePeriodId == null || memberCode == null ||  stage == null || stageStatus == null || childNode == null) {
 | 
			
		||||
            log.error("参数错误");
 | 
			
		||||
            return AjaxResult.error(CommonMsgConstants.MISSING_PARAM);
 | 
			
		||||
        }
 | 
			
		||||
        CuMemberSettlePeriod csPeriod = iCuMemberSettlePeriodService.getById(memberSettlePeriodId);
 | 
			
		||||
        log.info("日结信息{}",csPeriod);
 | 
			
		||||
        String settleTableName = TableNameConstants.CU_MEMBER_RETAIL_RANGE_DETAIL + csPeriod.getPkId();
 | 
			
		||||
        log.info("日结表名称{}",settleTableName);
 | 
			
		||||
        // 校验当前日结表是否存在
 | 
			
		||||
        Integer isFind = iCumemberRetailDetail.getFindCumemberRetailDetail(settleTableName);
 | 
			
		||||
        if (isFind != 1) {
 | 
			
		||||
            log.error("当前表名不存在{}",settleTableName);
 | 
			
		||||
            return AjaxResult.error("当前日结信息表不存在",settleTableName);
 | 
			
		||||
        }
 | 
			
		||||
        CuMemberRetailDetail cuMemberRetailDetail = iCumemberRetailDetail.getCuMemberRetailDetail(memberCode,stage,stageStatus,childNode,settleTableName);
 | 
			
		||||
        log.info("日结表会员信息{}",cuMemberRetailDetail);
 | 
			
		||||
        // 拼接树形结构
 | 
			
		||||
        List<Tree<String>> cuMemberRetailTree = iCumemberRetailDetail.convertToNodeList(cuMemberRetailDetail);
 | 
			
		||||
        return AjaxResult.success(cuMemberRetailTree);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * 查询子节点
 | 
			
		||||
     * @param memberSettlePeriodId
 | 
			
		||||
     * @param memberCode
 | 
			
		||||
     * @param stage
 | 
			
		||||
     * @param stageStatus
 | 
			
		||||
     * @return
 | 
			
		||||
     */
 | 
			
		||||
    @Log(module = EOperationModule.MEMBER_RETAIL_CHILDNODE, business = EOperationBusiness.MEMBER_RETAIL_CHILDNODE, method = EOperationMethod.SELECT)
 | 
			
		||||
    @GetMapping("/childList")
 | 
			
		||||
    public AjaxResult Framework(Long memberSettlePeriodId, String memberCode,Integer stage,Integer stageStatus) {
 | 
			
		||||
        if (memberSettlePeriodId == null || memberCode == null ||  stage == null || stageStatus == null) {
 | 
			
		||||
            log.error("参数错误");
 | 
			
		||||
            return AjaxResult.error(CommonMsgConstants.MISSING_PARAM);
 | 
			
		||||
        }
 | 
			
		||||
        CuMemberSettlePeriod csPeriod = iCuMemberSettlePeriodService.getById(memberSettlePeriodId);
 | 
			
		||||
        log.info("日结信息{}",csPeriod);
 | 
			
		||||
        String settleTableName = TableNameConstants.CU_MEMBER_RETAIL_RANGE_DETAIL + csPeriod.getPkId();
 | 
			
		||||
        log.info("日结表名称{}",settleTableName);
 | 
			
		||||
        // 校验当前日结表是否存在
 | 
			
		||||
        Integer isFind = iCumemberRetailDetail.getFindCumemberRetailDetail(settleTableName);
 | 
			
		||||
        if (isFind != 1) {
 | 
			
		||||
            log.error("当前表名不存在{}",settleTableName);
 | 
			
		||||
            return AjaxResult.error("当前日结信息表不存在",settleTableName);
 | 
			
		||||
        }
 | 
			
		||||
        List<ChildCodeVO> childCodeList = iCumemberRetailDetail.getChildList(memberCode,stage,stageStatus,settleTableName);
 | 
			
		||||
        return AjaxResult.success(childCodeList);
 | 
			
		||||
    }
 | 
			
		||||
    /**
 | 
			
		||||
     * 查询最近一月所有期数
 | 
			
		||||
     *
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -0,0 +1,13 @@
 | 
			
		|||
package com.hzs.member.structure.controller.vo;
 | 
			
		||||
 | 
			
		||||
import lombok.Data;
 | 
			
		||||
 | 
			
		||||
@Data
 | 
			
		||||
 | 
			
		||||
public class ChildCodeVO {
 | 
			
		||||
    /**
 | 
			
		||||
     * 子会员节点
 | 
			
		||||
     */
 | 
			
		||||
    Integer childNode;
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			@ -0,0 +1,35 @@
 | 
			
		|||
<?xml version="1.0" encoding="UTF-8"?>
 | 
			
		||||
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
 | 
			
		||||
<mapper namespace="com.hzs.member.base.mapper.CuMemberRetailDetailMapper">
 | 
			
		||||
 | 
			
		||||
    <select id="getChildList" resultType="com.hzs.member.structure.controller.vo.ChildCodeVO">
 | 
			
		||||
        SELECT
 | 
			
		||||
            cud.CHILD_NODE
 | 
			
		||||
        FROM
 | 
			
		||||
            CU_MEMBER cu LEFT JOIN
 | 
			
		||||
            ${ settleTableName } cud ON cu.PK_ID = cud.PK_MEMBER
 | 
			
		||||
        WHERE
 | 
			
		||||
          cu.MEMBER_CODE = #{ memberCode }
 | 
			
		||||
          AND cud.STAGE = #{ stage }
 | 
			
		||||
          AND cud.STAGE_STATUS = #{ stageStatus }
 | 
			
		||||
    </select>
 | 
			
		||||
 | 
			
		||||
    <select id="getFindCumemberRetailDetail" resultType="java.lang.Integer">
 | 
			
		||||
        select 1
 | 
			
		||||
        from user_tables
 | 
			
		||||
        where table_name = upper(#{settleTableName})
 | 
			
		||||
    </select>
 | 
			
		||||
    <select id="getCuMemberRetailDetailExt"
 | 
			
		||||
            resultType="com.hzs.common.domain.member.achieve.CuMemberRetailDetail">
 | 
			
		||||
        SELECT
 | 
			
		||||
            cud.*
 | 
			
		||||
        FROM
 | 
			
		||||
            CU_MEMBER cu
 | 
			
		||||
                LEFT JOIN ${ settleTableName } cud ON cu.PK_ID = cud.PK_MEMBER
 | 
			
		||||
        WHERE
 | 
			
		||||
            cu.MEMBER_CODE = #{ memberCode }
 | 
			
		||||
          AND STAGE = #{stage}
 | 
			
		||||
          AND STAGE_STATUS = #{stageStatus}
 | 
			
		||||
          AND CHILD_NODE = #{childNode}
 | 
			
		||||
    </select>
 | 
			
		||||
</mapper>
 | 
			
		||||
| 
						 | 
				
			
			@ -15,6 +15,11 @@ public class BonusMsgConstants {
 | 
			
		|||
     */
 | 
			
		||||
    public static String REPUR_DIRECT_INCOME = "订单编号%s,%s为%s贡献了第%s代见点收益,计算业绩%f,计算比例%f。";
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * 阶段 收益说明
 | 
			
		||||
     */
 | 
			
		||||
    public static String STAGE_INCOME = "订单编号%s,%s为%s贡献了阶段收益,%s子点位%s阶段。";
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * 直推级差收益说明
 | 
			
		||||
     */
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -402,6 +402,8 @@ public enum EOperationBusiness {
 | 
			
		|||
    MONTHLY_JOB_LEVEL("月度职级名单查询"),
 | 
			
		||||
    MEMBER_RISK_CONTROL("K值风控设置"),
 | 
			
		||||
    MEMBER_RETAIL_STAT("收益区域数据"),
 | 
			
		||||
    MEMBER_RETAIL_CHILDNODE("会员子节点查询"),
 | 
			
		||||
    MEMBER_RETAIL_TREE("三阶段结构")
 | 
			
		||||
    ;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -401,6 +401,8 @@ public enum EOperationModule {
 | 
			
		|||
 | 
			
		||||
    MEMBER_RISK_CONTROL("K值风控设置"),
 | 
			
		||||
    ORDER_SYNC("同步失败订单"),
 | 
			
		||||
    MEMBER_RETAIL_CHILDNODE("会员子节点查询"),
 | 
			
		||||
    MEMBER_RETAIL_TREE("三阶段结构")
 | 
			
		||||
    ;
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -10,12 +10,7 @@ import lombok.EqualsAndHashCode;
 | 
			
		|||
import lombok.experimental.Accessors;
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * <p>
 | 
			
		||||
 * 统计活跃会员
 | 
			
		||||
 * </p>
 | 
			
		||||
 *
 | 
			
		||||
 * @author zhangjing
 | 
			
		||||
 * @since 2023-05-17
 | 
			
		||||
 */
 | 
			
		||||
@Data
 | 
			
		||||
@EqualsAndHashCode(callSuper = true)
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1,59 +0,0 @@
 | 
			
		|||
package com.hzs.common.domain.member.achieve;
 | 
			
		||||
 | 
			
		||||
import java.math.BigDecimal;
 | 
			
		||||
import com.baomidou.mybatisplus.annotation.TableName;
 | 
			
		||||
import java.util.Date;
 | 
			
		||||
import com.baomidou.mybatisplus.annotation.TableField;
 | 
			
		||||
import com.hzs.common.core.web.domain.BaseEntity;
 | 
			
		||||
import lombok.Data;
 | 
			
		||||
import lombok.EqualsAndHashCode;
 | 
			
		||||
import lombok.experimental.Accessors;
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * <p>
 | 
			
		||||
 * 极差月新增业绩
 | 
			
		||||
 * </p>
 | 
			
		||||
 *
 | 
			
		||||
 * @author hzs
 | 
			
		||||
 * @since 2024-10-28
 | 
			
		||||
 */
 | 
			
		||||
@Data
 | 
			
		||||
@EqualsAndHashCode(callSuper = true)
 | 
			
		||||
@Accessors(chain = true)
 | 
			
		||||
@TableName("CU_MEMBER_RANGE_MONTH")
 | 
			
		||||
public class CuMemberRangeMonth extends BaseEntity {
 | 
			
		||||
 | 
			
		||||
    private static final long serialVersionUID = 1L;
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * 会员ID
 | 
			
		||||
     */
 | 
			
		||||
    @TableField("PK_MEMBER")
 | 
			
		||||
    private Long pkMember;
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * 期数
 | 
			
		||||
     */
 | 
			
		||||
    @TableField("PERIOD")
 | 
			
		||||
    private Integer period;
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * 结算日期
 | 
			
		||||
     */
 | 
			
		||||
    @TableField("SETTLE_DATE")
 | 
			
		||||
    private Date settleDate;
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * 个人新增PV
 | 
			
		||||
     */
 | 
			
		||||
    @TableField("NEW_PV")
 | 
			
		||||
    private BigDecimal newPv;
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * 团队新增PV
 | 
			
		||||
     */
 | 
			
		||||
    @TableField("NEW_TEAM_PV")
 | 
			
		||||
    private BigDecimal newTeamPv;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			@ -280,5 +280,10 @@ public class CuMemberRetailDetail {
 | 
			
		|||
    @TableField("POINT_MEMBER_THIRD")
 | 
			
		||||
    private Long pointMemberThird;
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * 更新标记(不为null则需要入库)
 | 
			
		||||
     */
 | 
			
		||||
    @TableField(exist = false)
 | 
			
		||||
    private Integer updateBool;
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -50,7 +50,7 @@ public class CuMemberBonus extends BaseEntity {
 | 
			
		|||
    private Integer pkRate;
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * 注册直推收益-康健
 | 
			
		||||
     * 注册直推收益-众康
 | 
			
		||||
     */
 | 
			
		||||
    @TableField("DIRECT_INCOME")
 | 
			
		||||
    private BigDecimal directIncome;
 | 
			
		||||
| 
						 | 
				
			
			@ -176,7 +176,7 @@ public class CuMemberBonus extends BaseEntity {
 | 
			
		|||
    private BigDecimal repurCouponSubtotal;
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * 复购见点收益-康健
 | 
			
		||||
     * 复购见点收益-众康
 | 
			
		||||
     */
 | 
			
		||||
    @TableField("GLOBAL_POINTS")
 | 
			
		||||
    private BigDecimal globalPoints;
 | 
			
		||||
| 
						 | 
				
			
			@ -188,7 +188,7 @@ public class CuMemberBonus extends BaseEntity {
 | 
			
		|||
    private BigDecimal carAwardPoints;
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * 注册阶段收益-康健
 | 
			
		||||
     * 注册阶段收益-众康
 | 
			
		||||
     */
 | 
			
		||||
    @TableField("STORE_INCOME")
 | 
			
		||||
    private BigDecimal storeIncome;
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -7,13 +7,15 @@ import com.baomidou.mybatisplus.annotation.TableName;
 | 
			
		|||
import com.baomidou.mybatisplus.annotation.TableId;
 | 
			
		||||
import com.baomidou.mybatisplus.annotation.TableField;
 | 
			
		||||
import com.hzs.common.core.web.domain.BaseEntity;
 | 
			
		||||
import lombok.Data;
 | 
			
		||||
import lombok.EqualsAndHashCode;
 | 
			
		||||
import lombok.*;
 | 
			
		||||
import lombok.experimental.Accessors;
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * 会员奖金-阶段收益明细表
 | 
			
		||||
 */
 | 
			
		||||
@Builder
 | 
			
		||||
@AllArgsConstructor
 | 
			
		||||
@NoArgsConstructor
 | 
			
		||||
@Data
 | 
			
		||||
@EqualsAndHashCode(callSuper = true)
 | 
			
		||||
@Accessors(chain = true)
 | 
			
		||||
| 
						 | 
				
			
			@ -113,6 +115,12 @@ public class CuMemberBonusStage extends BaseEntity {
 | 
			
		|||
    @TableField("ORDER_DIAL_RATIO")
 | 
			
		||||
    private BigDecimal orderDialRatio;
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * 会员子节点
 | 
			
		||||
     */
 | 
			
		||||
    @TableField("CHILD_NODE")
 | 
			
		||||
    private Integer childNode;
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * 三个阶段(1、2、3)
 | 
			
		||||
     */
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in New Issue