forked from angelo/java-retail-app
				
			Compare commits
	
		
			No commits in common. "0ab028638d21e2505c756b3110e914be92f92e70" and "43fd4cb92bcaae10c6d6167a570b7012275cc068" have entirely different histories.
		
	
	
		
			0ab028638d
			...
			43fd4cb92b
		
	
		| 
						 | 
				
			
			@ -3,6 +3,7 @@ package com.hzs.member.detail;
 | 
			
		|||
import com.hzs.common.core.domain.R;
 | 
			
		||||
import com.hzs.common.domain.member.base.CuMemberRegister;
 | 
			
		||||
import com.hzs.common.domain.member.detail.CuMemberLevel;
 | 
			
		||||
import com.hzs.common.domain.member.detail.ext.CuMemberAwardsExt;
 | 
			
		||||
 | 
			
		||||
import java.util.List;
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -28,6 +29,14 @@ public interface ICuMemberDetailServiceApi {
 | 
			
		|||
     */
 | 
			
		||||
    R<List<CuMemberLevel>> getUpgradeList(Long pkMember);
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * 查询手动开通奖衔的最新一条
 | 
			
		||||
     *
 | 
			
		||||
     * @param pkMember 会员ID
 | 
			
		||||
     * @return
 | 
			
		||||
     */
 | 
			
		||||
    R<CuMemberAwardsExt> queryLastManualAwards(Long pkMember);
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * 查询会员注册信息
 | 
			
		||||
     *
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -5,8 +5,6 @@ import com.hzs.common.domain.member.base.CuMember;
 | 
			
		|||
import com.hzs.common.domain.member.ext.CuMemberExt;
 | 
			
		||||
import org.apache.ibatis.annotations.Param;
 | 
			
		||||
 | 
			
		||||
import java.util.Date;
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * 会员 Mapper 接口
 | 
			
		||||
 */
 | 
			
		||||
| 
						 | 
				
			
			@ -21,9 +19,4 @@ public interface CuMemberMapper extends BaseMapper<CuMember> {
 | 
			
		|||
     */
 | 
			
		||||
    CuMemberExt queryLoginMember(@Param("memberCode") String memberCode, @Param("pkMember") Long pkMember);
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * 更新会员等级
 | 
			
		||||
     */
 | 
			
		||||
    void updateCuMemberLevel(@Param("startDate") Date startDate, @Param("endDate") Date endDate);
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -4,8 +4,6 @@ import com.baomidou.mybatisplus.extension.service.IService;
 | 
			
		|||
import com.hzs.common.domain.member.base.CuMember;
 | 
			
		||||
import com.hzs.common.domain.member.ext.CuMemberExt;
 | 
			
		||||
 | 
			
		||||
import java.util.Date;
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * 会员 服务类
 | 
			
		||||
 */
 | 
			
		||||
| 
						 | 
				
			
			@ -19,9 +17,4 @@ public interface ICuMemberService extends IService<CuMember> {
 | 
			
		|||
     */
 | 
			
		||||
    CuMemberExt getMemberByCode(String memberCode);
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * 更新会员等级
 | 
			
		||||
     */
 | 
			
		||||
    void updateCuMemberLevel(Date startDate, Date endDate);
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -7,8 +7,6 @@ import com.hzs.common.domain.member.ext.CuMemberExt;
 | 
			
		|||
import com.hzs.bonus.base.mapper.CuMemberMapper;
 | 
			
		||||
import org.springframework.stereotype.Service;
 | 
			
		||||
 | 
			
		||||
import java.util.Date;
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * 会员 服务实现类
 | 
			
		||||
 */
 | 
			
		||||
| 
						 | 
				
			
			@ -20,9 +18,4 @@ public class CuMemberServiceImpl extends ServiceImpl<CuMemberMapper, CuMember> i
 | 
			
		|||
        return baseMapper.queryLoginMember(memberCode, null);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @Override
 | 
			
		||||
    public void updateCuMemberLevel(Date startDate, Date endDate) {
 | 
			
		||||
        baseMapper.updateCuMemberLevel(startDate, endDate);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -0,0 +1,43 @@
 | 
			
		|||
package com.hzs.bonus.bonus.mapper;
 | 
			
		||||
 | 
			
		||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 | 
			
		||||
import com.hzs.common.domain.member.bonus.CuMemberBonusCoach;
 | 
			
		||||
import com.hzs.common.domain.member.ext.CuMemberBonusCoachExt;
 | 
			
		||||
import com.hzs.bonus.bonus.param.BonusParam;
 | 
			
		||||
import org.apache.ibatis.annotations.Param;
 | 
			
		||||
 | 
			
		||||
import java.util.List;
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * 会员奖金-辅导收益明细表 Mapper 接口
 | 
			
		||||
 */
 | 
			
		||||
public interface CuMemberBonusCoachMapper extends BaseMapper<CuMemberBonusCoach> {
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * 删除会员奖金汇总表
 | 
			
		||||
     *
 | 
			
		||||
     * @param period 结算期间
 | 
			
		||||
     */
 | 
			
		||||
    void deleteCuMemberBonusCoach(Integer period);
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * 批量插入会员奖金主表
 | 
			
		||||
     *
 | 
			
		||||
     * @param cuMemberBonusCoachList 会员奖金
 | 
			
		||||
     */
 | 
			
		||||
    void batchInsertCuMemberBonusCoach(@Param("cuMemberBonusCoachList") List<?> cuMemberBonusCoachList);
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * 根据查询条件查询固定的奖金明细
 | 
			
		||||
     *
 | 
			
		||||
     * @param bonusParam 查询条件
 | 
			
		||||
     */
 | 
			
		||||
    List<CuMemberBonusCoachExt> queryMemberBonusCoachByBonusItems(BonusParam bonusParam);
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * 根据查询条件查询固定的奖金明细
 | 
			
		||||
     *
 | 
			
		||||
     * @param bonusParam 查询条件
 | 
			
		||||
     */
 | 
			
		||||
    List<CuMemberBonusCoachExt> queryMemberBonusCoachByBonusItemsForServer(@Param("bonusParam") BonusParam bonusParam);
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			@ -0,0 +1,43 @@
 | 
			
		|||
package com.hzs.bonus.bonus.mapper;
 | 
			
		||||
 | 
			
		||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 | 
			
		||||
import com.hzs.common.domain.member.bonus.CuMemberBonusExpand;
 | 
			
		||||
import com.hzs.common.domain.member.ext.CuMemberBonusExpandExt;
 | 
			
		||||
import com.hzs.bonus.bonus.param.BonusParam;
 | 
			
		||||
import org.apache.ibatis.annotations.Param;
 | 
			
		||||
 | 
			
		||||
import java.util.List;
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * 会员奖金-拓展收益明细表 Mapper 接口
 | 
			
		||||
 */
 | 
			
		||||
public interface CuMemberBonusExpandMapper extends BaseMapper<CuMemberBonusExpand> {
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * 删除会员奖金汇总表
 | 
			
		||||
     *
 | 
			
		||||
     * @param period 结算期间
 | 
			
		||||
     */
 | 
			
		||||
    void deleteCuMemberBonusExpand(Integer period);
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * 批量插入会员奖金主表
 | 
			
		||||
     *
 | 
			
		||||
     * @param cuMemberBonusExpandList 会员奖金
 | 
			
		||||
     */
 | 
			
		||||
    void batchInsertCuMemberBonusExpand(@Param("cuMemberBonusExpandList") List<?> cuMemberBonusExpandList);
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * 根据查询条件查询固定的奖金明细
 | 
			
		||||
     *
 | 
			
		||||
     * @param bonusParam 查询条件
 | 
			
		||||
     */
 | 
			
		||||
    List<CuMemberBonusExpandExt> queryMemberBonusExpandByBonusItems(BonusParam bonusParam);
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * 根据查询条件查询固定的奖金明细
 | 
			
		||||
     *
 | 
			
		||||
     * @param bonusParam 查询条件
 | 
			
		||||
     */
 | 
			
		||||
    List<CuMemberBonusExpandExt> queryMemberBonusExpandByBonusItemsForServer(@Param("bonusParam") BonusParam bonusParam);
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			@ -0,0 +1,27 @@
 | 
			
		|||
package com.hzs.bonus.bonus.service;
 | 
			
		||||
 | 
			
		||||
import com.baomidou.mybatisplus.extension.service.IService;
 | 
			
		||||
import com.hzs.common.domain.member.bonus.CuMemberBonusCoach;
 | 
			
		||||
 | 
			
		||||
import java.util.List;
 | 
			
		||||
import java.util.Set;
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * 会员奖金-辅导收益明细表 服务类
 | 
			
		||||
 */
 | 
			
		||||
public interface ICuMemberBonusCoachService extends IService<CuMemberBonusCoach> {
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * 删除会员奖金汇总表
 | 
			
		||||
     *
 | 
			
		||||
     * @param period 结算期间
 | 
			
		||||
     */
 | 
			
		||||
    void deleteCuMemberBonusCoach(Integer period);
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * 批量插入会员奖金主表
 | 
			
		||||
     *
 | 
			
		||||
     * @param cuMemberBonusCoachList 会员奖金
 | 
			
		||||
     */
 | 
			
		||||
    void batchInsertCuMemberBonusCoach(List<CuMemberBonusCoach> cuMemberBonusCoachList, Set<Long> memberIdSet);
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			@ -0,0 +1,28 @@
 | 
			
		|||
package com.hzs.bonus.bonus.service;
 | 
			
		||||
 | 
			
		||||
import com.baomidou.mybatisplus.extension.service.IService;
 | 
			
		||||
import com.hzs.common.domain.member.bonus.CuMemberBonusExpand;
 | 
			
		||||
 | 
			
		||||
import java.util.List;
 | 
			
		||||
import java.util.Set;
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * 会员奖金-拓展收益明细表 服务类
 | 
			
		||||
 */
 | 
			
		||||
public interface ICuMemberBonusExpandService extends IService<CuMemberBonusExpand> {
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * 删除会员奖金汇总表
 | 
			
		||||
     *
 | 
			
		||||
     * @param period 结算期间
 | 
			
		||||
     */
 | 
			
		||||
    void deleteCuMemberBonusExpand(Integer period);
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * 批量插入会员奖金主表
 | 
			
		||||
     *
 | 
			
		||||
     * @param cuMemberBonusExpandList 会员奖金
 | 
			
		||||
     */
 | 
			
		||||
    void batchInsertCuMemberBonusExpand(List<CuMemberBonusExpand> cuMemberBonusExpandList, Set<Long> memberIdSet);
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			@ -53,23 +53,6 @@ public abstract class BonusSettleHandle {
 | 
			
		|||
        cuMemberBonusRange.setRemark(remark);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * 获得 复购级差收益的备注
 | 
			
		||||
     *
 | 
			
		||||
     * @param saOrderExt           订单编号
 | 
			
		||||
     * @param cuMemberBonusRange   报单服务费
 | 
			
		||||
     * @param sourceMemberRangeExt 提供奖金的人
 | 
			
		||||
     * @param targetMemberRangeExt 获得奖金的人
 | 
			
		||||
     */
 | 
			
		||||
    protected void rangeRepurRetailRemark(SaOrderExt saOrderExt, CuMemberBonusRange cuMemberBonusRange, CuMemberRetailRangeExt sourceMemberRangeExt,
 | 
			
		||||
                                          CuMemberRetailRangeExt targetMemberRangeExt) {
 | 
			
		||||
        String remark = String.format(BonusMsgConstants.REPUR_RANGE, saOrderExt.getOrderCode(),
 | 
			
		||||
                sourceMemberRangeExt.getMemberCode() + sourceMemberRangeExt.getMemberName(),
 | 
			
		||||
                targetMemberRangeExt.getMemberCode() + targetMemberRangeExt.getMemberName(),
 | 
			
		||||
                cuMemberBonusRange.getCalAchieve(), sourceMemberRangeExt.getGradeName(), targetMemberRangeExt.getGradeName());
 | 
			
		||||
        cuMemberBonusRange.setRemark(remark);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    protected CuMemberBonus getCuMemberBonus(Integer period, Map<Long, CuMemberBonus> cuMemberBonusMap,
 | 
			
		||||
                                             Long pkMember, Integer incomeStatus, Integer pkCountry, Integer pkRate) {
 | 
			
		||||
        if (cuMemberBonusMap.containsKey(pkMember)) {
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -2,7 +2,6 @@ package com.hzs.bonus.bonus.service.impl;
 | 
			
		|||
 | 
			
		||||
import com.hzs.bonus.achieve.service.ICuMemberRetailRangeService;
 | 
			
		||||
import com.hzs.bonus.bonus.vo.BonusRecordDetailVO;
 | 
			
		||||
import com.hzs.bonus.detail.service.ICuMemberGradeService;
 | 
			
		||||
import com.hzs.bonus.order.service.IBonusOrderService;
 | 
			
		||||
import com.hzs.common.core.constant.MagicNumberConstants;
 | 
			
		||||
import com.hzs.common.core.constant.RetailConstants;
 | 
			
		||||
| 
						 | 
				
			
			@ -13,9 +12,10 @@ import com.hzs.common.core.utils.DateUtils;
 | 
			
		|||
import com.hzs.common.domain.bonus.BdBonusDeduct;
 | 
			
		||||
import com.hzs.common.domain.member.achieve.ext.CuMemberRetailRangeExt;
 | 
			
		||||
import com.hzs.common.domain.member.bonus.*;
 | 
			
		||||
import com.hzs.common.domain.member.detail.CuMemberLevel;
 | 
			
		||||
import com.hzs.common.domain.member.detail.CuMemberAwards;
 | 
			
		||||
import com.hzs.common.domain.member.detail.CuMemberServiceLog;
 | 
			
		||||
import com.hzs.common.domain.sale.ext.SaOrderExt;
 | 
			
		||||
import com.hzs.common.domain.sale.ext.SaOrderWaresExt;
 | 
			
		||||
import com.hzs.common.domain.sale.order.SaOrder;
 | 
			
		||||
import com.hzs.common.domain.system.config.BdGrade;
 | 
			
		||||
import com.hzs.member.detail.ICuMemberServiceLogServiceApi;
 | 
			
		||||
| 
						 | 
				
			
			@ -41,15 +41,13 @@ public class BonusSettleRangeHandle extends BonusSettleHandle {
 | 
			
		|||
    private ICuMemberRetailRangeService iCuMemberRetailRangeService;
 | 
			
		||||
    @Autowired
 | 
			
		||||
    private IBonusOrderService iBonusOrderService;
 | 
			
		||||
    @Autowired
 | 
			
		||||
    private ICuMemberGradeService iCuMemberGradeService;
 | 
			
		||||
 | 
			
		||||
    @DubboReference
 | 
			
		||||
    ICuMemberServiceLogServiceApi iCuMemberServiceLogServiceApi;
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * 日结:
 | 
			
		||||
     * 计算新零售奖金,首购级差、复购级差
 | 
			
		||||
     * 计算新零售团队的奖金,首购级差、复购级差
 | 
			
		||||
     */
 | 
			
		||||
    void calculateRetailBonusByDay(String settleDate, Map<Long, CuMemberBonus> cuMemberBonusMap, BonusConfigDTO bonusConfigDTO, BonusRecordDetailVO bonusRecordDetailVO,
 | 
			
		||||
                                   Integer period, Integer yesterdayPeriod, Boolean isSameMonth) {
 | 
			
		||||
| 
						 | 
				
			
			@ -80,26 +78,19 @@ public class BonusSettleRangeHandle extends BonusSettleHandle {
 | 
			
		|||
        Map<Long, Date> activateMap = this.getActivateMap(settleStartDate);
 | 
			
		||||
 | 
			
		||||
        if (retailOrderList.size() > 0) {
 | 
			
		||||
            // 会员购买升级记录
 | 
			
		||||
            Map<Long, CuMemberLevel> memberLevelMap = new HashMap<>();
 | 
			
		||||
            List<CuMemberLevel> memberLevelList = iCuMemberGradeService.calculateCuMemberRetailGradeInit(period, settleStartDate, settleEndDate, rangeTableName);
 | 
			
		||||
            memberLevelList.forEach(cuMemberLevel -> memberLevelMap.put(cuMemberLevel.getPkOrder(), cuMemberLevel));
 | 
			
		||||
 | 
			
		||||
            // 会员的自动升级记录
 | 
			
		||||
            Map<Long, CuMemberLevel> autoLevelMap = new HashMap<>();
 | 
			
		||||
            List<CuMemberLevel> autoLevelList = iCuMemberGradeService.listAutoLevel(settleStartDate, settleEndDate);
 | 
			
		||||
            autoLevelList.forEach(tmpLevel -> autoLevelMap.put(tmpLevel.getPkOrder(), tmpLevel));
 | 
			
		||||
 | 
			
		||||
            // 按照血缘,查询该会员所有伞上会员
 | 
			
		||||
            List<CuMemberRetailRangeExt> memberRetailRangeExtList = iCuMemberRetailRangeService.queryCuMemberRetailRangeParent(rangeTableName, retailOrderList);
 | 
			
		||||
 | 
			
		||||
            // 会员结算map(key:会员ID,value:结算扩展)
 | 
			
		||||
            Map<Long, CuMemberRetailRangeExt> memberRangeExtMap = new HashMap<>();
 | 
			
		||||
            // 等级map(key:等级值,value:等级对象)
 | 
			
		||||
            Map<Integer, BdGrade> gradeMap = new HashMap<>();
 | 
			
		||||
            // 等级map(key:等级ID,value:等级对象)
 | 
			
		||||
            Map<Integer, BdGrade> gradeIdMap = new HashMap<>();
 | 
			
		||||
            // 等级列表
 | 
			
		||||
            List<BdGrade> retaiGradeList = bonusConfigDTO.getRetaiGradeList();
 | 
			
		||||
            for (BdGrade bdGrade : retaiGradeList) {
 | 
			
		||||
                gradeMap.put(bdGrade.getGradeValue(), bdGrade);
 | 
			
		||||
                gradeIdMap.put(bdGrade.getPkId(), bdGrade);
 | 
			
		||||
            }
 | 
			
		||||
            // 结算会员map处理
 | 
			
		||||
| 
						 | 
				
			
			@ -109,14 +100,14 @@ public class BonusSettleRangeHandle extends BonusSettleHandle {
 | 
			
		|||
                }
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            // 级差收益
 | 
			
		||||
            // 平级收益
 | 
			
		||||
            List<CuMemberBonusRange> cuMemberBonusRangeList = new ArrayList<>();
 | 
			
		||||
 | 
			
		||||
            // 上面更新网体,按会员表是否激活进行处理
 | 
			
		||||
            for (SaOrderExt saOrderExt : retailOrderList) {
 | 
			
		||||
                CuMemberRetailRangeExt sourceMemberRangeExt = memberRangeExtMap.get(saOrderExt.getPkMember());
 | 
			
		||||
                if (EOrderType.RETAIL_REGISTER.getValue() == saOrderExt.getOrderType()
 | 
			
		||||
                        || EOrderType.RETAIL_UPGRADE.getValue() == saOrderExt.getOrderType()) {
 | 
			
		||||
                if (EOrderType.RETAIL_REGISTER.getValue() == saOrderExt.getOrderType() ||
 | 
			
		||||
                        EOrderType.RETAIL_UPGRADE.getValue() == saOrderExt.getOrderType()) {
 | 
			
		||||
                    // 注册、升级才能算激活状态
 | 
			
		||||
                    sourceMemberRangeExt.setEnableStatus(EYesNo.YES.getIntValue());
 | 
			
		||||
                }
 | 
			
		||||
| 
						 | 
				
			
			@ -127,8 +118,12 @@ public class BonusSettleRangeHandle extends BonusSettleHandle {
 | 
			
		|||
                CuMemberRetailRangeExt sourceMemberRangeExt = memberRangeExtMap.get(saOrderExt.getPkMember());
 | 
			
		||||
 | 
			
		||||
                // 订单指定产品盒数(计算等级使用)
 | 
			
		||||
                int boxNum = saOrderExt.getBoxNum();
 | 
			
		||||
 | 
			
		||||
                int boxNum = 0;
 | 
			
		||||
                for (SaOrderWaresExt saOrderItems : saOrderExt.getOrderWaresExtList()) {
 | 
			
		||||
                    if (RetailConstants.ALL_BOX_WARES_LIST.contains(saOrderItems.getWaresCode())) {
 | 
			
		||||
                        boxNum += saOrderItems.getWaresQuantity();
 | 
			
		||||
                    }
 | 
			
		||||
                }
 | 
			
		||||
                // 个人累计消费pv
 | 
			
		||||
                BigDecimal orderAchieve = saOrderExt.getOrderAchieve();
 | 
			
		||||
                // 复购、重消,盒数、业绩算个人累计数据(盒数、业绩)
 | 
			
		||||
| 
						 | 
				
			
			@ -152,35 +147,13 @@ public class BonusSettleRangeHandle extends BonusSettleHandle {
 | 
			
		|||
                        && boxNum > 0
 | 
			
		||||
                ) {
 | 
			
		||||
                    // 注册或升级订单并且存在盒数产品,才有 直推级差
 | 
			
		||||
                    cuMemberBonusRangeList.addAll(calculateRetailRangeBonus(memberRangeExtMap, cuMemberBonusMap, bonusConfigDTO, period, saOrderExt, gradeIdMap));
 | 
			
		||||
                    for (SaOrderWaresExt saOrderItems : saOrderExt.getOrderWaresExtList()) {
 | 
			
		||||
                        // 直推级差
 | 
			
		||||
                        cuMemberBonusRangeList.addAll(calculateRetailRangeBonus(memberRangeExtMap, cuMemberBonusMap, gradeMap, bonusConfigDTO, period, saOrderItems, saOrderExt));
 | 
			
		||||
                    }
 | 
			
		||||
                } else if (EOrderType.RETAIL_REPURCHASE.getValue() == saOrderExt.getOrderType()) {
 | 
			
		||||
                    // TODO new 复购订单,计算复购级差
 | 
			
		||||
 | 
			
		||||
                    // 订单存在升级记录
 | 
			
		||||
                    if (memberLevelMap.containsKey(saOrderExt.getPkId())) {
 | 
			
		||||
                        CuMemberLevel cuMemberLevel = memberLevelMap.get(saOrderExt.getPkId());
 | 
			
		||||
                        if (gradeIdMap.containsKey(cuMemberLevel.getNewLevel())) {
 | 
			
		||||
                            BdGrade bdGrade = gradeIdMap.get(cuMemberLevel.getNewLevel());
 | 
			
		||||
                            if (bdGrade.getGradeValue() > sourceMemberRangeExt.getGradeValue()) {
 | 
			
		||||
                                sourceMemberRangeExt.setPkGrade(bdGrade.getPkId());
 | 
			
		||||
                                sourceMemberRangeExt.setGradeValue(bdGrade.getGradeValue());
 | 
			
		||||
                                sourceMemberRangeExt.setGradeName(bdGrade.getGradeName());
 | 
			
		||||
                            }
 | 
			
		||||
                        }
 | 
			
		||||
                    }
 | 
			
		||||
                    // 订单存在自动升级记录(高级店主处理)
 | 
			
		||||
                    if (autoLevelMap.containsKey(saOrderExt.getPkId())) {
 | 
			
		||||
                        CuMemberLevel cuMemberLevel = autoLevelMap.get(saOrderExt.getPkId());
 | 
			
		||||
                        if (gradeIdMap.containsKey(cuMemberLevel.getNewLevel())) {
 | 
			
		||||
                            BdGrade bdGrade = gradeIdMap.get(cuMemberLevel.getNewLevel());
 | 
			
		||||
                            CuMemberRetailRangeExt tmpMemberRetailRange = memberRangeExtMap.get(cuMemberLevel.getPkMember());
 | 
			
		||||
                            tmpMemberRetailRange.setPkGrade(bdGrade.getPkId());
 | 
			
		||||
                            tmpMemberRetailRange.setGradeValue(bdGrade.getGradeValue());
 | 
			
		||||
                            tmpMemberRetailRange.setGradeName(bdGrade.getGradeName());
 | 
			
		||||
                        }
 | 
			
		||||
                    }
 | 
			
		||||
                } else if (EOrderType.RETAIL_REPURCHASE.getValue() == saOrderExt.getOrderType()
 | 
			
		||||
                        && boxNum > 0) {
 | 
			
		||||
                    // 复购订单,计算复购级差
 | 
			
		||||
                    cuMemberBonusRangeList.addAll(calculateRetailRepurRangeBonus(memberRangeExtMap, cuMemberBonusMap, bonusConfigDTO, period, saOrderExt));
 | 
			
		||||
                }
 | 
			
		||||
            }
 | 
			
		||||
            if (cuMemberBonusRangeList.size() > 0) {
 | 
			
		||||
| 
						 | 
				
			
			@ -198,8 +171,10 @@ public class BonusSettleRangeHandle extends BonusSettleHandle {
 | 
			
		|||
    /**
 | 
			
		||||
     * 累计团队盒数、业绩等
 | 
			
		||||
     */
 | 
			
		||||
    public void calculateRetailRangeGradeAwards(Map<Long, CuMemberRetailRangeExt> memberRangeExtMap, SaOrderExt saOrderExt,
 | 
			
		||||
                                                Integer boxNum, Map<Long, Date> activateMap) {
 | 
			
		||||
    public List<CuMemberAwards> calculateRetailRangeGradeAwards(Map<Long, CuMemberRetailRangeExt> memberRangeExtMap, SaOrderExt saOrderExt,
 | 
			
		||||
                                                                Integer boxNum, Map<Long, Date> activateMap) {
 | 
			
		||||
        // 会员奖衔升级列表
 | 
			
		||||
        List<CuMemberAwards> cuMemberAwardsList = new ArrayList<>();
 | 
			
		||||
        // 订单会员
 | 
			
		||||
        CuMemberRetailRangeExt sourceMemberRangeExt = memberRangeExtMap.get(saOrderExt.getPkMember());
 | 
			
		||||
        // 订单会员的推荐人
 | 
			
		||||
| 
						 | 
				
			
			@ -232,13 +207,15 @@ public class BonusSettleRangeHandle extends BonusSettleHandle {
 | 
			
		|||
            }
 | 
			
		||||
            targetMemberRangeExt = memberRangeExtMap.get(targetMemberRangeExt.getPkParent());
 | 
			
		||||
        }
 | 
			
		||||
        return cuMemberAwardsList;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * 计算直推级差收益
 | 
			
		||||
     */
 | 
			
		||||
    List<CuMemberBonusRange> calculateRetailRangeBonus(Map<Long, CuMemberRetailRangeExt> memberRangeExtMap, Map<Long, CuMemberBonus> cuMemberBonusMap,
 | 
			
		||||
                                                       BonusConfigDTO bonusConfigDTO, Integer period, SaOrderExt saOrderExt, Map<Integer, BdGrade> gradeIdMap) {
 | 
			
		||||
                                                       Map<Integer, BdGrade> gradeMap, BonusConfigDTO bonusConfigDTO, Integer period,
 | 
			
		||||
                                                       SaOrderWaresExt saOrderItems, SaOrderExt saOrderExt) {
 | 
			
		||||
        // 直推级差返回数据
 | 
			
		||||
        List<CuMemberBonusRange> memberBonusRangeList = new ArrayList<>();
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -246,28 +223,27 @@ public class BonusSettleRangeHandle extends BonusSettleHandle {
 | 
			
		|||
        CuMemberRetailRangeExt sourceMemberRangeExt = memberRangeExtMap.get(saOrderExt.getPkMember());
 | 
			
		||||
        // 推荐人
 | 
			
		||||
        long pkParent = sourceMemberRangeExt.getPkParent();
 | 
			
		||||
        // 订单等级值
 | 
			
		||||
        Integer orderGradeValue = gradeIdMap.get(saOrderExt.getPkGrade()).getGradeValue();
 | 
			
		||||
 | 
			
		||||
        // 商品最终价格
 | 
			
		||||
        BigDecimal waresPrice = saOrderItems.getWaresPrice();
 | 
			
		||||
        // 商品数量
 | 
			
		||||
        BigDecimal waresQuantityBig = new BigDecimal(saOrderItems.getWaresQuantity());
 | 
			
		||||
 | 
			
		||||
        // 会员顺序
 | 
			
		||||
        int memberLevel = 0;
 | 
			
		||||
        // 前一个会员等级
 | 
			
		||||
        int beforeGradeValue = 0;
 | 
			
		||||
        // 前面累计奖金
 | 
			
		||||
        BigDecimal totalBonus = BigDecimal.ZERO;
 | 
			
		||||
        // 平级合伙人数量
 | 
			
		||||
        int v3Count = 1;
 | 
			
		||||
        // 计算直推级差
 | 
			
		||||
        while (true) {
 | 
			
		||||
            // 上一次处理的是公司等级,则结束退出
 | 
			
		||||
            if (beforeGradeValue == EGrade.COMPANY.getValue()) {
 | 
			
		||||
                break;
 | 
			
		||||
            }
 | 
			
		||||
            // 推荐人
 | 
			
		||||
            CuMemberRetailRangeExt targetMemberRangeExt = memberRangeExtMap.get(pkParent);
 | 
			
		||||
            if (null == targetMemberRangeExt) {
 | 
			
		||||
            if (targetMemberRangeExt == null) {
 | 
			
		||||
                break;
 | 
			
		||||
            }
 | 
			
		||||
            // 推荐人的推荐人
 | 
			
		||||
            pkParent = targetMemberRangeExt.getPkParent();
 | 
			
		||||
            // 会员顺序
 | 
			
		||||
            memberLevel += 1;
 | 
			
		||||
 | 
			
		||||
            if (EAccountStatus.STOP_INCOME.getValue() == targetMemberRangeExt.getAccountStatus()
 | 
			
		||||
                    || ECategory.NORMAL.getValue() != targetMemberRangeExt.getCategory()
 | 
			
		||||
| 
						 | 
				
			
			@ -278,252 +254,33 @@ public class BonusSettleRangeHandle extends BonusSettleHandle {
 | 
			
		|||
                continue;
 | 
			
		||||
            }
 | 
			
		||||
            // 当前会员等级值
 | 
			
		||||
            int targetGradeValue = targetMemberRangeExt.getGradeValue();
 | 
			
		||||
            int calGradeValue = targetMemberRangeExt.getGradeValue();
 | 
			
		||||
 | 
			
		||||
            // 直推级差收益
 | 
			
		||||
            BigDecimal rangeBonusIncome = BigDecimal.ZERO;
 | 
			
		||||
 | 
			
		||||
            if (EGrade.HAI_FAN.getValue() == orderGradeValue) {
 | 
			
		||||
                // 订单等级是会员、VIP
 | 
			
		||||
                if (targetGradeValue > beforeGradeValue) {
 | 
			
		||||
                    // 当前会员等级大于上一个会员等级
 | 
			
		||||
                    if (EGrade.HAI_FAN.getValue() == targetGradeValue) {
 | 
			
		||||
                        // V1 推拿 60
 | 
			
		||||
                        rangeBonusIncome = RetailConstants.V1_V1;
 | 
			
		||||
                        // 前面累计的奖金
 | 
			
		||||
                        totalBonus = totalBonus.add(RetailConstants.V1_V1);
 | 
			
		||||
                    } else if (EGrade.YOU_KE.getValue() == targetGradeValue) {
 | 
			
		||||
                        // V2 推拿 80,或者减去之前累计
 | 
			
		||||
                        rangeBonusIncome = RetailConstants.V2_V1.subtract(totalBonus);
 | 
			
		||||
                        // 前面累计的奖金
 | 
			
		||||
                        totalBonus = totalBonus.add(RetailConstants.V2_V1.subtract(totalBonus));
 | 
			
		||||
                    } else if (EGrade.MAKER.getValue() == targetGradeValue) {
 | 
			
		||||
                        // V3 推拿 100,或者减去之前累计
 | 
			
		||||
                        rangeBonusIncome = RetailConstants.V3_V1.subtract(totalBonus);
 | 
			
		||||
                        // 前面累计的奖金
 | 
			
		||||
                        totalBonus = totalBonus.add(RetailConstants.V3_V1.subtract(totalBonus));
 | 
			
		||||
                    } else if (EGrade.VIP.getValue() == targetGradeValue) {
 | 
			
		||||
                        // V4 推拿 200,或者减去之前累计
 | 
			
		||||
                        rangeBonusIncome = RetailConstants.V4_V1.subtract(totalBonus);
 | 
			
		||||
                        // 前面累计的奖金
 | 
			
		||||
                        totalBonus = totalBonus.add(RetailConstants.V4_V1.subtract(totalBonus));
 | 
			
		||||
                    } else if (EGrade.S_VIP.getValue() == targetGradeValue) {
 | 
			
		||||
                        // V5 推拿 208,或者减去之前累计
 | 
			
		||||
                        rangeBonusIncome = RetailConstants.V5_V1.subtract(totalBonus);
 | 
			
		||||
                        // 前面累计的奖金
 | 
			
		||||
                        totalBonus = totalBonus.add(RetailConstants.V5_V1.subtract(totalBonus));
 | 
			
		||||
                    } else if (EGrade.BRANCH_COMPANY.getValue() == targetGradeValue) {
 | 
			
		||||
                        // V6 推拿 220 ,或者减去之前累计
 | 
			
		||||
                        rangeBonusIncome = RetailConstants.V6_V1.subtract(totalBonus);
 | 
			
		||||
                        // 前面累计的奖金
 | 
			
		||||
                        totalBonus = totalBonus.add(RetailConstants.V6_V1.subtract(totalBonus));
 | 
			
		||||
                    } else if (EGrade.COMPANY.getValue() == targetGradeValue) {
 | 
			
		||||
                        // V7 推拿 240,或者减去之前累计
 | 
			
		||||
                        rangeBonusIncome = RetailConstants.V7_V1.subtract(totalBonus);
 | 
			
		||||
                        // 前面累计的奖金
 | 
			
		||||
                        totalBonus = totalBonus.add(RetailConstants.V7_V1.subtract(totalBonus));
 | 
			
		||||
                    }
 | 
			
		||||
                }
 | 
			
		||||
            } else if (EGrade.YOU_KE.getValue() == orderGradeValue) {
 | 
			
		||||
                // 订单等级是VIP
 | 
			
		||||
                if (targetGradeValue > beforeGradeValue) {
 | 
			
		||||
                    // 当前会员等级大于上一个会员等级
 | 
			
		||||
                    if (EGrade.HAI_FAN.getValue() == targetGradeValue) {
 | 
			
		||||
                        // V1 推拿 300
 | 
			
		||||
                        rangeBonusIncome = RetailConstants.V1_V2;
 | 
			
		||||
                        // 前面累计的奖金
 | 
			
		||||
                        totalBonus = totalBonus.add(RetailConstants.V1_V2);
 | 
			
		||||
                    } else if (EGrade.YOU_KE.getValue() == targetGradeValue) {
 | 
			
		||||
                        // V2 推拿 400,或者减去之前累计
 | 
			
		||||
                        rangeBonusIncome = RetailConstants.V2_V2.subtract(totalBonus);
 | 
			
		||||
                        // 前面累计的奖金
 | 
			
		||||
                        totalBonus = totalBonus.add(RetailConstants.V2_V2.subtract(totalBonus));
 | 
			
		||||
                    } else if (EGrade.MAKER.getValue() == targetGradeValue) {
 | 
			
		||||
                        // V3 推拿 500,或者减去之前累计
 | 
			
		||||
                        rangeBonusIncome = RetailConstants.V3_V2.subtract(totalBonus);
 | 
			
		||||
                        // 前面累计的奖金
 | 
			
		||||
                        totalBonus = totalBonus.add(RetailConstants.V3_V2.subtract(totalBonus));
 | 
			
		||||
                    } else if (EGrade.VIP.getValue() == targetGradeValue) {
 | 
			
		||||
                        // V4 推拿 1000,或者减去之前累计
 | 
			
		||||
                        rangeBonusIncome = RetailConstants.V4_V2.subtract(totalBonus);
 | 
			
		||||
                        // 前面累计的奖金
 | 
			
		||||
                        totalBonus = totalBonus.add(RetailConstants.V4_V2.subtract(totalBonus));
 | 
			
		||||
                    } else if (EGrade.S_VIP.getValue() == targetGradeValue) {
 | 
			
		||||
                        // V5 推拿 1040,或者减去之前累计
 | 
			
		||||
                        rangeBonusIncome = RetailConstants.V5_V2.subtract(totalBonus);
 | 
			
		||||
                        // 前面累计的奖金
 | 
			
		||||
                        totalBonus = totalBonus.add(RetailConstants.V5_V2.subtract(totalBonus));
 | 
			
		||||
                    } else if (EGrade.BRANCH_COMPANY.getValue() == targetGradeValue) {
 | 
			
		||||
                        // V6 推拿 1100,或者减去之前累计
 | 
			
		||||
                        rangeBonusIncome = RetailConstants.V6_V2.subtract(totalBonus);
 | 
			
		||||
                        // 前面累计的奖金
 | 
			
		||||
                        totalBonus = totalBonus.add(RetailConstants.V6_V2.subtract(totalBonus));
 | 
			
		||||
                    } else if (EGrade.COMPANY.getValue() == targetGradeValue) {
 | 
			
		||||
                        // V7 推拿 1200,或者减去之前累计
 | 
			
		||||
                        rangeBonusIncome = RetailConstants.V7_V2.subtract(totalBonus);
 | 
			
		||||
                        // 前面累计的奖金
 | 
			
		||||
                        totalBonus = totalBonus.add(RetailConstants.V7_V2.subtract(totalBonus));
 | 
			
		||||
                    }
 | 
			
		||||
                }
 | 
			
		||||
            } else if (EGrade.MAKER.getValue() == orderGradeValue) {
 | 
			
		||||
                // 订单是合伙人
 | 
			
		||||
                if (targetGradeValue > beforeGradeValue) {
 | 
			
		||||
                    // 当前等级大于之前等级
 | 
			
		||||
                    if (EGrade.HAI_FAN.getValue() == targetGradeValue) {
 | 
			
		||||
                        // V1 推拿 600
 | 
			
		||||
                        rangeBonusIncome = RetailConstants.V1_V3;
 | 
			
		||||
                        // 前面累计的奖金
 | 
			
		||||
                        totalBonus = totalBonus.add(RetailConstants.V1_V3);
 | 
			
		||||
                    } else if (EGrade.YOU_KE.getValue() == targetGradeValue) {
 | 
			
		||||
                        // V2 推拿 800,或者减去之前累计
 | 
			
		||||
                        rangeBonusIncome = RetailConstants.V2_V3.subtract(totalBonus);
 | 
			
		||||
                        // 前面累计的奖金
 | 
			
		||||
                        totalBonus = totalBonus.add(RetailConstants.V2_V3.subtract(totalBonus));
 | 
			
		||||
                    } else if (EGrade.MAKER.getValue() == targetGradeValue) {
 | 
			
		||||
                        // V3 推拿 1000,或者减去之前累计
 | 
			
		||||
                        rangeBonusIncome = RetailConstants.V3_V3_1.subtract(totalBonus);
 | 
			
		||||
                        // 前面累计的奖金
 | 
			
		||||
                        totalBonus = totalBonus.add(RetailConstants.V3_V3_1.subtract(totalBonus));
 | 
			
		||||
                    } else if (EGrade.VIP.getValue() == targetGradeValue) {
 | 
			
		||||
                        // V4 推拿 2000,或者减去之前累计
 | 
			
		||||
                        rangeBonusIncome = RetailConstants.V4_V3.subtract(totalBonus);
 | 
			
		||||
                        // 前面累计的奖金
 | 
			
		||||
                        totalBonus = totalBonus.add(RetailConstants.V4_V3.subtract(totalBonus));
 | 
			
		||||
                    } else if (EGrade.S_VIP.getValue() == targetGradeValue) {
 | 
			
		||||
                        // V5 推拿 2080,或者减去之前累计
 | 
			
		||||
                        rangeBonusIncome = RetailConstants.V5_V3.subtract(totalBonus);
 | 
			
		||||
                        // 前面累计的奖金
 | 
			
		||||
                        totalBonus = totalBonus.add(RetailConstants.V5_V3.subtract(totalBonus));
 | 
			
		||||
                    } else if (EGrade.BRANCH_COMPANY.getValue() == targetGradeValue) {
 | 
			
		||||
                        // V6 推拿 2200,或者减去之前累计
 | 
			
		||||
                        rangeBonusIncome = RetailConstants.V6_V3.subtract(totalBonus);
 | 
			
		||||
                        // 前面累计的奖金
 | 
			
		||||
                        totalBonus = totalBonus.add(RetailConstants.V6_V3.subtract(totalBonus));
 | 
			
		||||
                    } else if (EGrade.COMPANY.getValue() == targetGradeValue) {
 | 
			
		||||
                        // V7 推拿 2400,或者减去之前累计
 | 
			
		||||
                        rangeBonusIncome = RetailConstants.V7_V3.subtract(totalBonus);
 | 
			
		||||
                        // 前面累计的奖金
 | 
			
		||||
                        totalBonus = totalBonus.add(RetailConstants.V7_V3.subtract(totalBonus));
 | 
			
		||||
                    }
 | 
			
		||||
                } else if (EGrade.MAKER.getValue() == beforeGradeValue
 | 
			
		||||
                        && EGrade.MAKER.getValue() == targetGradeValue) {
 | 
			
		||||
                    // 之前和现在都是合伙人,处理平级
 | 
			
		||||
                    if (v3Count == 1) {
 | 
			
		||||
                        // V3第一平级 推拿 1200,或者减去之前累计
 | 
			
		||||
                        rangeBonusIncome = RetailConstants.V3_V3_2.subtract(totalBonus);
 | 
			
		||||
                        // 前面累计的奖金
 | 
			
		||||
                        totalBonus = totalBonus.add(RetailConstants.V3_V3_2.subtract(totalBonus));
 | 
			
		||||
                        v3Count++;
 | 
			
		||||
                    } else if (v3Count == 2) {
 | 
			
		||||
                        // V3第二平级 推拿 1300,或者减去之前累计
 | 
			
		||||
                        rangeBonusIncome = RetailConstants.V3_V3_3.subtract(totalBonus);
 | 
			
		||||
                        // 前面累计的奖金
 | 
			
		||||
                        totalBonus = totalBonus.add(RetailConstants.V3_V3_3.subtract(totalBonus));
 | 
			
		||||
                        v3Count++;
 | 
			
		||||
                    }
 | 
			
		||||
                }
 | 
			
		||||
            } else if (EGrade.VIP.getValue() == orderGradeValue) {
 | 
			
		||||
                // 订单是合伙人
 | 
			
		||||
                if (targetGradeValue > beforeGradeValue) {
 | 
			
		||||
                    // 当前等级大于之前等级
 | 
			
		||||
                    if (EGrade.HAI_FAN.getValue() == targetGradeValue) {
 | 
			
		||||
                        // V1 推拿 1200
 | 
			
		||||
                        rangeBonusIncome = RetailConstants.V1_V4;
 | 
			
		||||
                        // 前面累计的奖金
 | 
			
		||||
                        totalBonus = totalBonus.add(RetailConstants.V1_V4);
 | 
			
		||||
                    } else if (EGrade.YOU_KE.getValue() == targetGradeValue) {
 | 
			
		||||
                        // V2 推拿 1600,或者减去之前累计
 | 
			
		||||
                        rangeBonusIncome = RetailConstants.V2_V4.subtract(totalBonus);
 | 
			
		||||
                        // 前面累计的奖金
 | 
			
		||||
                        totalBonus = totalBonus.add(RetailConstants.V2_V4.subtract(totalBonus));
 | 
			
		||||
                    } else if (EGrade.MAKER.getValue() == targetGradeValue) {
 | 
			
		||||
                        // V3 推拿 2000,或者减去之前累计
 | 
			
		||||
                        rangeBonusIncome = RetailConstants.V3_V4_1.subtract(totalBonus);
 | 
			
		||||
                        // 前面累计的奖金
 | 
			
		||||
                        totalBonus = totalBonus.add(RetailConstants.V3_V4_1.subtract(totalBonus));
 | 
			
		||||
                    } else if (EGrade.VIP.getValue() == targetGradeValue) {
 | 
			
		||||
                        // V4 推拿 4000,或者减去之前累计
 | 
			
		||||
                        rangeBonusIncome = RetailConstants.V4_V4.subtract(totalBonus);
 | 
			
		||||
                        // 前面累计的奖金
 | 
			
		||||
                        totalBonus = totalBonus.add(RetailConstants.V4_V4.subtract(totalBonus));
 | 
			
		||||
                    } else if (EGrade.S_VIP.getValue() == targetGradeValue) {
 | 
			
		||||
                        // V5 推拿 4160,或者减去之前累计
 | 
			
		||||
                        rangeBonusIncome = RetailConstants.V5_V4.subtract(totalBonus);
 | 
			
		||||
                        // 前面累计的奖金
 | 
			
		||||
                        totalBonus = totalBonus.add(RetailConstants.V5_V4.subtract(totalBonus));
 | 
			
		||||
                    } else if (EGrade.BRANCH_COMPANY.getValue() == targetGradeValue) {
 | 
			
		||||
                        // V6 推拿 4400,或者减去之前累计
 | 
			
		||||
                        rangeBonusIncome = RetailConstants.V6_V4.subtract(totalBonus);
 | 
			
		||||
                        // 前面累计的奖金
 | 
			
		||||
                        totalBonus = totalBonus.add(RetailConstants.V6_V4.subtract(totalBonus));
 | 
			
		||||
                    } else if (EGrade.COMPANY.getValue() == targetGradeValue) {
 | 
			
		||||
                        // V7 推拿 4800,或者减去之前累计
 | 
			
		||||
                        rangeBonusIncome = RetailConstants.V7_V4.subtract(totalBonus);
 | 
			
		||||
                        // 前面累计的奖金
 | 
			
		||||
                        totalBonus = totalBonus.add(RetailConstants.V7_V4.subtract(totalBonus));
 | 
			
		||||
                    }
 | 
			
		||||
                } else if (EGrade.MAKER.getValue() == beforeGradeValue
 | 
			
		||||
                        && EGrade.MAKER.getValue() == targetGradeValue) {
 | 
			
		||||
                    // 之前和现在都是合伙人,处理平级
 | 
			
		||||
                    if (v3Count == 1) {
 | 
			
		||||
                        // V3第一平级 推拿 2400,或者减去之前累计
 | 
			
		||||
                        rangeBonusIncome = RetailConstants.V3_V4_2.subtract(totalBonus);
 | 
			
		||||
                        // 前面累计的奖金
 | 
			
		||||
                        totalBonus = totalBonus.add(RetailConstants.V3_V4_2.subtract(totalBonus));
 | 
			
		||||
                        v3Count++;
 | 
			
		||||
                    } else if (v3Count == 2) {
 | 
			
		||||
                        // V3第二平级 推拿 2600,或者减去之前累计
 | 
			
		||||
                        rangeBonusIncome = RetailConstants.V3_V4_3.subtract(totalBonus);
 | 
			
		||||
                        // 前面累计的奖金
 | 
			
		||||
                        totalBonus = totalBonus.add(RetailConstants.V3_V4_3.subtract(totalBonus));
 | 
			
		||||
                        v3Count++;
 | 
			
		||||
                    }
 | 
			
		||||
                }
 | 
			
		||||
            } else if (EGrade.BRANCH_COMPANY.getValue() == orderGradeValue) {
 | 
			
		||||
                // 订单是分公司
 | 
			
		||||
                if (targetGradeValue >= EGrade.VIP.getValue() && targetGradeValue > beforeGradeValue) {
 | 
			
		||||
                    // 博羚店主以上才有级差 并且 当前等级大于之前等级
 | 
			
		||||
                    if (EGrade.VIP.getValue() == targetGradeValue) {
 | 
			
		||||
                        // 博羚店主拿 50000
 | 
			
		||||
                        rangeBonusIncome = RetailConstants.V4_V6.subtract(totalBonus);
 | 
			
		||||
                        // 前面累计的奖金
 | 
			
		||||
                        totalBonus = totalBonus.add(RetailConstants.V4_V6.subtract(totalBonus));
 | 
			
		||||
                    } else if (EGrade.S_VIP.getValue() == targetGradeValue) {
 | 
			
		||||
                        // 高级店主拿 52000,或者减去之前累计
 | 
			
		||||
                        rangeBonusIncome = RetailConstants.V5_V6.subtract(totalBonus);
 | 
			
		||||
                        // 前面累计的奖金
 | 
			
		||||
                        totalBonus = totalBonus.add(RetailConstants.V5_V6.subtract(totalBonus));
 | 
			
		||||
                    } else if (EGrade.BRANCH_COMPANY.getValue() == targetGradeValue) {
 | 
			
		||||
                        // 分公司拿 55000,或者减去之前累计
 | 
			
		||||
                        rangeBonusIncome = RetailConstants.V6_V6.subtract(totalBonus);
 | 
			
		||||
                        // 前面累计的奖金
 | 
			
		||||
                        totalBonus = totalBonus.add(RetailConstants.V6_V6.subtract(totalBonus));
 | 
			
		||||
                    } else if (EGrade.COMPANY.getValue() == targetGradeValue) {
 | 
			
		||||
                        // 总公司拿 60000,或者减去之前累计
 | 
			
		||||
                        rangeBonusIncome = RetailConstants.V7_V6.subtract(totalBonus);
 | 
			
		||||
                        // 前面累计的奖金
 | 
			
		||||
                        totalBonus = totalBonus.add(RetailConstants.V7_V6.subtract(totalBonus));
 | 
			
		||||
                    }
 | 
			
		||||
                }
 | 
			
		||||
            if (memberLevel == 1) {
 | 
			
		||||
                // 直推,拿80
 | 
			
		||||
                rangeBonusIncome = rangeBonusIncome.add(RetailConstants.FIRST_DIRECT);
 | 
			
		||||
            } else if (memberLevel == 2) {
 | 
			
		||||
                // 间推,拿20
 | 
			
		||||
                rangeBonusIncome = rangeBonusIncome.add(RetailConstants.FIRST_INDIRECT);
 | 
			
		||||
            }
 | 
			
		||||
            // 前一级会员等级
 | 
			
		||||
            beforeGradeValue = targetGradeValue;
 | 
			
		||||
            // TODO new
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
            if (rangeBonusIncome.compareTo(BigDecimal.ZERO) > 0) {
 | 
			
		||||
                // 处理直推级差收益
 | 
			
		||||
                // 会员奖金
 | 
			
		||||
                CuMemberBonus cuMemberBonus = getCuMemberBonus(period, cuMemberBonusMap, targetMemberRangeExt.getPkMember(),
 | 
			
		||||
                        targetMemberRangeExt.getIncomeStatus(), targetMemberRangeExt.getPkSettleCountry(), targetMemberRangeExt.getPkRate() == null ? saOrderExt.getPkRate() : targetMemberRangeExt.getPkRate());
 | 
			
		||||
                int pkBonusItems = getPkBonusItems(bonusConfigDTO, targetMemberRangeExt.getPkSettleCountry(), EBonusItems.RETAIL_RANGE_INCOME.getValue());
 | 
			
		||||
                // 会员级差
 | 
			
		||||
                CuMemberBonusRange cuMemberBonusRange = getCuMemberRetailBonusRange(saOrderExt, targetMemberRangeExt, cuMemberBonus, pkBonusItems);
 | 
			
		||||
                cuMemberBonusRange.setCalValue(BigDecimal.ZERO);
 | 
			
		||||
                cuMemberBonusRange.setCalAchieve(saOrderExt.getOrderAmount());
 | 
			
		||||
                cuMemberBonusRange.setCalAchieve(waresPrice);
 | 
			
		||||
                cuMemberBonusRange.setPretaxIncome(rangeBonusIncome);
 | 
			
		||||
                cuMemberBonusRange.setPkRange(targetMemberRangeExt.getPkGrade());
 | 
			
		||||
                cuMemberBonusRange.setPkBeforeRange(sourceMemberRangeExt.getPkGrade());
 | 
			
		||||
                cuMemberBonusRange.setPkOrder(saOrderExt.getPkId());
 | 
			
		||||
                cuMemberBonusRange.setPkOrderItems(0L);
 | 
			
		||||
                cuMemberBonusRange.setPkOrderItems(saOrderItems.getPkId());
 | 
			
		||||
                rangeRetailRemark(saOrderExt, cuMemberBonusRange, sourceMemberRangeExt, targetMemberRangeExt);
 | 
			
		||||
                BdBonusDeduct bdBonusDeduct = setBonusDetailDeduct(bonusConfigDTO, cuMemberBonusRange, saOrderExt.getOrderAmount(), saOrderExt.getInExchangeRate());
 | 
			
		||||
                if (EBonusIncomeStatus.NORMAL.getValue() == cuMemberBonusRange.getIncomeStatus()) {
 | 
			
		||||
| 
						 | 
				
			
			@ -536,141 +293,6 @@ public class BonusSettleRangeHandle extends BonusSettleHandle {
 | 
			
		|||
        return memberBonusRangeList;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * 计算复购级差收益
 | 
			
		||||
     */
 | 
			
		||||
    List<CuMemberBonusRange> calculateRetailRepurRangeBonus(Map<Long, CuMemberRetailRangeExt> memberRangeExtMap, Map<Long, CuMemberBonus> cuMemberBonusMap,
 | 
			
		||||
                                                            BonusConfigDTO bonusConfigDTO, Integer period, SaOrderExt saOrderExt) {
 | 
			
		||||
        // 直推级差返回数据
 | 
			
		||||
        List<CuMemberBonusRange> memberBonusRangeList = new ArrayList<>();
 | 
			
		||||
 | 
			
		||||
        // 订单下单人自己
 | 
			
		||||
        CuMemberRetailRangeExt sourceMemberRangeExt = memberRangeExtMap.get(saOrderExt.getPkMember());
 | 
			
		||||
        // 推荐人
 | 
			
		||||
        long pkParent = sourceMemberRangeExt.getPkParent();
 | 
			
		||||
        // 商品盒数
 | 
			
		||||
        BigDecimal boxNum = new BigDecimal(saOrderExt.getBoxNum());
 | 
			
		||||
 | 
			
		||||
        // 前一个会员等级
 | 
			
		||||
        int beforeGradeValue = 0;
 | 
			
		||||
        // 前面累计奖金
 | 
			
		||||
        BigDecimal totalBonus = BigDecimal.ZERO;
 | 
			
		||||
        // 平级合伙人数量
 | 
			
		||||
        int v3Count = 1;
 | 
			
		||||
        // 计算直推级差
 | 
			
		||||
        while (true) {
 | 
			
		||||
            // 上一次处理的是公司等级,则结束退出
 | 
			
		||||
            if (beforeGradeValue == EGrade.COMPANY.getValue()) {
 | 
			
		||||
                break;
 | 
			
		||||
            }
 | 
			
		||||
            // 推荐人
 | 
			
		||||
            CuMemberRetailRangeExt targetMemberRangeExt = memberRangeExtMap.get(pkParent);
 | 
			
		||||
            if (null == targetMemberRangeExt) {
 | 
			
		||||
                break;
 | 
			
		||||
            }
 | 
			
		||||
            // 推荐人的推荐人
 | 
			
		||||
            pkParent = targetMemberRangeExt.getPkParent();
 | 
			
		||||
 | 
			
		||||
            if (EAccountStatus.STOP_INCOME.getValue() == targetMemberRangeExt.getAccountStatus()
 | 
			
		||||
                    || ECategory.NORMAL.getValue() != targetMemberRangeExt.getCategory()
 | 
			
		||||
                    || targetMemberRangeExt.getEnableStatus() == EYesNo.NO.getIntValue()
 | 
			
		||||
                    || targetMemberRangeExt.getGradeValue() == EGrade.START_UP.getValue()
 | 
			
		||||
                    || EIncomeStatus.STOP_INCOME.getValue() == targetMemberRangeExt.getIncomeStatus()) {
 | 
			
		||||
                // 停算收益、非正常会员、未激活、等级为顾客、停止收益,直接跳过
 | 
			
		||||
                continue;
 | 
			
		||||
            }
 | 
			
		||||
            // 当前会员等级值
 | 
			
		||||
            int targetGradeValue = targetMemberRangeExt.getGradeValue();
 | 
			
		||||
 | 
			
		||||
            // 复购级差收益
 | 
			
		||||
            BigDecimal rangeBonusIncome = BigDecimal.ZERO;
 | 
			
		||||
 | 
			
		||||
            if (targetGradeValue > beforeGradeValue) {
 | 
			
		||||
                // 当前等级大于之前等级
 | 
			
		||||
                if (EGrade.HAI_FAN.getValue() == targetGradeValue) {
 | 
			
		||||
                    // V1 拿 6
 | 
			
		||||
                    rangeBonusIncome = RetailConstants.REPURCHASE_V1.multiply(boxNum);
 | 
			
		||||
                    // 前面累计的奖金
 | 
			
		||||
                    totalBonus = totalBonus.add(RetailConstants.REPURCHASE_V1).multiply(boxNum);
 | 
			
		||||
                } else if (EGrade.YOU_KE.getValue() == targetGradeValue) {
 | 
			
		||||
                    // V2 拿 8,或者减去之前累计
 | 
			
		||||
                    rangeBonusIncome = RetailConstants.REPURCHASE_V2.multiply(boxNum).subtract(totalBonus);
 | 
			
		||||
                    // 前面累计的奖金
 | 
			
		||||
                    totalBonus = totalBonus.add(RetailConstants.REPURCHASE_V2.subtract(totalBonus).multiply(boxNum));
 | 
			
		||||
                } else if (EGrade.MAKER.getValue() == targetGradeValue) {
 | 
			
		||||
                    // V3 拿 10,或者减去之前累计
 | 
			
		||||
                    rangeBonusIncome = RetailConstants.REPURCHASE_V3_1.multiply(boxNum).subtract(totalBonus);
 | 
			
		||||
                    // 前面累计的奖金
 | 
			
		||||
                    totalBonus = totalBonus.add(RetailConstants.REPURCHASE_V3_1.subtract(totalBonus).multiply(boxNum));
 | 
			
		||||
                } else if (EGrade.VIP.getValue() == targetGradeValue) {
 | 
			
		||||
                    // V4 拿 20,或者减去之前累计
 | 
			
		||||
                    rangeBonusIncome = RetailConstants.REPURCHASE_V4.multiply(boxNum).subtract(totalBonus);
 | 
			
		||||
                    // 前面累计的奖金
 | 
			
		||||
                    totalBonus = totalBonus.add(RetailConstants.REPURCHASE_V4.subtract(totalBonus).multiply(boxNum));
 | 
			
		||||
                } else if (EGrade.S_VIP.getValue() == targetGradeValue) {
 | 
			
		||||
                    // V5 拿 20.8,或者减去之前累计
 | 
			
		||||
                    rangeBonusIncome = RetailConstants.REPURCHASE_V5.multiply(boxNum).subtract(totalBonus);
 | 
			
		||||
                    // 前面累计的奖金
 | 
			
		||||
                    totalBonus = totalBonus.add(RetailConstants.REPURCHASE_V5.subtract(totalBonus).multiply(boxNum));
 | 
			
		||||
                } else if (EGrade.BRANCH_COMPANY.getValue() == targetGradeValue) {
 | 
			
		||||
                    // V6 拿 22,或者减去之前累计
 | 
			
		||||
                    rangeBonusIncome = RetailConstants.REPURCHASE_V6.multiply(boxNum).subtract(totalBonus);
 | 
			
		||||
                    // 前面累计的奖金
 | 
			
		||||
                    totalBonus = totalBonus.add(RetailConstants.REPURCHASE_V6.subtract(totalBonus).multiply(boxNum));
 | 
			
		||||
                } else if (EGrade.COMPANY.getValue() == targetGradeValue) {
 | 
			
		||||
                    // V7 拿 24,或者减去之前累计
 | 
			
		||||
                    rangeBonusIncome = RetailConstants.REPURCHASE_V7.multiply(boxNum).subtract(totalBonus);
 | 
			
		||||
                    // 前面累计的奖金
 | 
			
		||||
                    totalBonus = totalBonus.add(RetailConstants.REPURCHASE_V7.subtract(totalBonus).multiply(boxNum));
 | 
			
		||||
                }
 | 
			
		||||
            } else if (EGrade.MAKER.getValue() == beforeGradeValue
 | 
			
		||||
                    && EGrade.MAKER.getValue() == targetGradeValue) {
 | 
			
		||||
                // 之前和现在都是合伙人,处理平级
 | 
			
		||||
                if (v3Count == 1) {
 | 
			
		||||
                    // V3第一平级 推拿 12,或者减去之前累计
 | 
			
		||||
                    rangeBonusIncome = RetailConstants.REPURCHASE_V3_2.multiply(boxNum).subtract(totalBonus);
 | 
			
		||||
                    // 前面累计的奖金
 | 
			
		||||
                    totalBonus = totalBonus.add(RetailConstants.REPURCHASE_V3_2.subtract(totalBonus).multiply(boxNum));
 | 
			
		||||
                    v3Count++;
 | 
			
		||||
                } else if (v3Count == 2) {
 | 
			
		||||
                    // V3第二平级 推拿 13,或者减去之前累计
 | 
			
		||||
                    rangeBonusIncome = RetailConstants.REPURCHASE_V3_3.multiply(boxNum).subtract(totalBonus);
 | 
			
		||||
                    // 前面累计的奖金
 | 
			
		||||
                    totalBonus = totalBonus.add(RetailConstants.REPURCHASE_V3_3.subtract(totalBonus).multiply(boxNum));
 | 
			
		||||
                    v3Count++;
 | 
			
		||||
                }
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            // 前一级会员等级
 | 
			
		||||
            beforeGradeValue = targetGradeValue;
 | 
			
		||||
 | 
			
		||||
            if (rangeBonusIncome.compareTo(BigDecimal.ZERO) > 0) {
 | 
			
		||||
                // 处理复购级差收益
 | 
			
		||||
                // 会员奖金
 | 
			
		||||
                CuMemberBonus cuMemberBonus = getCuMemberBonus(period, cuMemberBonusMap, targetMemberRangeExt.getPkMember(),
 | 
			
		||||
                        targetMemberRangeExt.getIncomeStatus(), targetMemberRangeExt.getPkSettleCountry(), targetMemberRangeExt.getPkRate() == null ? saOrderExt.getPkRate() : targetMemberRangeExt.getPkRate());
 | 
			
		||||
                int pkBonusItems = getPkBonusItems(bonusConfigDTO, targetMemberRangeExt.getPkSettleCountry(), EBonusItems.RETAIL_REPURCHASE_INCOME.getValue());
 | 
			
		||||
                // 会员级差
 | 
			
		||||
                CuMemberBonusRange cuMemberBonusRange = getCuMemberRetailBonusRange(saOrderExt, targetMemberRangeExt, cuMemberBonus, pkBonusItems);
 | 
			
		||||
                cuMemberBonusRange.setCalValue(BigDecimal.ZERO);
 | 
			
		||||
                cuMemberBonusRange.setCalAchieve(saOrderExt.getOrderAmount());
 | 
			
		||||
                cuMemberBonusRange.setPretaxIncome(rangeBonusIncome);
 | 
			
		||||
                cuMemberBonusRange.setPkRange(targetMemberRangeExt.getPkGrade());
 | 
			
		||||
                cuMemberBonusRange.setPkBeforeRange(sourceMemberRangeExt.getPkGrade());
 | 
			
		||||
                cuMemberBonusRange.setPkOrder(saOrderExt.getPkId());
 | 
			
		||||
                cuMemberBonusRange.setPkOrderItems(0L);
 | 
			
		||||
                rangeRepurRetailRemark(saOrderExt, cuMemberBonusRange, sourceMemberRangeExt, targetMemberRangeExt);
 | 
			
		||||
                BdBonusDeduct bdBonusDeduct = setBonusDetailDeduct(bonusConfigDTO, cuMemberBonusRange, saOrderExt.getOrderAmount(), saOrderExt.getInExchangeRate());
 | 
			
		||||
                if (EBonusIncomeStatus.NORMAL.getValue() == cuMemberBonusRange.getIncomeStatus()) {
 | 
			
		||||
                    cuMemberBonus.setRepurRangeIncome(ComputeUtil.computeAdd(cuMemberBonus.getRetailRangeIncome(), cuMemberBonusRange.getPretaxIncome()));
 | 
			
		||||
                    setRetailTotal(bdBonusDeduct, cuMemberBonus, cuMemberBonusRange);
 | 
			
		||||
                }
 | 
			
		||||
                memberBonusRangeList.add(cuMemberBonusRange);
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
        return memberBonusRangeList;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    private CuMemberBonusRange getCuMemberRetailBonusRange(SaOrder saOrderExt, CuMemberRetailRangeExt targetMemberRangeExt,
 | 
			
		||||
                                                           CuMemberBonus cuMemberBonus, Integer pkBonusItems) {
 | 
			
		||||
        CuMemberBonusRange cuMemberBonusRange = CuMemberBonusRange.builder()
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -31,16 +31,50 @@ public class BonusSettleServiceImpl implements IBonusSettleService {
 | 
			
		|||
    @Autowired
 | 
			
		||||
    private ICuMemberSettlePeriodService iCuMemberSettlePeriodService;
 | 
			
		||||
    @Autowired
 | 
			
		||||
    private ICuMemberBonusService iCuMemberBonusService;
 | 
			
		||||
    @Autowired
 | 
			
		||||
    private ICuMemberBonusPushService iCuMemberBonusPushService;
 | 
			
		||||
    @Autowired
 | 
			
		||||
    private ICuMemberBonusDetailService iCuMemberBonusDetailService;
 | 
			
		||||
    @Autowired
 | 
			
		||||
    private ICuMemberBonusRangeService iCuMemberBonusRangeService;
 | 
			
		||||
    @Autowired
 | 
			
		||||
    private BonusSettleRangeHandle bonusSettleRangeHandle;
 | 
			
		||||
 | 
			
		||||
    private ICuMemberBonusService cuMemberBonusService;
 | 
			
		||||
 | 
			
		||||
    private ICuMemberBonusPushService cuMemberBonusPushService;
 | 
			
		||||
 | 
			
		||||
    private ICuMemberBonusExpandService cuMemberBonusExpandService;
 | 
			
		||||
 | 
			
		||||
    private ICuMemberBonusCoachService cuMemberBonusCoachService;
 | 
			
		||||
 | 
			
		||||
    private ICuMemberBonusDetailService cuMemberBonusDetailService;
 | 
			
		||||
 | 
			
		||||
    private ICuMemberBonusRangeService cuMemberBonusRangeService;
 | 
			
		||||
 | 
			
		||||
    @Autowired
 | 
			
		||||
    public void setCuMemberBonusPushService(ICuMemberBonusPushService cuMemberBonusPushService) {
 | 
			
		||||
        this.cuMemberBonusPushService = cuMemberBonusPushService;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @Autowired
 | 
			
		||||
    public void setCuMemberBonusExpandService(ICuMemberBonusExpandService cuMemberBonusExpandService) {
 | 
			
		||||
        this.cuMemberBonusExpandService = cuMemberBonusExpandService;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @Autowired
 | 
			
		||||
    public void setCuMemberBonusCoachService(ICuMemberBonusCoachService cuMemberBonusCoachService) {
 | 
			
		||||
        this.cuMemberBonusCoachService = cuMemberBonusCoachService;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @Autowired
 | 
			
		||||
    public void setCuMemberBonusDetailService(ICuMemberBonusDetailService cuMemberBonusDetailService) {
 | 
			
		||||
        this.cuMemberBonusDetailService = cuMemberBonusDetailService;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @Autowired
 | 
			
		||||
    public void setCuMemberBonusRangeService(ICuMemberBonusRangeService cuMemberBonusRangeService) {
 | 
			
		||||
        this.cuMemberBonusRangeService = cuMemberBonusRangeService;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @Autowired
 | 
			
		||||
    public void setCuMemberBonusService(ICuMemberBonusService cuMemberBonusService) {
 | 
			
		||||
        this.cuMemberBonusService = cuMemberBonusService;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @Override
 | 
			
		||||
    @Transactional(rollbackFor = Exception.class)
 | 
			
		||||
    public void calculateCuMemberBonus(String settleDate, List<SaOrderExt> saOrderExtList) {
 | 
			
		||||
| 
						 | 
				
			
			@ -62,7 +96,7 @@ public class BonusSettleServiceImpl implements IBonusSettleService {
 | 
			
		|||
            // 今天和昨天是否同月
 | 
			
		||||
            Boolean isSameMonth = DateUtils.getMonth(settleDate).equals(DateUtils.getMonth(yesterday));
 | 
			
		||||
 | 
			
		||||
            // 计算新零售奖金
 | 
			
		||||
            // 计算新零售团队奖金
 | 
			
		||||
            bonusSettleRangeHandle.calculateRetailBonusByDay(settleDate, cuMemberBonusMap, bonusConfigDTO, recordDetailVO,
 | 
			
		||||
                    period, yesterdayPeriod, isSameMonth);
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -81,18 +115,24 @@ public class BonusSettleServiceImpl implements IBonusSettleService {
 | 
			
		|||
     * @param bonusRecordDetailVO 奖金明细表
 | 
			
		||||
     */
 | 
			
		||||
    void insertCuMemberBonus(String settleDate, Integer period, Map<Long, CuMemberBonus> cuMemberBonusMap, BonusRecordDetailVO bonusRecordDetailVO) {
 | 
			
		||||
        iCuMemberBonusPushService.deleteCuMemberBonusPush(period);
 | 
			
		||||
        iCuMemberBonusDetailService.deleteCuMemberBonusDetail(period);
 | 
			
		||||
        iCuMemberBonusRangeService.deleteCuMemberBonusRange(period);
 | 
			
		||||
        iCuMemberBonusService.deleteCuMemberBonus(period);
 | 
			
		||||
        cuMemberBonusPushService.deleteCuMemberBonusPush(period);
 | 
			
		||||
        cuMemberBonusExpandService.deleteCuMemberBonusExpand(period);
 | 
			
		||||
        cuMemberBonusCoachService.deleteCuMemberBonusCoach(period);
 | 
			
		||||
        cuMemberBonusDetailService.deleteCuMemberBonusDetail(period);
 | 
			
		||||
        cuMemberBonusRangeService.deleteCuMemberBonusRange(period);
 | 
			
		||||
        cuMemberBonusService.deleteCuMemberBonus(period);
 | 
			
		||||
        if (cuMemberBonusMap.size() == 0) {
 | 
			
		||||
            return;
 | 
			
		||||
        }
 | 
			
		||||
        List<CuMemberBonusPush> batchMemberBonusPushList = new ArrayList<>();
 | 
			
		||||
        List<CuMemberBonusExpand> batchMemberBonusExpandList = new ArrayList<>();
 | 
			
		||||
        List<CuMemberBonusCoach> batchMemberBonusCoachList = new ArrayList<>();
 | 
			
		||||
        List<CuMemberBonusDetail> batchMemberBonusDetailList = new ArrayList<>();
 | 
			
		||||
        List<CuMemberBonusRange> batchMemberBonusRangeList = new ArrayList<>();
 | 
			
		||||
        List<CuMemberBonus> cuMemberBonusList = setCuMemberBonusSeq(settleDate, cuMemberBonusMap);
 | 
			
		||||
        List<CuMemberBonusPush> cuMemberBonusPushList = bonusRecordDetailVO.getCuMemberBonusPushList();
 | 
			
		||||
        List<CuMemberBonusExpand> cuMemberBonusExpandList = bonusRecordDetailVO.getCuMemberBonusExpandList();
 | 
			
		||||
        List<CuMemberBonusCoach> cuMemberBonusCoachList = bonusRecordDetailVO.getCuMemberBonusCoachList();
 | 
			
		||||
        List<CuMemberBonusDetail> cuMemberBonusDetailList = bonusRecordDetailVO.getCuMemberBonusDetailList();
 | 
			
		||||
        List<CuMemberBonusRange> cuMemberBonusRangeList = bonusRecordDetailVO.getCuMemberBonusRangeList();
 | 
			
		||||
        if (cuMemberBonusPushList != null && cuMemberBonusPushList.size() > 0) {
 | 
			
		||||
| 
						 | 
				
			
			@ -100,6 +140,16 @@ public class BonusSettleServiceImpl implements IBonusSettleService {
 | 
			
		|||
                    cuMemberBonusPush.setPkBonus(cuMemberBonusMap.get(cuMemberBonusPush.getPkBonus()).getPkId()));
 | 
			
		||||
            batchMemberBonusPushList.addAll(cuMemberBonusPushList);
 | 
			
		||||
        }
 | 
			
		||||
        if (cuMemberBonusExpandList != null && cuMemberBonusExpandList.size() > 0) {
 | 
			
		||||
            cuMemberBonusExpandList.forEach(cuMemberBonusExpand ->
 | 
			
		||||
                    cuMemberBonusExpand.setPkBonus(cuMemberBonusMap.get(cuMemberBonusExpand.getPkBonus()).getPkId()));
 | 
			
		||||
            batchMemberBonusExpandList.addAll(cuMemberBonusExpandList);
 | 
			
		||||
        }
 | 
			
		||||
        if (cuMemberBonusCoachList != null && cuMemberBonusCoachList.size() > 0) {
 | 
			
		||||
            cuMemberBonusCoachList.forEach(cuMemberBonusCoach ->
 | 
			
		||||
                    cuMemberBonusCoach.setPkBonus(cuMemberBonusMap.get(cuMemberBonusCoach.getPkBonus()).getPkId()));
 | 
			
		||||
            batchMemberBonusCoachList.addAll(cuMemberBonusCoachList);
 | 
			
		||||
        }
 | 
			
		||||
        if (cuMemberBonusDetailList != null && cuMemberBonusDetailList.size() > 0) {
 | 
			
		||||
            cuMemberBonusDetailList.forEach(cuMemberBonusDetail ->
 | 
			
		||||
                    cuMemberBonusDetail.setPkBonus(cuMemberBonusMap.get(cuMemberBonusDetail.getPkBonus()).getPkId()));
 | 
			
		||||
| 
						 | 
				
			
			@ -111,15 +161,17 @@ public class BonusSettleServiceImpl implements IBonusSettleService {
 | 
			
		|||
            batchMemberBonusRangeList.addAll(cuMemberBonusRangeList);
 | 
			
		||||
        }
 | 
			
		||||
        // 插入奖金主表
 | 
			
		||||
        iCuMemberBonusService.batchInsertCuMemberBonus(cuMemberBonusList);
 | 
			
		||||
        Set<Long> memberIdSet = iCuMemberBonusService.queryMemberBonusByPeriod(period);
 | 
			
		||||
        iCuMemberBonusPushService.batchInsertCuMemberBonusPush(batchMemberBonusPushList, memberIdSet);
 | 
			
		||||
        iCuMemberBonusDetailService.batchInsertCuMemberBonusDetail(batchMemberBonusDetailList, memberIdSet);
 | 
			
		||||
        iCuMemberBonusRangeService.batchInsertCuMemberBonusRange(batchMemberBonusRangeList, memberIdSet);
 | 
			
		||||
        cuMemberBonusService.batchInsertCuMemberBonus(cuMemberBonusList);
 | 
			
		||||
        Set<Long> memberIdSet = cuMemberBonusService.queryMemberBonusByPeriod(period);
 | 
			
		||||
        cuMemberBonusPushService.batchInsertCuMemberBonusPush(batchMemberBonusPushList, memberIdSet);
 | 
			
		||||
        cuMemberBonusExpandService.batchInsertCuMemberBonusExpand(batchMemberBonusExpandList, memberIdSet);
 | 
			
		||||
        cuMemberBonusCoachService.batchInsertCuMemberBonusCoach(batchMemberBonusCoachList, memberIdSet);
 | 
			
		||||
        cuMemberBonusDetailService.batchInsertCuMemberBonusDetail(batchMemberBonusDetailList, memberIdSet);
 | 
			
		||||
        cuMemberBonusRangeService.batchInsertCuMemberBonusRange(batchMemberBonusRangeList, memberIdSet);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    private List<CuMemberBonus> setCuMemberBonusSeq(String settleDate, Map<Long, CuMemberBonus> cuMemberBonusMap) {
 | 
			
		||||
        List<Long> pkIdList = iCuMemberBonusService.batchQueryCuMemberBonusSeq(cuMemberBonusMap.size());
 | 
			
		||||
        List<Long> pkIdList = cuMemberBonusService.batchQueryCuMemberBonusSeq(cuMemberBonusMap.size());
 | 
			
		||||
        int i = 0;
 | 
			
		||||
        // 判断时间,重算的时候直接是已公布
 | 
			
		||||
        Integer grantStatus = EGrantStatus.SETTLED.getValue();
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -0,0 +1,51 @@
 | 
			
		|||
package com.hzs.bonus.bonus.service.impl;
 | 
			
		||||
 | 
			
		||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 | 
			
		||||
import com.hzs.bonus.achieve.service.impl.CuMemberBonusSettle;
 | 
			
		||||
import com.hzs.bonus.bonus.service.ICuMemberBonusCoachService;
 | 
			
		||||
import com.hzs.common.domain.member.bonus.CuMemberBonusCoach;
 | 
			
		||||
import com.hzs.bonus.bonus.mapper.CuMemberBonusCoachMapper;
 | 
			
		||||
import org.springframework.beans.factory.annotation.Autowired;
 | 
			
		||||
import org.springframework.stereotype.Service;
 | 
			
		||||
 | 
			
		||||
import java.util.ArrayList;
 | 
			
		||||
import java.util.List;
 | 
			
		||||
import java.util.Set;
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * 会员奖金-辅导收益明细表 服务实现类
 | 
			
		||||
 */
 | 
			
		||||
@Service
 | 
			
		||||
public class CuMemberBonusCoachServiceImpl extends ServiceImpl<CuMemberBonusCoachMapper, CuMemberBonusCoach> implements ICuMemberBonusCoachService {
 | 
			
		||||
 | 
			
		||||
    private CuMemberBonusSettle cuMemberBonusSettle;
 | 
			
		||||
 | 
			
		||||
    @Autowired
 | 
			
		||||
    public void setCuMemberBonusSettle(CuMemberBonusSettle cuMemberBonusSettle) {
 | 
			
		||||
        this.cuMemberBonusSettle = cuMemberBonusSettle;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @Override
 | 
			
		||||
    public void deleteCuMemberBonusCoach(Integer period) {
 | 
			
		||||
        baseMapper.deleteCuMemberBonusCoach(period);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @Override
 | 
			
		||||
    public void batchInsertCuMemberBonusCoach(List<CuMemberBonusCoach> cuMemberBonusCoachList, Set<Long> memberIdSet) {
 | 
			
		||||
        if (cuMemberBonusCoachList.size() == 0) {
 | 
			
		||||
            return;
 | 
			
		||||
        }
 | 
			
		||||
        List<CuMemberBonusCoach> cuMemberBonusCoaches = new ArrayList<>();
 | 
			
		||||
        for (CuMemberBonusCoach cuMemberBonusCoach : cuMemberBonusCoachList) {
 | 
			
		||||
            if (memberIdSet.contains(cuMemberBonusCoach.getPkBonus())) {
 | 
			
		||||
                cuMemberBonusCoaches.add(cuMemberBonusCoach);
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
        if (cuMemberBonusCoaches.size() == 0) {
 | 
			
		||||
            return;
 | 
			
		||||
        }
 | 
			
		||||
        List<List<?>> lists = cuMemberBonusSettle.handleCutList(cuMemberBonusCoaches);
 | 
			
		||||
        lists.forEach(list ->
 | 
			
		||||
                baseMapper.batchInsertCuMemberBonusCoach(list));
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			@ -0,0 +1,49 @@
 | 
			
		|||
package com.hzs.bonus.bonus.service.impl;
 | 
			
		||||
 | 
			
		||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 | 
			
		||||
import com.hzs.bonus.achieve.service.impl.CuMemberBonusSettle;
 | 
			
		||||
import com.hzs.bonus.bonus.service.ICuMemberBonusExpandService;
 | 
			
		||||
import com.hzs.common.domain.member.bonus.CuMemberBonusExpand;
 | 
			
		||||
import com.hzs.bonus.bonus.mapper.CuMemberBonusExpandMapper;
 | 
			
		||||
import org.springframework.beans.factory.annotation.Autowired;
 | 
			
		||||
import org.springframework.stereotype.Service;
 | 
			
		||||
 | 
			
		||||
import java.util.ArrayList;
 | 
			
		||||
import java.util.List;
 | 
			
		||||
import java.util.Set;
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * 会员奖金-拓展收益明细表 服务实现类
 | 
			
		||||
 */
 | 
			
		||||
@Service
 | 
			
		||||
public class CuMemberBonusExpandServiceImpl extends ServiceImpl<CuMemberBonusExpandMapper, CuMemberBonusExpand> implements ICuMemberBonusExpandService {
 | 
			
		||||
 | 
			
		||||
    @Autowired
 | 
			
		||||
    private CuMemberBonusSettle cuMemberBonusSettle;
 | 
			
		||||
 | 
			
		||||
    @Override
 | 
			
		||||
    public void deleteCuMemberBonusExpand(Integer period) {
 | 
			
		||||
        baseMapper.deleteCuMemberBonusExpand(period);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @Override
 | 
			
		||||
    public void batchInsertCuMemberBonusExpand(List<CuMemberBonusExpand> cuMemberBonusExpandList, Set<Long> memberIdSet) {
 | 
			
		||||
        if (cuMemberBonusExpandList.size() == 0) {
 | 
			
		||||
            return;
 | 
			
		||||
        }
 | 
			
		||||
        List<CuMemberBonusExpand> memberBonusExpands = new ArrayList<>();
 | 
			
		||||
        for (CuMemberBonusExpand cuMemberBonusExpand : cuMemberBonusExpandList) {
 | 
			
		||||
            if (memberIdSet.contains(cuMemberBonusExpand.getPkBonus())) {
 | 
			
		||||
                memberBonusExpands.add(cuMemberBonusExpand);
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
        if (memberBonusExpands.size() == 0) {
 | 
			
		||||
            return;
 | 
			
		||||
        }
 | 
			
		||||
        List<List<?>> lists = cuMemberBonusSettle.handleCutList(memberBonusExpands);
 | 
			
		||||
        lists.forEach(list ->
 | 
			
		||||
                baseMapper.batchInsertCuMemberBonusExpand(list));
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -56,6 +56,10 @@ public class CuMemberBonusServiceImpl extends ServiceImpl<CuMemberBonusMapper, C
 | 
			
		|||
 | 
			
		||||
    private CuMemberBonusDetailMapper cuMemberBonusDetailMapper;
 | 
			
		||||
 | 
			
		||||
    private CuMemberBonusExpandMapper cuMemberBonusExpandMapper;
 | 
			
		||||
 | 
			
		||||
    private CuMemberBonusCoachMapper cuMemberBonusCoachMapper;
 | 
			
		||||
 | 
			
		||||
    private CuMemberBonusRangeMapper cuMemberBonusRangeMapper;
 | 
			
		||||
 | 
			
		||||
    private CuMemberBonusSettle cuMemberBonusSettle;
 | 
			
		||||
| 
						 | 
				
			
			@ -79,6 +83,16 @@ public class CuMemberBonusServiceImpl extends ServiceImpl<CuMemberBonusMapper, C
 | 
			
		|||
        this.cuMemberBonusSettle = cuMemberBonusSettle;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @Autowired
 | 
			
		||||
    public void setCuMemberBonusExpandMapper(CuMemberBonusExpandMapper cuMemberBonusExpandMapper) {
 | 
			
		||||
        this.cuMemberBonusExpandMapper = cuMemberBonusExpandMapper;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @Autowired
 | 
			
		||||
    public void setCuMemberBonusCoachMapper(CuMemberBonusCoachMapper cuMemberBonusCoachMapper) {
 | 
			
		||||
        this.cuMemberBonusCoachMapper = cuMemberBonusCoachMapper;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @Autowired
 | 
			
		||||
    public void setCuMemberBonusRangeMapper(CuMemberBonusRangeMapper cuMemberBonusRangeMapper) {
 | 
			
		||||
        this.cuMemberBonusRangeMapper = cuMemberBonusRangeMapper;
 | 
			
		||||
| 
						 | 
				
			
			@ -307,9 +321,31 @@ public class CuMemberBonusServiceImpl extends ServiceImpl<CuMemberBonusMapper, C
 | 
			
		|||
                memberBonusDetailVO.setSourceMemberName(cuMemberBonusDetail.getSourceMemberName());
 | 
			
		||||
                memberBonusDetailVOList.add(memberBonusDetailVO);
 | 
			
		||||
            });
 | 
			
		||||
        } else if (EBonusItems.RETAIL_RANGE_INCOME.getValue() == bonusItemsValue
 | 
			
		||||
                || EBonusItems.RETAIL_REPURCHASE_INCOME.getValue() == bonusItemsValue) {
 | 
			
		||||
            // 直推级差收益、复购级差收益
 | 
			
		||||
        } else if (EBonusItems.EXPANSION_INCOME.getValue() == bonusItemsValue ||
 | 
			
		||||
                EBonusItems.CONSUMPTION_EXPANSION_INCOME.getValue() == bonusItemsValue) {
 | 
			
		||||
            // 拓展收益、复购拓展收益
 | 
			
		||||
            List<CuMemberBonusExpandExt> cuMemberBonusExpandList = cuMemberBonusExpandMapper.queryMemberBonusExpandByBonusItems(bonusParam);
 | 
			
		||||
            dataTable = getDataTable(cuMemberBonusExpandList);
 | 
			
		||||
            cuMemberBonusExpandList.forEach(cuMemberBonusExpand -> {
 | 
			
		||||
                MemberBonusDetailVO memberBonusDetailVO = BeanUtil.copyProperties(cuMemberBonusExpand, MemberBonusDetailVO.class);
 | 
			
		||||
                memberBonusDetailVO.setSourceMemberCode(cuMemberBonusExpand.getSourceMemberCode());
 | 
			
		||||
                memberBonusDetailVO.setSourceMemberName(cuMemberBonusExpand.getSourceMemberName());
 | 
			
		||||
                memberBonusDetailVOList.add(memberBonusDetailVO);
 | 
			
		||||
            });
 | 
			
		||||
        } else if (EBonusItems.COACHING_INCOME.getValue() == bonusItemsValue) {
 | 
			
		||||
            // 辅导收益
 | 
			
		||||
            // 拓展收益、复购拓展收益
 | 
			
		||||
            List<CuMemberBonusCoachExt> cuMemberBonusCoachList = cuMemberBonusCoachMapper.queryMemberBonusCoachByBonusItems(bonusParam);
 | 
			
		||||
            dataTable = getDataTable(cuMemberBonusCoachList);
 | 
			
		||||
            cuMemberBonusCoachList.forEach(cuMemberBonusCoach -> {
 | 
			
		||||
                MemberBonusDetailVO memberBonusDetailVO = BeanUtil.copyProperties(cuMemberBonusCoach, MemberBonusDetailVO.class);
 | 
			
		||||
                memberBonusDetailVO.setSourceMemberCode(cuMemberBonusCoach.getSourceMemberCode());
 | 
			
		||||
                memberBonusDetailVO.setSourceMemberName(cuMemberBonusCoach.getSourceMemberName());
 | 
			
		||||
                memberBonusDetailVOList.add(memberBonusDetailVO);
 | 
			
		||||
            });
 | 
			
		||||
        } else if (EBonusItems.REPURCHASE_RANGE_INCOME.getValue() == bonusItemsValue) {
 | 
			
		||||
            // 复购极差
 | 
			
		||||
            // 拓展收益、复购拓展收益
 | 
			
		||||
            List<CuMemberBonusRangeExt> cuMemberBonusRangeList = cuMemberBonusRangeMapper.queryMemberBonusRangeByBonusItems(bonusParam);
 | 
			
		||||
            dataTable = getDataTable(cuMemberBonusRangeList);
 | 
			
		||||
            cuMemberBonusRangeList.forEach(cuMemberBonusRange -> {
 | 
			
		||||
| 
						 | 
				
			
			@ -319,7 +355,8 @@ public class CuMemberBonusServiceImpl extends ServiceImpl<CuMemberBonusMapper, C
 | 
			
		|||
                memberBonusDetailVOList.add(memberBonusDetailVO);
 | 
			
		||||
            });
 | 
			
		||||
        } else {
 | 
			
		||||
            // 其他收益
 | 
			
		||||
            // 其他收益 服务补贴、分红收益、嗨粉直推
 | 
			
		||||
            // 拓展收益、复购拓展收益
 | 
			
		||||
            List<CuMemberBonusDetailExt> cuMemberBonusDetailList = cuMemberBonusDetailMapper.queryMemberBonusDetailByBonusItems(bonusParam);
 | 
			
		||||
            dataTable = getDataTable(cuMemberBonusDetailList);
 | 
			
		||||
            cuMemberBonusDetailList.forEach(cuMemberBonusDetail -> {
 | 
			
		||||
| 
						 | 
				
			
			@ -373,9 +410,27 @@ public class CuMemberBonusServiceImpl extends ServiceImpl<CuMemberBonusMapper, C
 | 
			
		|||
                MemberBonusDetailSerVO memberBonusDetailVO = BeanUtil.copyProperties(cuMemberBonusDetail, MemberBonusDetailSerVO.class);
 | 
			
		||||
                memberBonusDetailSerVoS.add(memberBonusDetailVO);
 | 
			
		||||
            });
 | 
			
		||||
        } else if (EBonusItems.RETAIL_RANGE_INCOME.getValue() == bonusItemsValue
 | 
			
		||||
                || EBonusItems.RETAIL_REPURCHASE_INCOME.getValue() == bonusItemsValue) {
 | 
			
		||||
            // 直推级差收益、复购级差收益
 | 
			
		||||
        } else if (EBonusItems.EXPANSION_INCOME.getValue() == bonusItemsValue ||
 | 
			
		||||
                EBonusItems.CONSUMPTION_EXPANSION_INCOME.getValue() == bonusItemsValue) {
 | 
			
		||||
            // 拓展收益、复购拓展收益
 | 
			
		||||
            List<CuMemberBonusExpandExt> cuMemberBonusExpandList = cuMemberBonusExpandMapper.queryMemberBonusExpandByBonusItemsForServer(bonusParam);
 | 
			
		||||
            dataTable = getDataTable(cuMemberBonusExpandList);
 | 
			
		||||
            cuMemberBonusExpandList.forEach(cuMemberBonusExpand -> {
 | 
			
		||||
                MemberBonusDetailSerVO memberBonusDetailVO = BeanUtil.copyProperties(cuMemberBonusExpand, MemberBonusDetailSerVO.class);
 | 
			
		||||
                memberBonusDetailSerVoS.add(memberBonusDetailVO);
 | 
			
		||||
            });
 | 
			
		||||
        } else if (EBonusItems.COACHING_INCOME.getValue() == bonusItemsValue) {
 | 
			
		||||
            // 辅导收益
 | 
			
		||||
            // 拓展收益、复购拓展收益
 | 
			
		||||
            List<CuMemberBonusCoachExt> cuMemberBonusCoachList = cuMemberBonusCoachMapper.queryMemberBonusCoachByBonusItemsForServer(bonusParam);
 | 
			
		||||
            dataTable = getDataTable(cuMemberBonusCoachList);
 | 
			
		||||
            cuMemberBonusCoachList.forEach(cuMemberBonusCoach -> {
 | 
			
		||||
                MemberBonusDetailSerVO memberBonusDetailVO = BeanUtil.copyProperties(cuMemberBonusCoach, MemberBonusDetailSerVO.class);
 | 
			
		||||
                memberBonusDetailSerVoS.add(memberBonusDetailVO);
 | 
			
		||||
            });
 | 
			
		||||
        } else if (EBonusItems.REPURCHASE_RANGE_INCOME.getValue() == bonusItemsValue || EBonusItems.RETAIL_RANGE_INCOME.getValue() == bonusItemsValue) {
 | 
			
		||||
            // 复购极差
 | 
			
		||||
            // 拓展收益、复购拓展收益
 | 
			
		||||
            List<CuMemberBonusRangeExt> cuMemberBonusRangeList = cuMemberBonusRangeMapper.queryMemberBonusRangeByBonusItemsForServer(bonusParam);
 | 
			
		||||
            dataTable = getDataTable(cuMemberBonusRangeList);
 | 
			
		||||
            cuMemberBonusRangeList.forEach(cuMemberBonusRange -> {
 | 
			
		||||
| 
						 | 
				
			
			@ -383,7 +438,8 @@ public class CuMemberBonusServiceImpl extends ServiceImpl<CuMemberBonusMapper, C
 | 
			
		|||
                memberBonusDetailSerVoS.add(memberBonusDetailVO);
 | 
			
		||||
            });
 | 
			
		||||
        } else {
 | 
			
		||||
            // 其他收益
 | 
			
		||||
            // 其他收益 服务补贴、分红收益、嗨粉直推
 | 
			
		||||
            // 拓展收益、复购拓展收益
 | 
			
		||||
            List<CuMemberBonusDetailExt> cuMemberBonusDetailList = cuMemberBonusDetailMapper.queryMemberBonusDetailByBonusItemsForServer(bonusParam);
 | 
			
		||||
            dataTable = getDataTable(cuMemberBonusDetailList);
 | 
			
		||||
            cuMemberBonusDetailList.forEach(cuMemberBonusDetail -> {
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1,28 +0,0 @@
 | 
			
		|||
package com.hzs.bonus.detail.mapper;
 | 
			
		||||
 | 
			
		||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 | 
			
		||||
import com.hzs.common.domain.member.detail.CuMemberGrade;
 | 
			
		||||
import com.hzs.common.domain.member.detail.CuMemberLevel;
 | 
			
		||||
import org.apache.ibatis.annotations.Param;
 | 
			
		||||
 | 
			
		||||
import java.util.Date;
 | 
			
		||||
import java.util.List;
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * 会员信息-等级升级记录 Mapper 接口
 | 
			
		||||
 */
 | 
			
		||||
public interface CuMemberGradeMapper extends BaseMapper<CuMemberGrade> {
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * 回退会员等级
 | 
			
		||||
     */
 | 
			
		||||
    void updateCuMemberGrade(@Param("rangeTableName") String rangeTableName, @Param("period") Integer period);
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * 查询会员等级
 | 
			
		||||
     */
 | 
			
		||||
    List<CuMemberLevel> queryCuMemberLevel(@Param("startDate") Date startDate,
 | 
			
		||||
                                           @Param("endDate") Date endDate,
 | 
			
		||||
                                           @Param("upType") Integer upType);
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			@ -1,32 +0,0 @@
 | 
			
		|||
package com.hzs.bonus.detail.service;
 | 
			
		||||
 | 
			
		||||
import com.baomidou.mybatisplus.extension.service.IService;
 | 
			
		||||
import com.hzs.common.domain.member.detail.CuMemberGrade;
 | 
			
		||||
import com.hzs.common.domain.member.detail.CuMemberLevel;
 | 
			
		||||
 | 
			
		||||
import java.util.Date;
 | 
			
		||||
import java.util.List;
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * 会员信息-等级升级记录 服务类
 | 
			
		||||
 */
 | 
			
		||||
public interface ICuMemberGradeService extends IService<CuMemberGrade> {
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * 回退极差奖衔,每日重新结算,先把等级回退到前一天
 | 
			
		||||
     *
 | 
			
		||||
     * @param period         结算期间
 | 
			
		||||
     * @param rangeTableName 结算表
 | 
			
		||||
     */
 | 
			
		||||
    List<CuMemberLevel> calculateCuMemberRetailGradeInit(Integer period, Date startDate, Date endDate, String rangeTableName);
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * 自动升级列表
 | 
			
		||||
     *
 | 
			
		||||
     * @param startDate
 | 
			
		||||
     * @param endDate
 | 
			
		||||
     * @return
 | 
			
		||||
     */
 | 
			
		||||
    List<CuMemberLevel> listAutoLevel(Date startDate, Date endDate);
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			@ -1,33 +0,0 @@
 | 
			
		|||
package com.hzs.bonus.detail.service.impl;
 | 
			
		||||
 | 
			
		||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 | 
			
		||||
import com.hzs.bonus.detail.mapper.CuMemberGradeMapper;
 | 
			
		||||
import com.hzs.bonus.detail.service.ICuMemberGradeService;
 | 
			
		||||
import com.hzs.common.core.enums.EUpgradeType;
 | 
			
		||||
import com.hzs.common.domain.member.detail.CuMemberGrade;
 | 
			
		||||
import com.hzs.common.domain.member.detail.CuMemberLevel;
 | 
			
		||||
import org.springframework.stereotype.Service;
 | 
			
		||||
 | 
			
		||||
import java.util.Date;
 | 
			
		||||
import java.util.List;
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * 会员信息-等级升级记录 服务实现类
 | 
			
		||||
 */
 | 
			
		||||
@Service
 | 
			
		||||
public class CuMemberGradeServiceImpl extends ServiceImpl<CuMemberGradeMapper, CuMemberGrade> implements ICuMemberGradeService {
 | 
			
		||||
 | 
			
		||||
    @Override
 | 
			
		||||
    public List<CuMemberLevel> calculateCuMemberRetailGradeInit(Integer period, Date startDate, Date endDate, String rangeTableName) {
 | 
			
		||||
        // 根据手动升级记录,更新日结表
 | 
			
		||||
        baseMapper.updateCuMemberGrade(rangeTableName, period);
 | 
			
		||||
        // 购买升级记录列表
 | 
			
		||||
        return baseMapper.queryCuMemberLevel(startDate, endDate, EUpgradeType.BUY_UPGRADE.getValue());
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @Override
 | 
			
		||||
    public List<CuMemberLevel> listAutoLevel(Date startDate, Date endDate) {
 | 
			
		||||
        // 自动升级记录列表
 | 
			
		||||
        return baseMapper.queryCuMemberLevel(startDate, endDate, EUpgradeType.AUTO_UPGRADE.getValue());
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			@ -80,7 +80,6 @@
 | 
			
		|||
            recommend_num       = 0,
 | 
			
		||||
            team_num            = 0,
 | 
			
		||||
            enable_status       = 1,
 | 
			
		||||
            pk_grade = (select pk_id from bd_grade where del_flag = 0 and grade_value = 20),
 | 
			
		||||
            region_address      = 0,
 | 
			
		||||
            big_box_num         = 0,
 | 
			
		||||
            small_box_num       = 0,
 | 
			
		||||
| 
						 | 
				
			
			@ -110,7 +109,6 @@
 | 
			
		|||
        a.team_consume_pv = b.team_consume_pv,
 | 
			
		||||
        a.team_consume_amount = b.team_consume_amount,
 | 
			
		||||
        a.recommend_num = b.recommend_num, a.team_num = b.team_num,
 | 
			
		||||
        a.pk_grade = b.pk_grade,
 | 
			
		||||
        a.enable_status = b.enable_status,
 | 
			
		||||
        a.big_box_num = b.big_box_num, a.small_box_num = b.small_box_num,
 | 
			
		||||
        a.big_team_pv = b.big_team_pv, a.small_team_pv = b.small_team_pv
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -98,29 +98,4 @@
 | 
			
		|||
        </if>
 | 
			
		||||
    </select>
 | 
			
		||||
 | 
			
		||||
    <update id="updateCuMemberLevel">
 | 
			
		||||
        merge into cu_member a
 | 
			
		||||
            using (
 | 
			
		||||
                select cm.pk_id, m.new_level pk_grade
 | 
			
		||||
                from cu_member cm
 | 
			
		||||
                         inner join(
 | 
			
		||||
                    select a.*
 | 
			
		||||
                    from cu_member_level a
 | 
			
		||||
                             inner join (
 | 
			
		||||
                        select pk_member, max(pk_id) pk_id
 | 
			
		||||
                        from cu_member_level
 | 
			
		||||
                        where del_flag = 0
 | 
			
		||||
                          and up_type = 4
 | 
			
		||||
                          and upgrade_time >= #{startDate,jdbcType=DATE}
 | 
			
		||||
                          and upgrade_time < #{endDate,jdbcType=DATE}
 | 
			
		||||
                        group by pk_member) b
 | 
			
		||||
                                        on a.pk_id = b.pk_id) m
 | 
			
		||||
                                   on cm.pk_id = m.pk_member
 | 
			
		||||
                where cm.pk_settle_grade < m.new_level
 | 
			
		||||
            ) b
 | 
			
		||||
            on (a.pk_id = b.pk_id)
 | 
			
		||||
            when matched then
 | 
			
		||||
                update set a.pk_settle_grade = b.pk_grade, a.modified_time = sysdate
 | 
			
		||||
    </update>
 | 
			
		||||
 | 
			
		||||
</mapper>
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -0,0 +1,269 @@
 | 
			
		|||
<?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.bonus.bonus.mapper.CuMemberBonusCoachMapper">
 | 
			
		||||
 | 
			
		||||
    <!-- 通用查询映射结果 -->
 | 
			
		||||
    <resultMap id="CuMemberBonusCoach" type="com.hzs.common.domain.member.ext.CuMemberBonusCoachExt">
 | 
			
		||||
        <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="CURRENT_GENERATION" property="currentGeneration"/>
 | 
			
		||||
        <result column="COACH_GENERATION" property="coachGeneration"/>
 | 
			
		||||
        <result column="COACH_NO_CAPPING" property="coachNoCapping"/>
 | 
			
		||||
        <result column="COACH_CAPPING" property="coachCapping"/>
 | 
			
		||||
        <result column="COACH_NORMAL_HALF" property="coachNormalHalf"/>
 | 
			
		||||
        <result column="COACH_NORMAL_REAL" property="coachNormalReal"/>
 | 
			
		||||
        <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="ORDER_CODE" property="orderCode"/>
 | 
			
		||||
        <result column="ORDER_TYPE" property="orderType"/>
 | 
			
		||||
        <result column="PK_SOURCE_COUNTRY" property="pkSourceCountry"/>
 | 
			
		||||
        <result column="SOURCE_COUNTRY_NAME" property="sourceCountryName"/>
 | 
			
		||||
        <result column="SOURCE_MEMBER_CODE" property="sourceMemberCode"/>
 | 
			
		||||
        <result column="SOURCE_MEMBER_NAME" property="sourceMemberName"/>
 | 
			
		||||
        <result column="PK_RATE" property="pkRate"/>
 | 
			
		||||
        <result column="ORDER_AMOUNT" property="orderAmount"/>
 | 
			
		||||
        <result column="ORDER_ACHIEVE" property="orderAchieve"/>
 | 
			
		||||
        <result column="MEMBER_CODE" property="memberCode"/>
 | 
			
		||||
        <result column="MEMBER_NAME" property="memberName"/>
 | 
			
		||||
        <result column="PK_SETTLE_GRADE" property="pkSettleGrade"/>
 | 
			
		||||
        <result column="PK_AWARDS" property="pkAwards"/>
 | 
			
		||||
        <result column="VERTEX_NAME" property="vertexName"/>
 | 
			
		||||
        <result column="TEAM_NAME" property="teamName"/>
 | 
			
		||||
        <result column="TEAM_CODE" property="teamCode"/>
 | 
			
		||||
        <result column="SETTLE_DATE" property="settleDate"/>
 | 
			
		||||
        <result column="SETTLE_COUNTRY" property="settleCountry"/>
 | 
			
		||||
        <result column="PERIOD" property="period"/>
 | 
			
		||||
        <result column="OUT_EXCHANGE_RATE" property="outExchangeRate"/>
 | 
			
		||||
 | 
			
		||||
        <result column="service_code" property="serviceCode"/>
 | 
			
		||||
        <result column="pk_vertex" property="pkVertex"/>
 | 
			
		||||
        <result column="nick_name" property="nickName"/>
 | 
			
		||||
    </resultMap>
 | 
			
		||||
 | 
			
		||||
    <insert id="batchInsertCuMemberBonusCoach">
 | 
			
		||||
        insert ALL
 | 
			
		||||
        <foreach item="item" index="index" collection="cuMemberBonusCoachList" separator=" ">
 | 
			
		||||
            into cu_member_bonus_coach(pk_bonus,pk_order,pk_bonus_items,income_status,
 | 
			
		||||
            cal_type,cal_achieve,cal_value,pretax_income,
 | 
			
		||||
            income_tax,real_income,current_generation,coach_generation,coach_no_capping,
 | 
			
		||||
            coach_capping,coach_normal_half,coach_normal_real,remark,
 | 
			
		||||
            income_ratio,income_dial_ratio,order_dial_ratio,pk_country,pk_creator)
 | 
			
		||||
            values
 | 
			
		||||
            (
 | 
			
		||||
            #{item.pkBonus},#{item.pkOrder},#{item.pkBonusItems},#{item.incomeStatus},
 | 
			
		||||
            #{item.calType},#{item.calAchieve},#{item.calValue},#{item.pretaxIncome},
 | 
			
		||||
            #{item.incomeTax},#{item.realIncome},#{item.currentGeneration},#{item.coachGeneration},
 | 
			
		||||
            #{item.coachNoCapping},#{item.coachCapping},#{item.coachNormalHalf},#{item.coachNormalReal},
 | 
			
		||||
            #{item.remark},#{item.incomeRatio},#{item.incomeDialRatio},#{item.orderDialRatio},
 | 
			
		||||
            #{item.pkCountry},#{item.pkCreator}
 | 
			
		||||
            )
 | 
			
		||||
        </foreach>
 | 
			
		||||
        SELECT 1 FROM dual
 | 
			
		||||
    </insert>
 | 
			
		||||
    <delete id="deleteCuMemberBonusCoach">
 | 
			
		||||
        delete
 | 
			
		||||
        from CU_MEMBER_BONUS_COACH
 | 
			
		||||
        where PK_BONUS in (
 | 
			
		||||
            select pk_id
 | 
			
		||||
            from cu_member_bonus
 | 
			
		||||
            where period = #{period}
 | 
			
		||||
              and grant_status <= 2)
 | 
			
		||||
    </delete>
 | 
			
		||||
 | 
			
		||||
    <select id="queryMemberBonusCoachByBonusItems" resultMap="CuMemberBonusCoach">
 | 
			
		||||
        select b.period,cp.settle_date,so.order_code,so.order_type,bt.short_name source_country_name,
 | 
			
		||||
        cu.member_code source_member_code,cu.member_name source_member_name,so.pk_rate,so.pk_country pk_source_country,bc.out_exchange_rate,so.order_amount,
 | 
			
		||||
        so.order_achieve,b.pk_country,b.pk_bonus_items,b.pretax_income,b.income_tax,b.real_income,b.income_status,
 | 
			
		||||
        tar.member_code,tar.member_name,bg.pk_transaction pk_settle_grade,ba.pk_transaction pk_awards,bv.vertex_name,ct.team_name,
 | 
			
		||||
        b.remark,b.income_ratio,b.income_dial_ratio,b.order_dial_ratio,b.current_generation,b.coach_generation,
 | 
			
		||||
        b.coach_no_capping,b.coach_capping,b.coach_normal_half,b.coach_normal_real,
 | 
			
		||||
        cu.service_code,
 | 
			
		||||
        cu.pk_vertex,
 | 
			
		||||
        cu.nick_name
 | 
			
		||||
        from sa_order so
 | 
			
		||||
        inner join (
 | 
			
		||||
        select cb.pk_member,cc.pk_order,cb.period,cb.pk_country,cc.pk_bonus_items,cc.income_status,cc.CAL_ACHIEVE,cc.pretax_income,cc.income_tax,cc.real_income,
 | 
			
		||||
        cc.remark,cc.income_ratio,cc.income_dial_ratio,cc.order_dial_ratio,cc.current_generation,cc.coach_generation,cc.coach_no_capping,
 | 
			
		||||
        cc.coach_capping,cc.coach_normal_half,cc.coach_normal_real from
 | 
			
		||||
        cu_member_bonus cb
 | 
			
		||||
        inner join cu_member_bonus_coach cc
 | 
			
		||||
        on cb.pk_id = cc.pk_bonus
 | 
			
		||||
        where cb.income_status=0 and cc.income_status = 0
 | 
			
		||||
        and cc.pk_bonus_items = #{pkBonusItems}
 | 
			
		||||
        <if test="pkBonus != null">
 | 
			
		||||
            and cc.pk_bonus = #{pkBonus}
 | 
			
		||||
        </if>
 | 
			
		||||
        <if test="period != null">
 | 
			
		||||
            and cb.period =#{period}
 | 
			
		||||
        </if>
 | 
			
		||||
        ) b
 | 
			
		||||
        on so.pk_id = b.pk_order
 | 
			
		||||
        inner join cu_member tar
 | 
			
		||||
        on b.pk_member = tar.pk_id
 | 
			
		||||
        inner join cu_member cu
 | 
			
		||||
        on so.pk_member = cu.pk_id
 | 
			
		||||
        inner join cu_member_settle_period cp
 | 
			
		||||
        on b.period = cp.pk_id
 | 
			
		||||
        left join bd_vertex bv
 | 
			
		||||
        on bv.pk_id = tar.pk_vertex
 | 
			
		||||
        left join cu_member_team ct
 | 
			
		||||
        on ct.pk_id = tar.pk_team_code
 | 
			
		||||
        left join bd_currency bc
 | 
			
		||||
        on bc.pk_id=so.pk_rate
 | 
			
		||||
        left join bd_grade bg
 | 
			
		||||
        on bg.pk_id=tar.pk_settle_grade
 | 
			
		||||
        left join bd_awards ba
 | 
			
		||||
        on ba.pk_id=tar.pk_awards
 | 
			
		||||
        left join bd_country bt
 | 
			
		||||
        on bt.pk_id=so.pk_country
 | 
			
		||||
        <where>
 | 
			
		||||
            1=1 and b.pk_member=#{pkMember}
 | 
			
		||||
            <if test="orderCode != null and orderCode != ''">
 | 
			
		||||
                and so.order_code like #{orderCode}|| '%'
 | 
			
		||||
            </if>
 | 
			
		||||
            <if test="sourceMemberCode != null and sourceMemberCode != ''">
 | 
			
		||||
                and (cu.member_code = #{sourceMemberCode} or cu.service_code = #{sourceMemberCode})
 | 
			
		||||
            </if>
 | 
			
		||||
            <if test="sourceMemberName != null and sourceMemberName != ''">
 | 
			
		||||
                and (cu.member_name = #{sourceMemberName} or cu.nick_name = #{sourceMemberName})
 | 
			
		||||
            </if>
 | 
			
		||||
            <if test="startDate != null">
 | 
			
		||||
                and cp.settle_date >= #{startDate, jdbcType=DATE}
 | 
			
		||||
            </if>
 | 
			
		||||
            <if test="endDate != null">
 | 
			
		||||
                and cp.settle_date < #{endDate, jdbcType=DATE}
 | 
			
		||||
            </if>
 | 
			
		||||
        </where>
 | 
			
		||||
        order by b.period,b.pk_bonus_items,b.real_income desc
 | 
			
		||||
    </select>
 | 
			
		||||
    <select id="queryMemberBonusCoachByBonusItemsForServer" resultMap="CuMemberBonusCoach">
 | 
			
		||||
        select b.period,cp.settle_date,so.order_code,so.order_type,bt.short_name source_country_name,
 | 
			
		||||
        cu.member_code source_member_code,cu.member_name source_member_name,so.pk_rate,bc.out_exchange_rate,so.order_amount,
 | 
			
		||||
        so.order_achieve,b.pk_country,b.pk_bonus_items,b.pretax_income,b.income_tax,b.real_income,b.income_status,
 | 
			
		||||
        tar.member_code,tar.member_name,bg.pk_transaction pk_settle_grade,ba.pk_transaction pk_awards,bv.vertex_name,ct.team_name,
 | 
			
		||||
        b.remark,b.income_ratio,b.income_dial_ratio,b.order_dial_ratio,b.current_generation,b.coach_generation,
 | 
			
		||||
        b.coach_no_capping,b.coach_capping,b.coach_normal_half,b.coach_normal_real,bct.short_name settle_country from sa_order so
 | 
			
		||||
        inner join (
 | 
			
		||||
        select cb.pk_member,cc.pk_order,cb.period,cb.pk_country,cc.pk_bonus_items,cc.income_status,cc.CAL_ACHIEVE,cc.pretax_income,cc.income_tax,cc.real_income,
 | 
			
		||||
        cc.remark,cc.income_ratio,cc.income_dial_ratio,cc.order_dial_ratio,cc.current_generation,cc.coach_generation,
 | 
			
		||||
        cc.coach_no_capping,cc.coach_capping,cc.coach_normal_half,cc.coach_normal_real from cu_member_bonus cb
 | 
			
		||||
        inner join cu_member_bonus_coach cc
 | 
			
		||||
        on cb.pk_id = cc.pk_bonus
 | 
			
		||||
        where 1=1
 | 
			
		||||
        <if test="bonusParam.period != null">
 | 
			
		||||
            and cb.period =#{bonusParam.period}
 | 
			
		||||
        </if>
 | 
			
		||||
        <if test="bonusParam.vertexList != null and bonusParam.vertexList.size >0">
 | 
			
		||||
            and exists(
 | 
			
		||||
            select 1 from (
 | 
			
		||||
            <foreach collection="bonusParam.vertexList" item="item" separator=" union ">
 | 
			
		||||
                select pk_id from cu_member
 | 
			
		||||
                where del_flag=0 and PAY_STATUS=1
 | 
			
		||||
                start with pk_id = #{item}
 | 
			
		||||
                connect by pk_parent = prior pk_id
 | 
			
		||||
            </foreach>
 | 
			
		||||
            <if test="bonusParam.teamList != null and bonusParam.teamList.size >0">
 | 
			
		||||
                union
 | 
			
		||||
                <foreach collection="bonusParam.teamList" item="item" separator=" union ">
 | 
			
		||||
                    select pk_id from cu_member
 | 
			
		||||
                    where del_flag=0 and PAY_STATUS=1
 | 
			
		||||
                    start with pk_id = #{item}
 | 
			
		||||
                    connect by pk_parent = prior pk_id
 | 
			
		||||
                </foreach>
 | 
			
		||||
            </if>
 | 
			
		||||
            ) a
 | 
			
		||||
            where a.pk_id = cb.pk_member
 | 
			
		||||
            )
 | 
			
		||||
        </if>
 | 
			
		||||
        ) b
 | 
			
		||||
        on so.pk_id = b.pk_order
 | 
			
		||||
        inner join cu_member tar
 | 
			
		||||
        on b.pk_member = tar.pk_id
 | 
			
		||||
        inner join cu_member cu
 | 
			
		||||
        on so.pk_member = cu.pk_id
 | 
			
		||||
        inner join cu_member_settle_period cp
 | 
			
		||||
        on b.period = cp.pk_id
 | 
			
		||||
        left join bd_vertex bv
 | 
			
		||||
        on bv.pk_id = tar.pk_vertex
 | 
			
		||||
        left join cu_member_team ct
 | 
			
		||||
        on ct.pk_id = tar.pk_team_code
 | 
			
		||||
        left join bd_currency bc
 | 
			
		||||
        on bc.pk_id=so.pk_rate
 | 
			
		||||
        left join bd_grade bg
 | 
			
		||||
        on bg.pk_id=tar.pk_settle_grade
 | 
			
		||||
        left join bd_awards ba
 | 
			
		||||
        on ba.pk_id=tar.pk_awards
 | 
			
		||||
        left join bd_country bt
 | 
			
		||||
        on bt.pk_id=so.pk_country
 | 
			
		||||
        left join bd_country bct
 | 
			
		||||
        on bct.pk_id=tar.pk_settle_country
 | 
			
		||||
        <where>
 | 
			
		||||
            1=1
 | 
			
		||||
            <if test="bonusParam.pkCountry != null">
 | 
			
		||||
                and tar.pk_settle_country = #{bonusParam.pkCountry}
 | 
			
		||||
            </if>
 | 
			
		||||
            <if test="bonusParam.orderType != null">
 | 
			
		||||
                and so.order_type = #{bonusParam.orderType}
 | 
			
		||||
            </if>
 | 
			
		||||
            <if test="bonusParam.pkVertex != null">
 | 
			
		||||
                and bv.pk_id = #{bonusParam.pkVertex}
 | 
			
		||||
            </if>
 | 
			
		||||
            <if test="bonusParam.pkTeamCode != null">
 | 
			
		||||
                and ct.pk_id =#{bonusParam.pkTeamCode}
 | 
			
		||||
            </if>
 | 
			
		||||
            <if test="bonusParam.sourceCountry != null">
 | 
			
		||||
                and bt.pk_id = #{bonusParam.sourceCountry}
 | 
			
		||||
            </if>
 | 
			
		||||
            <if test="bonusParam.incomeStatus != null">
 | 
			
		||||
                and b.income_status = #{bonusParam.incomeStatus}
 | 
			
		||||
            </if>
 | 
			
		||||
            <if test="bonusParam.orderCode != null and bonusParam.orderCode != ''">
 | 
			
		||||
                and so.order_code like #{bonusParam.orderCode}|| '%'
 | 
			
		||||
            </if>
 | 
			
		||||
            <if test="bonusParam.sourceMemberCode != null and bonusParam.sourceMemberCode != ''">
 | 
			
		||||
                and cu.member_code = #{bonusParam.sourceMemberCode}
 | 
			
		||||
            </if>
 | 
			
		||||
            <if test="bonusParam.sourceMemberName != null and bonusParam.sourceMemberName != ''">
 | 
			
		||||
                and cu.member_name = #{bonusParam.sourceMemberName}
 | 
			
		||||
            </if>
 | 
			
		||||
            <if test="bonusParam.memberCode != null and bonusParam.memberCode != ''">
 | 
			
		||||
                and tar.member_code = #{bonusParam.memberCode}
 | 
			
		||||
            </if>
 | 
			
		||||
            <if test="bonusParam.memberName != null and bonusParam.memberName != ''">
 | 
			
		||||
                and tar.member_name = #{bonusParam.memberName}
 | 
			
		||||
            </if>
 | 
			
		||||
            <if test="bonusParam.settleCountry != null">
 | 
			
		||||
                and tar.pk_settle_country = #{bonusParam.settleCountry}
 | 
			
		||||
            </if>
 | 
			
		||||
            <if test="bonusParam.startDate != null">
 | 
			
		||||
                and cp.settle_date >=#{bonusParam.startDate, jdbcType=DATE}
 | 
			
		||||
            </if>
 | 
			
		||||
            <if test="bonusParam.endDate != null">
 | 
			
		||||
                and cp.settle_date <#{bonusParam.endDate, jdbcType=DATE}
 | 
			
		||||
            </if>
 | 
			
		||||
        </where>
 | 
			
		||||
        <choose>
 | 
			
		||||
            <when test="bonusParam.sort == null or bonusParam.sort ==1">order by cp.settle_date desc, so.order_code,b.current_generation</when>
 | 
			
		||||
            <when test="bonusParam.sort ==2">order by tar.pk_vertex, b.real_income desc</when>
 | 
			
		||||
            <otherwise>order by tar.pk_teamcode</otherwise>
 | 
			
		||||
        </choose>
 | 
			
		||||
    </select>
 | 
			
		||||
 | 
			
		||||
</mapper>
 | 
			
		||||
| 
						 | 
				
			
			@ -0,0 +1,279 @@
 | 
			
		|||
<?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.bonus.bonus.mapper.CuMemberBonusExpandMapper">
 | 
			
		||||
 | 
			
		||||
    <!-- 通用查询映射结果 -->
 | 
			
		||||
    <resultMap id="CuMemberBonusExpand" type="com.hzs.common.domain.member.ext.CuMemberBonusExpandExt">
 | 
			
		||||
        <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="CURRENT_TOUCH" property="currentTouch"/>
 | 
			
		||||
        <result column="EXPAND_TOUCH" property="expandTouch"/>
 | 
			
		||||
        <result column="EXPAND_NO_CAPPING" property="expandNoCapping"/>
 | 
			
		||||
        <result column="EXPAND_CAPPING" property="expandCapping"/>
 | 
			
		||||
        <result column="EXPAND_NORMAL_HALF" property="expandNormalHalf"/>
 | 
			
		||||
        <result column="EXPAND_NORMAL_REAL" property="expandNormalReal"/>
 | 
			
		||||
        <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="ORDER_CODE" property="orderCode"/>
 | 
			
		||||
        <result column="ORDER_TYPE" property="orderType"/>
 | 
			
		||||
        <result column="PK_SOURCE_COUNTRY" property="pkSourceCountry"/>
 | 
			
		||||
        <result column="SOURCE_COUNTRY_NAME" property="sourceCountryName"/>
 | 
			
		||||
        <result column="SOURCE_MEMBER_CODE" property="sourceMemberCode"/>
 | 
			
		||||
        <result column="SOURCE_MEMBER_NAME" property="sourceMemberName"/>
 | 
			
		||||
        <result column="PK_RATE" property="pkRate"/>
 | 
			
		||||
        <result column="ORDER_AMOUNT" property="orderAmount"/>
 | 
			
		||||
        <result column="ORDER_ACHIEVE" property="orderAchieve"/>
 | 
			
		||||
        <result column="MEMBER_CODE" property="memberCode"/>
 | 
			
		||||
        <result column="MEMBER_NAME" property="memberName"/>
 | 
			
		||||
        <result column="PK_SETTLE_GRADE" property="pkSettleGrade"/>
 | 
			
		||||
        <result column="PK_AWARDS" property="pkAwards"/>
 | 
			
		||||
        <result column="VERTEX_NAME" property="vertexName"/>
 | 
			
		||||
        <result column="TEAM_NAME" property="teamName"/>
 | 
			
		||||
        <result column="TEAM_CODE" property="teamCode"/>
 | 
			
		||||
        <result column="SETTLE_DATE" property="settleDate"/>
 | 
			
		||||
        <result column="SETTLE_COUNTRY" property="settleCountry"/>
 | 
			
		||||
        <result column="PERIOD" property="period"/>
 | 
			
		||||
        <result column="OUT_EXCHANGE_RATE" property="outExchangeRate"/>
 | 
			
		||||
        <result column="add_touch" property="addTouch" />
 | 
			
		||||
        <result column="service_code" property="serviceCode"/>
 | 
			
		||||
        <result column="pk_vertex" property="pkVertex"/>
 | 
			
		||||
        <result column="nick_name" property="nickName"/>
 | 
			
		||||
    </resultMap>
 | 
			
		||||
 | 
			
		||||
    <insert id="batchInsertCuMemberBonusExpand">
 | 
			
		||||
        insert ALL
 | 
			
		||||
        <foreach item="item" index="index" collection="cuMemberBonusExpandList" separator=" ">
 | 
			
		||||
            into cu_member_bonus_expand(pk_bonus,pk_order,pk_bonus_items,income_status,
 | 
			
		||||
            cal_type,cal_achieve,cal_value,pretax_income,
 | 
			
		||||
            income_tax,real_income,current_touch,expand_touch,add_touch,expand_no_capping,
 | 
			
		||||
            expand_capping,expand_normal_half,expand_normal_real,remark,
 | 
			
		||||
            income_ratio,income_dial_ratio,order_dial_ratio,pk_country,pk_creator)
 | 
			
		||||
            values
 | 
			
		||||
            (
 | 
			
		||||
            #{item.pkBonus},#{item.pkOrder},#{item.pkBonusItems},#{item.incomeStatus},
 | 
			
		||||
            #{item.calType},#{item.calAchieve},#{item.calValue},#{item.pretaxIncome},
 | 
			
		||||
            #{item.incomeTax},#{item.realIncome},#{item.currentTouch},#{item.expandTouch},#{item.addTouch,jdbcType=NUMERIC},
 | 
			
		||||
            #{item.expandNoCapping},#{item.expandCapping},#{item.expandNormalHalf},#{item.expandNormalReal},
 | 
			
		||||
            #{item.remark},#{item.incomeRatio},#{item.incomeDialRatio},#{item.orderDialRatio},
 | 
			
		||||
            #{item.pkCountry},#{item.pkCreator}
 | 
			
		||||
            )
 | 
			
		||||
        </foreach>
 | 
			
		||||
        SELECT 1 FROM dual
 | 
			
		||||
    </insert>
 | 
			
		||||
 | 
			
		||||
    <delete id="deleteCuMemberBonusExpand">
 | 
			
		||||
        delete
 | 
			
		||||
        from CU_MEMBER_BONUS_EXPAND
 | 
			
		||||
        where PK_BONUS in (
 | 
			
		||||
            select pk_id
 | 
			
		||||
            from cu_member_bonus
 | 
			
		||||
            where period = #{period} and grant_status <= 2)
 | 
			
		||||
    </delete>
 | 
			
		||||
 | 
			
		||||
    <select id="queryMemberBonusExpandByBonusItems" resultMap="CuMemberBonusExpand">
 | 
			
		||||
        select b.period,cp.settle_date,so.order_code,so.order_type,bt.short_name source_country_name,
 | 
			
		||||
        cu.member_code source_member_code,cu.member_name source_member_name,so.pk_rate,so.pk_country pk_source_country,bc.out_exchange_rate,so.order_amount,
 | 
			
		||||
        so.order_achieve,b.pk_country,b.pk_bonus_items,b.pretax_income,b.income_tax,b.real_income,b.income_status,
 | 
			
		||||
        tar.member_code,tar.member_name,bg.pk_transaction pk_settle_grade,ba.pk_transaction pk_awards,bv.vertex_name,ct.team_name,
 | 
			
		||||
        b.current_touch,b.expand_touch,b.expand_no_capping,b.expand_capping,b.expand_normal_half,b.expand_normal_real,
 | 
			
		||||
        b.remark,b.income_ratio,b.income_dial_ratio,b.order_dial_ratio,
 | 
			
		||||
        cu.service_code,
 | 
			
		||||
        cu.pk_vertex,
 | 
			
		||||
        cu.nick_name
 | 
			
		||||
        from sa_order so
 | 
			
		||||
        inner join (
 | 
			
		||||
        select cb.pk_member,ce.pk_order,cb.period,cb.pk_country,ce.pk_bonus_items,ce.income_status,ce.cal_achieve,ce.pretax_income,ce.income_tax,ce.real_income,
 | 
			
		||||
        ce.current_touch,ce.expand_touch,ce.expand_no_capping,ce.expand_capping,ce.expand_normal_half,ce.expand_normal_real,
 | 
			
		||||
        ce.remark,ce.income_ratio,ce.income_dial_ratio,ce.order_dial_ratio from cu_member_bonus cb
 | 
			
		||||
        inner join cu_member_bonus_expand ce
 | 
			
		||||
        on cb.pk_id = ce.pk_bonus
 | 
			
		||||
        where cb.income_status=0 and ce.income_status = 0
 | 
			
		||||
        and ce.pk_bonus_items = #{pkBonusItems}
 | 
			
		||||
        <if test="pkBonus != null">
 | 
			
		||||
            and ce.pk_bonus = #{pkBonus}
 | 
			
		||||
        </if>
 | 
			
		||||
        <if test="period != null">
 | 
			
		||||
            and cb.period =#{period}
 | 
			
		||||
        </if>
 | 
			
		||||
        <if test="pkBonusItems != null">
 | 
			
		||||
            and ce.pk_bonus_items = #{pkBonusItems}
 | 
			
		||||
        </if>
 | 
			
		||||
        ) b
 | 
			
		||||
        on so.pk_id = b.pk_order
 | 
			
		||||
        inner join cu_member tar
 | 
			
		||||
        on b.pk_member = tar.pk_id
 | 
			
		||||
        inner join cu_member cu
 | 
			
		||||
        on so.pk_member = cu.pk_id
 | 
			
		||||
        inner join cu_member_settle_period cp
 | 
			
		||||
        on b.period = cp.pk_id
 | 
			
		||||
        left join bd_vertex bv
 | 
			
		||||
        on bv.pk_id = tar.pk_vertex
 | 
			
		||||
        left join cu_member_team ct
 | 
			
		||||
        on ct.pk_id = tar.pk_team_code
 | 
			
		||||
        left join bd_currency bc
 | 
			
		||||
        on bc.pk_id=so.pk_rate
 | 
			
		||||
        left join bd_grade bg
 | 
			
		||||
        on bg.pk_id=tar.pk_settle_grade
 | 
			
		||||
        left join bd_awards ba
 | 
			
		||||
        on ba.pk_id=tar.pk_awards
 | 
			
		||||
        left join bd_country bt
 | 
			
		||||
        on bt.pk_id=so.pk_country
 | 
			
		||||
        <where>
 | 
			
		||||
            1=1 and b.pk_member=#{pkMember}
 | 
			
		||||
            <if test="orderCode != null and orderCode != ''">
 | 
			
		||||
                and so.order_code like #{orderCode}|| '%'
 | 
			
		||||
            </if>
 | 
			
		||||
            <if test="sourceMemberCode != null and sourceMemberCode != ''">
 | 
			
		||||
                and (cu.member_code = #{sourceMemberCode} or cu.service_code = #{sourceMemberCode})
 | 
			
		||||
            </if>
 | 
			
		||||
            <if test="sourceMemberName != null and sourceMemberName != ''">
 | 
			
		||||
                and (cu.member_name = #{sourceMemberName} or cu.nick_name = #{sourceMemberName})
 | 
			
		||||
            </if>
 | 
			
		||||
            <if test="startDate != null">
 | 
			
		||||
                and cp.settle_date >= #{startDate, jdbcType=DATE}
 | 
			
		||||
            </if>
 | 
			
		||||
            <if test="endDate != null">
 | 
			
		||||
                and cp.settle_date < #{endDate, jdbcType=DATE}
 | 
			
		||||
            </if>
 | 
			
		||||
        </where>
 | 
			
		||||
        order by b.period,b.pk_bonus_items,b.real_income desc
 | 
			
		||||
    </select>
 | 
			
		||||
    <select id="queryMemberBonusExpandByBonusItemsForServer" resultMap="CuMemberBonusExpand">
 | 
			
		||||
        select b.period,cp.settle_date,so.order_code,so.order_type,bt.short_name source_country_name,
 | 
			
		||||
        cu.member_code source_member_code,cu.member_name source_member_name,so.pk_rate,bc.out_exchange_rate,so.order_amount,
 | 
			
		||||
        so.order_achieve,b.pk_country,b.pk_bonus_items,b.pretax_income,b.income_tax,b.real_income,b.income_status,
 | 
			
		||||
        tar.member_code,tar.member_name,bg.pk_transaction pk_settle_grade,ba.pk_transaction pk_awards,bv.vertex_name,ct.team_name,
 | 
			
		||||
        b.remark,b.income_ratio,b.income_dial_ratio,b.order_dial_ratio,b.current_touch,b.expand_touch,
 | 
			
		||||
        b.expand_no_capping,b.expand_capping,b.expand_normal_half,b.expand_normal_real,bct.short_name settle_country from (
 | 
			
		||||
        select pk_id,pk_member,order_code,order_type,pk_rate,pk_country,order_amount,order_achieve from sa_order
 | 
			
		||||
        union
 | 
			
		||||
        select pk_id,pk_member,order_code,order_type,pk_rate,pk_country,order_amount,order_achieve from sa_t_order
 | 
			
		||||
        ) so
 | 
			
		||||
        inner join (
 | 
			
		||||
        select cb.pk_member,ce.pk_order,cb.period,cb.pk_country,ce.pk_bonus_items,ce.income_status,ce.CAL_ACHIEVE,ce.pretax_income,ce.income_tax,ce.real_income,
 | 
			
		||||
        ce.remark,ce.income_ratio,ce.income_dial_ratio,ce.order_dial_ratio,ce.current_touch,ce.expand_touch,
 | 
			
		||||
        ce.expand_no_capping,ce.expand_capping,ce.expand_normal_half,ce.expand_normal_real from
 | 
			
		||||
        cu_member_bonus cb
 | 
			
		||||
        inner join cu_member_bonus_expand ce
 | 
			
		||||
        on cb.pk_id = ce.pk_bonus
 | 
			
		||||
        where 1=1
 | 
			
		||||
        <if test="bonusParam.period != null">
 | 
			
		||||
            and cb.period =#{bonusParam.period}
 | 
			
		||||
        </if>
 | 
			
		||||
        <if test="bonusParam.pkBonusItems != null">
 | 
			
		||||
            and ce.pk_bonus_items = #{bonusParam.pkBonusItems}
 | 
			
		||||
        </if>
 | 
			
		||||
        <if test="bonusParam.vertexList != null and bonusParam.vertexList.size >0">
 | 
			
		||||
            and exists(
 | 
			
		||||
            select 1 from (
 | 
			
		||||
            <foreach collection="bonusParam.vertexList" item="item" separator=" union ">
 | 
			
		||||
                select pk_id from cu_member
 | 
			
		||||
                where del_flag=0 and PAY_STATUS=1
 | 
			
		||||
                start with pk_id = #{item}
 | 
			
		||||
                connect by pk_parent = prior pk_id
 | 
			
		||||
            </foreach>
 | 
			
		||||
            <if test="bonusParam.teamList != null and bonusParam.teamList.size >0">
 | 
			
		||||
                union
 | 
			
		||||
                <foreach collection="bonusParam.teamList" item="item" separator=" union ">
 | 
			
		||||
                    select pk_id from cu_member
 | 
			
		||||
                    where del_flag=0 and PAY_STATUS=1
 | 
			
		||||
                    start with pk_id = #{item}
 | 
			
		||||
                    connect by pk_parent = prior pk_id
 | 
			
		||||
                </foreach>
 | 
			
		||||
            </if>
 | 
			
		||||
            ) a
 | 
			
		||||
            where a.pk_id = cb.pk_member
 | 
			
		||||
            )
 | 
			
		||||
        </if>
 | 
			
		||||
        ) b
 | 
			
		||||
        on so.pk_id = b.pk_order
 | 
			
		||||
        inner join cu_member tar
 | 
			
		||||
        on b.pk_member = tar.pk_id
 | 
			
		||||
        inner join cu_member cu
 | 
			
		||||
        on so.pk_member = cu.pk_id
 | 
			
		||||
        inner join cu_member_settle_period cp
 | 
			
		||||
        on b.period = cp.pk_id
 | 
			
		||||
        left join bd_vertex bv
 | 
			
		||||
        on bv.pk_id = tar.pk_vertex
 | 
			
		||||
        left join cu_member_team ct
 | 
			
		||||
        on ct.pk_id = tar.pk_team_code
 | 
			
		||||
        left join bd_currency bc
 | 
			
		||||
        on bc.pk_id=so.pk_rate
 | 
			
		||||
        left join bd_grade bg
 | 
			
		||||
        on bg.pk_id=tar.pk_settle_grade
 | 
			
		||||
        left join bd_awards ba
 | 
			
		||||
        on ba.pk_id=tar.pk_awards
 | 
			
		||||
        left join bd_country bt
 | 
			
		||||
        on bt.pk_id=so.pk_country
 | 
			
		||||
        left join bd_country bct
 | 
			
		||||
        on bct.pk_id=tar.pk_settle_country
 | 
			
		||||
        <where>
 | 
			
		||||
            1=1
 | 
			
		||||
            <if test="bonusParam.pkCountry != null">
 | 
			
		||||
                and tar.pk_settle_country = #{bonusParam.pkCountry}
 | 
			
		||||
            </if>
 | 
			
		||||
            <if test="bonusParam.orderType != null">
 | 
			
		||||
                and so.order_type = #{bonusParam.orderType}
 | 
			
		||||
            </if>
 | 
			
		||||
            <if test="bonusParam.pkVertex != null">
 | 
			
		||||
                and bv.pk_id = #{bonusParam.pkVertex}
 | 
			
		||||
            </if>
 | 
			
		||||
            <if test="bonusParam.pkTeamCode != null">
 | 
			
		||||
                and ct.pk_id =#{bonusParam.pkTeamCode}
 | 
			
		||||
            </if>
 | 
			
		||||
            <if test="bonusParam.sourceCountry != null">
 | 
			
		||||
                and bt.pk_id = #{bonusParam.sourceCountry}
 | 
			
		||||
            </if>
 | 
			
		||||
            <if test="bonusParam.incomeStatus != null">
 | 
			
		||||
                and b.income_status = #{bonusParam.incomeStatus}
 | 
			
		||||
            </if>
 | 
			
		||||
            <if test="bonusParam.orderCode != null and bonusParam.orderCode != ''">
 | 
			
		||||
                and so.order_code like #{bonusParam.orderCode}|| '%'
 | 
			
		||||
            </if>
 | 
			
		||||
            <if test="bonusParam.sourceMemberCode != null and bonusParam.sourceMemberCode != ''">
 | 
			
		||||
                and cu.member_code = #{bonusParam.sourceMemberCode}
 | 
			
		||||
            </if>
 | 
			
		||||
            <if test="bonusParam.sourceMemberName != null and bonusParam.sourceMemberName != ''">
 | 
			
		||||
                and cu.member_name = #{bonusParam.sourceMemberName}
 | 
			
		||||
            </if>
 | 
			
		||||
            <if test="bonusParam.memberCode != null and bonusParam.memberCode != ''">
 | 
			
		||||
                and tar.member_code = #{bonusParam.memberCode}
 | 
			
		||||
            </if>
 | 
			
		||||
            <if test="bonusParam.memberName != null and bonusParam.memberName != ''">
 | 
			
		||||
                and tar.member_name = #{bonusParam.memberName}
 | 
			
		||||
            </if>
 | 
			
		||||
            <if test="bonusParam.settleCountry != null">
 | 
			
		||||
                and tar.pk_settle_country = #{bonusParam.settleCountry}
 | 
			
		||||
            </if>
 | 
			
		||||
            <if test="bonusParam.startDate != null">
 | 
			
		||||
                and cp.settle_date >=#{bonusParam.startDate, jdbcType=DATE}
 | 
			
		||||
            </if>
 | 
			
		||||
            <if test="bonusParam.endDate != null">
 | 
			
		||||
                and cp.settle_date <#{bonusParam.endDate, jdbcType=DATE}
 | 
			
		||||
            </if>
 | 
			
		||||
        </where>
 | 
			
		||||
        <choose>
 | 
			
		||||
            <when test="bonusParam.sort == null or bonusParam.sort ==1">order by cp.settle_date desc, so.order_code,b.current_touch</when>
 | 
			
		||||
            <when test="bonusParam.sort ==2">order by tar.pk_vertex, b.real_income desc</when>
 | 
			
		||||
            <otherwise>order by tar.pk_teamcode</otherwise>
 | 
			
		||||
        </choose>
 | 
			
		||||
    </select>
 | 
			
		||||
 | 
			
		||||
</mapper>
 | 
			
		||||
| 
						 | 
				
			
			@ -1,53 +0,0 @@
 | 
			
		|||
<?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.bonus.detail.mapper.CuMemberGradeMapper">
 | 
			
		||||
 | 
			
		||||
    <!-- 通用查询映射结果 -->
 | 
			
		||||
    <resultMap id="CuMemberGrade" type="com.hzs.common.domain.member.detail.CuMemberGrade">
 | 
			
		||||
        <id column="PK_ID" property="pkId"/>
 | 
			
		||||
        <result column="DEL_FLAG" property="delFlag"/>
 | 
			
		||||
        <result column="CREATION_TIME" property="creationTime"/>
 | 
			
		||||
        <result column="MODIFIED_TIME" property="modifiedTime"/>
 | 
			
		||||
        <result column="PK_COUNTRY" property="pkCountry"/>
 | 
			
		||||
        <result column="PK_CREATOR" property="pkCreator"/>
 | 
			
		||||
        <result column="PK_MODIFIED" property="pkModified"/>
 | 
			
		||||
        <result column="PK_MEMBER" property="pkMember"/>
 | 
			
		||||
        <result column="PERIOD" property="period"/>
 | 
			
		||||
        <result column="UP_TYPE" property="upType"/>
 | 
			
		||||
        <result column="OLD_LEVEL" property="oldLevel"/>
 | 
			
		||||
        <result column="NEW_LEVEL" property="newLevel"/>
 | 
			
		||||
        <result column="REMARK" property="remark"/>
 | 
			
		||||
    </resultMap>
 | 
			
		||||
 | 
			
		||||
    <update id="updateCuMemberGrade">
 | 
			
		||||
        merge into ${rangeTableName} a
 | 
			
		||||
            using (
 | 
			
		||||
                select a.pk_member, max(a.new_level) pk_grade
 | 
			
		||||
                from cu_member_grade a
 | 
			
		||||
                         inner join(
 | 
			
		||||
                    select pk_member, max(nvl(modified_time, creation_time)) creation_time
 | 
			
		||||
                    from cu_member_grade
 | 
			
		||||
                    where period = #{period}
 | 
			
		||||
                      and del_flag = 0
 | 
			
		||||
                      and up_type = 2
 | 
			
		||||
                    group by pk_member) b
 | 
			
		||||
                                   on a.pk_member = b.pk_member and nvl(a.modified_time, a.creation_time) = b.creation_time
 | 
			
		||||
                group by a.pk_member
 | 
			
		||||
            ) b
 | 
			
		||||
            on (a.pk_member = b.pk_member)
 | 
			
		||||
            when matched then
 | 
			
		||||
                update set
 | 
			
		||||
                    a.pk_grade = b.pk_grade
 | 
			
		||||
    </update>
 | 
			
		||||
 | 
			
		||||
    <select id="queryCuMemberLevel" resultType="com.hzs.common.domain.member.detail.CuMemberLevel">
 | 
			
		||||
        select *
 | 
			
		||||
        from cu_member_level
 | 
			
		||||
        where del_flag = 0
 | 
			
		||||
          and up_type = #{upType}
 | 
			
		||||
          and upgrade_time >= #{startDate,jdbcType=DATE}
 | 
			
		||||
          and upgrade_time < #{endDate,jdbcType=DATE}
 | 
			
		||||
        order by upgrade_time
 | 
			
		||||
    </select>
 | 
			
		||||
 | 
			
		||||
</mapper>
 | 
			
		||||
| 
						 | 
				
			
			@ -50,9 +50,9 @@
 | 
			
		|||
        <result column="CREATOR_CODE" property="creatorCode"/>
 | 
			
		||||
        <result column="PK_SETTLE_COUNTRY" property="pkSettleCountry"/>
 | 
			
		||||
        <result column="PK_CENTER_CODE" property="pkCenterCode"/>
 | 
			
		||||
        <result column="PK_STORE_LEVEL" property="pkStoreLevel"/>
 | 
			
		||||
        <result column="IN_EXCHANGE_RATE" property="inExchangeRate"/>
 | 
			
		||||
        <result column="PK_CORP" property="pkCorp"/>
 | 
			
		||||
        <result column="pk_grade" property="pkGrade"/>
 | 
			
		||||
        <collection property="orderWaresExtList" ofType="com.hzs.common.domain.sale.ext.SaOrderWaresExt">
 | 
			
		||||
            <result column="ITEMS_ID" property="pkId"/>
 | 
			
		||||
            <result column="WARES_QUANTITY" property="waresQuantity"/>
 | 
			
		||||
| 
						 | 
				
			
			@ -106,7 +106,6 @@
 | 
			
		|||
        so.pk_creator,
 | 
			
		||||
        so.consume_amount,
 | 
			
		||||
        so.box_num,
 | 
			
		||||
        cml.new_level pk_grade,
 | 
			
		||||
        nvl(st.pk_id,0) items_id,
 | 
			
		||||
        nvl(st.pk_order,0) pk_order,
 | 
			
		||||
        nvl(st.pk_wares,0) pk_wares,
 | 
			
		||||
| 
						 | 
				
			
			@ -115,10 +114,6 @@
 | 
			
		|||
        nvl(st.wares_quantity,0) wares_quantity,
 | 
			
		||||
        nvl(bw.area_income, 0) area_income
 | 
			
		||||
        from sa_order so
 | 
			
		||||
        left join cu_member_level cml
 | 
			
		||||
        on cml.pk_member = so.pk_member
 | 
			
		||||
        and cml.pk_order = so.pk_id
 | 
			
		||||
        and cml.del_flag = 0
 | 
			
		||||
        left join sa_order_wares st
 | 
			
		||||
        on so.pk_id = st.pk_order and st.wares_price > 0
 | 
			
		||||
        left join bd_wares bw
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -21,6 +21,30 @@ public interface CuMemberTreeMapper extends BaseMapper<CuMemberTree> {
 | 
			
		|||
     */
 | 
			
		||||
    Integer queryExistOracleTable(String tableName);
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * 查询会员结算表,查询出结算表中会员伞下左右区满足等级
 | 
			
		||||
     *
 | 
			
		||||
     * @param settleTableName 结算表
 | 
			
		||||
     * @param awardsValue     验证等级对应的值
 | 
			
		||||
     * @param placeDept       部门
 | 
			
		||||
     * @param pkMember        会员
 | 
			
		||||
     */
 | 
			
		||||
    Integer queryCuMemberSettlePlaceUnderUmbrella(@Param("settleTableName") String settleTableName,
 | 
			
		||||
                                                  @Param("awardsValue") Integer awardsValue,
 | 
			
		||||
                                                  @Param("placeDept") Integer placeDept,
 | 
			
		||||
                                                  @Param("pkMember") Long pkMember);
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * 查询会员结算表,查询出结算表中会员血缘关系满足等级
 | 
			
		||||
     *
 | 
			
		||||
     * @param settleTableName 结算表
 | 
			
		||||
     * @param pkMember        会员
 | 
			
		||||
     */
 | 
			
		||||
    Integer queryCuMemberSettleBloodUnderUmbrella(@Param("settleTableName") String settleTableName,
 | 
			
		||||
                                                  @Param("awardsValue") Integer awardsValue,
 | 
			
		||||
                                                  @Param("placeDept") Integer placeDept,
 | 
			
		||||
                                                  @Param("pkMember") Long pkMember);
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * 根据pkmember查询
 | 
			
		||||
     *
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -19,6 +19,24 @@ public interface ICuMemberTreeService extends IService<CuMemberTree> {
 | 
			
		|||
     */
 | 
			
		||||
    Integer queryExistOracleTable(String tableName);
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * 查询会员结算表,查询出结算表中会员伞下左右区满足等级
 | 
			
		||||
     *
 | 
			
		||||
     * @param settleTableName 结算表
 | 
			
		||||
     * @param placeDept       部门
 | 
			
		||||
     * @param awardsValue     奖衔对应的值
 | 
			
		||||
     * @param pkMember        会员
 | 
			
		||||
     */
 | 
			
		||||
    Boolean queryCuMemberSettlePlaceUnderUmbrella(String settleTableName, Integer awardsValue, Integer placeDept, Long pkMember);
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * 查询会员结算表,查询出结算表中会员血缘关系满足等级
 | 
			
		||||
     *
 | 
			
		||||
     * @param settleTableName 结算表
 | 
			
		||||
     * @param pkMember        会员
 | 
			
		||||
     */
 | 
			
		||||
    Boolean queryCuMemberSettleBloodUnderUmbrella(String settleTableName, Integer awardsValue, Integer placeDept, Long pkMember);
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * 根据pkmember查询
 | 
			
		||||
     *
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -26,6 +26,16 @@ public class CuMemberTreeServiceImpl extends ServiceImpl<CuMemberTreeMapper, CuM
 | 
			
		|||
        return baseMapper.queryExistOracleTable(tableName);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @Override
 | 
			
		||||
    public Boolean queryCuMemberSettlePlaceUnderUmbrella(String settleTableName, Integer awardsValue, Integer placeDept, Long pkMember) {
 | 
			
		||||
        return baseMapper.queryCuMemberSettlePlaceUnderUmbrella(settleTableName, awardsValue, placeDept, pkMember) > 0;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @Override
 | 
			
		||||
    public Boolean queryCuMemberSettleBloodUnderUmbrella(String settleTableName, Integer awardsValue, Integer placeDept, Long pkMember) {
 | 
			
		||||
        return baseMapper.queryCuMemberSettleBloodUnderUmbrella(settleTableName, awardsValue, placeDept, pkMember) > 0;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @Override
 | 
			
		||||
    public CuMemberSettleExt queryCuMemberTreeByPkMemberTable(String settleTableName, Long pkMember) {
 | 
			
		||||
        return baseMapper.queryCuMemberTreeByPkMemberTable(settleTableName, pkMember);
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1500,7 +1500,7 @@ public class CuMemberBusinessServiceImpl implements ICuMemberBusinessService {
 | 
			
		|||
 | 
			
		||||
        // 保存会员等级变动
 | 
			
		||||
        saveLevelUpgrade(cuMember, EUpgradeType.BUY_UPGRADE.getValue(), saOrder, 0);
 | 
			
		||||
        // 判断处理推荐人等级
 | 
			
		||||
        // 判断推送MQ处理推荐人等级
 | 
			
		||||
        handleParentUpgrade(cuMember, saOrder);
 | 
			
		||||
 | 
			
		||||
        this.handleRetailMemberAccount(saOrder, cuMemberAccountExt);
 | 
			
		||||
| 
						 | 
				
			
			@ -1516,7 +1516,7 @@ public class CuMemberBusinessServiceImpl implements ICuMemberBusinessService {
 | 
			
		|||
            // 保存会员等级变动(如果旧等级和新等级相同,则不记录)
 | 
			
		||||
            saveLevelUpgrade(cuMember, EUpgradeType.BUY_UPGRADE.getValue(), saOrder, saOrder.getPkGradeOld());
 | 
			
		||||
        }
 | 
			
		||||
        // 判断处理推荐人等级
 | 
			
		||||
        // 判断推送MQ处理推荐人等级
 | 
			
		||||
        handleParentUpgrade(cuMember, saOrder);
 | 
			
		||||
 | 
			
		||||
        this.handleRetailMemberAccount(saOrder, cuMemberAccountExt);
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -2494,9 +2494,6 @@ public class CuMemberServiceImpl extends ServiceImpl<CuMemberMapper, CuMember> i
 | 
			
		|||
                    // 指定会员可见
 | 
			
		||||
                    isShowWares = pkMemberList.contains(showWaresDTO.getLoginMember());
 | 
			
		||||
                }
 | 
			
		||||
                if (isShowWares) {
 | 
			
		||||
                    break;
 | 
			
		||||
                }
 | 
			
		||||
            }
 | 
			
		||||
            resultMap.put(showWaresDTO.getPkWares(), isShowWares);
 | 
			
		||||
        }
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -2,10 +2,44 @@ package com.hzs.member.detail.mapper;
 | 
			
		|||
 | 
			
		||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 | 
			
		||||
import com.hzs.common.domain.member.detail.CuMemberAwards;
 | 
			
		||||
import com.hzs.common.domain.member.detail.ext.CuMemberAwardsExt;
 | 
			
		||||
import org.apache.ibatis.annotations.Param;
 | 
			
		||||
 | 
			
		||||
import java.util.List;
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * 会员信息-奖衔升级记录 Mapper 接口
 | 
			
		||||
 */
 | 
			
		||||
public interface CuMemberAwardsMapper extends BaseMapper<CuMemberAwards> {
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * 批量更新会员奖衔记录,此方法用于奖金结算,批量更新为删除状态,留存奖衔降级记录
 | 
			
		||||
     *
 | 
			
		||||
     * @param cuMemberAwardsList 更新的人
 | 
			
		||||
     * @param period             期间
 | 
			
		||||
     */
 | 
			
		||||
    Integer updateBatchCuMemberAwards(@Param("cuMemberAwardsList") List<CuMemberAwards> cuMemberAwardsList, @Param("period") Integer period);
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * 查询会员最后一条奖衔升级记录
 | 
			
		||||
     *
 | 
			
		||||
     * @param cuMemberAwardsList 奖衔升级记录
 | 
			
		||||
     */
 | 
			
		||||
    List<CuMemberAwards> queryLastCuMemberAwards(@Param("cuMemberAwardsList") List<?> cuMemberAwardsList);
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * 批量插入奖衔记录
 | 
			
		||||
     *
 | 
			
		||||
     * @param cuMemberAwardsList 需要插入的奖衔列表
 | 
			
		||||
     */
 | 
			
		||||
    Integer saveBatchCuMemberAwards(@Param("cuMemberAwardsList") List<CuMemberAwards> cuMemberAwardsList);
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * 查询手动升级的最新一条
 | 
			
		||||
     *
 | 
			
		||||
     * @param pkMember 会员ID
 | 
			
		||||
     * @return
 | 
			
		||||
     */
 | 
			
		||||
    CuMemberAwardsExt queryLastManualAwards(@Param("pkMember") Long pkMember);
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -3,8 +3,10 @@ package com.hzs.member.detail.provider;
 | 
			
		|||
import com.hzs.common.core.domain.R;
 | 
			
		||||
import com.hzs.common.domain.member.base.CuMemberRegister;
 | 
			
		||||
import com.hzs.common.domain.member.detail.CuMemberLevel;
 | 
			
		||||
import com.hzs.common.domain.member.detail.ext.CuMemberAwardsExt;
 | 
			
		||||
import com.hzs.member.base.service.ICuMemberRegisterService;
 | 
			
		||||
import com.hzs.member.detail.ICuMemberDetailServiceApi;
 | 
			
		||||
import com.hzs.member.detail.service.ICuMemberAwardsService;
 | 
			
		||||
import com.hzs.member.detail.service.ICuMemberLevelService;
 | 
			
		||||
import org.apache.dubbo.config.annotation.DubboService;
 | 
			
		||||
import org.springframework.beans.factory.annotation.Autowired;
 | 
			
		||||
| 
						 | 
				
			
			@ -20,6 +22,8 @@ public class CuMemberDetailProvider implements ICuMemberDetailServiceApi {
 | 
			
		|||
    @Autowired
 | 
			
		||||
    private ICuMemberLevelService iCuMemberLevelService;
 | 
			
		||||
    @Autowired
 | 
			
		||||
    private ICuMemberAwardsService iCuMemberAwardsService;
 | 
			
		||||
    @Autowired
 | 
			
		||||
    private ICuMemberRegisterService iCuMemberRegisterService;
 | 
			
		||||
 | 
			
		||||
    @Override
 | 
			
		||||
| 
						 | 
				
			
			@ -32,6 +36,11 @@ public class CuMemberDetailProvider implements ICuMemberDetailServiceApi {
 | 
			
		|||
        return R.ok(iCuMemberLevelService.getUpgradeList(pkMember));
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @Override
 | 
			
		||||
    public R<CuMemberAwardsExt> queryLastManualAwards(Long pkMember) {
 | 
			
		||||
        return R.ok(iCuMemberAwardsService.queryLastManualAwards(pkMember));
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @Override
 | 
			
		||||
    public R<CuMemberRegister> getMemberRegister(Long pkMember) {
 | 
			
		||||
        return R.ok(iCuMemberRegisterService.queryCuMemberRegister(pkMember));
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -2,6 +2,7 @@ package com.hzs.member.detail.service;
 | 
			
		|||
 | 
			
		||||
import com.baomidou.mybatisplus.extension.service.IService;
 | 
			
		||||
import com.hzs.common.domain.member.detail.CuMemberAwards;
 | 
			
		||||
import com.hzs.common.domain.member.detail.ext.CuMemberAwardsExt;
 | 
			
		||||
 | 
			
		||||
import java.util.Date;
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -19,4 +20,12 @@ public interface ICuMemberAwardsService extends IService<CuMemberAwards> {
 | 
			
		|||
     */
 | 
			
		||||
    void deleteCuMemberAwards(Long pkOrder, Long pkApprove, Date currentDateTime);
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * 查询手动开通的最新一条
 | 
			
		||||
     *
 | 
			
		||||
     * @param pkMember 会员ID
 | 
			
		||||
     * @return
 | 
			
		||||
     */
 | 
			
		||||
    CuMemberAwardsExt queryLastManualAwards(Long pkMember);
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1,11 +1,20 @@
 | 
			
		|||
package com.hzs.member.detail.service.impl;
 | 
			
		||||
 | 
			
		||||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 | 
			
		||||
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
 | 
			
		||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 | 
			
		||||
import com.hzs.common.core.constant.MagicNumberConstants;
 | 
			
		||||
import com.hzs.common.core.constant.MemberFieldConstants;
 | 
			
		||||
import com.hzs.common.core.enums.*;
 | 
			
		||||
import com.hzs.common.core.utils.ComputeUtil;
 | 
			
		||||
import com.hzs.common.domain.member.detail.CuMemberAwards;
 | 
			
		||||
import com.hzs.common.domain.member.detail.ext.CuMemberAwardsExt;
 | 
			
		||||
import com.hzs.common.domain.member.ext.CuMemberSettleExt;
 | 
			
		||||
import com.hzs.common.domain.system.config.BdAwards;
 | 
			
		||||
import com.hzs.member.achieve.service.ICuMemberTreeService;
 | 
			
		||||
import com.hzs.member.detail.mapper.CuMemberAwardsMapper;
 | 
			
		||||
import com.hzs.member.detail.service.ICuMemberAwardsService;
 | 
			
		||||
import org.springframework.beans.factory.annotation.Autowired;
 | 
			
		||||
import org.springframework.stereotype.Service;
 | 
			
		||||
 | 
			
		||||
import java.util.*;
 | 
			
		||||
| 
						 | 
				
			
			@ -16,6 +25,9 @@ import java.util.*;
 | 
			
		|||
@Service
 | 
			
		||||
public class CuMemberAwardsServiceImpl extends ServiceImpl<CuMemberAwardsMapper, CuMemberAwards> implements ICuMemberAwardsService {
 | 
			
		||||
 | 
			
		||||
    @Autowired
 | 
			
		||||
    private ICuMemberTreeService iCuMemberTreeService;
 | 
			
		||||
 | 
			
		||||
    @Override
 | 
			
		||||
    public void deleteCuMemberAwards(Long pkOrder, Long pkApprove, Date currentDateTime) {
 | 
			
		||||
        LambdaUpdateWrapper<CuMemberAwards> updateWrapper = new LambdaUpdateWrapper<>();
 | 
			
		||||
| 
						 | 
				
			
			@ -26,4 +38,155 @@ public class CuMemberAwardsServiceImpl extends ServiceImpl<CuMemberAwardsMapper,
 | 
			
		|||
        update(updateWrapper);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * 更新奖衔记录
 | 
			
		||||
     *
 | 
			
		||||
     * @param enoughAwardsMemberList    满足业绩
 | 
			
		||||
     * @param originalCuMemberSettleMap 原来的map
 | 
			
		||||
     * @param period                    期间
 | 
			
		||||
     */
 | 
			
		||||
    private List<CuMemberAwards> updateAwardsRecord(List<CuMemberSettleExt> enoughAwardsMemberList, Map<Long, CuMemberSettleExt> originalCuMemberSettleMap,
 | 
			
		||||
                                                    Integer period) {
 | 
			
		||||
        if (enoughAwardsMemberList.size() == 0) {
 | 
			
		||||
            return null;
 | 
			
		||||
        }
 | 
			
		||||
        // 更新奖衔记录变动
 | 
			
		||||
        // 增加奖衔记录表
 | 
			
		||||
        // 更新升奖衔的会员,插入升衔记录
 | 
			
		||||
        return upgradeCuMemberAwards(enoughAwardsMemberList, originalCuMemberSettleMap, period);
 | 
			
		||||
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * 插入升级记录
 | 
			
		||||
     *
 | 
			
		||||
     * @param enoughAwardsMemberList    足够升级的
 | 
			
		||||
     * @param originalCuMemberSettleMap 记录会员原等级的map
 | 
			
		||||
     * @param period                    期间
 | 
			
		||||
     */
 | 
			
		||||
    private List<CuMemberAwards> upgradeCuMemberAwards(List<CuMemberSettleExt> enoughAwardsMemberList, Map<Long, CuMemberSettleExt> originalCuMemberSettleMap,
 | 
			
		||||
                                                       Integer period) {
 | 
			
		||||
        List<CuMemberAwards> cuMemberAwardsList = new ArrayList<>();
 | 
			
		||||
        if (enoughAwardsMemberList.size() > 0) {
 | 
			
		||||
            // 记录要入库的,为了验证是否首次晋升
 | 
			
		||||
            enoughAwardsMemberList.forEach(enoughAwardsMember -> getCuMemberAwards(originalCuMemberSettleMap, period, cuMemberAwardsList, enoughAwardsMember));
 | 
			
		||||
            // 验证满足的这群人是否是首次晋升,查询出值的不是首次晋升
 | 
			
		||||
            List<CuMemberAwards> originalCuMemberAwardsList = baseMapper.queryLastCuMemberAwards(cuMemberAwardsList);
 | 
			
		||||
            // 是首次晋升的数据
 | 
			
		||||
            Map<Long, CuMemberAwards> cuMemberAwardsMap = new HashMap<>(ComputeUtil.mapInitCapacity(originalCuMemberAwardsList.size()));
 | 
			
		||||
            originalCuMemberAwardsList.forEach(cuMemberAwards -> cuMemberAwardsMap.put(cuMemberAwards.getPkMember(), cuMemberAwards));
 | 
			
		||||
            cuMemberAwardsList.forEach(cuMemberAwards -> {
 | 
			
		||||
                CuMemberAwards memberAwards = cuMemberAwardsMap.get(cuMemberAwards.getPkMember());
 | 
			
		||||
                // 没有奖衔升级记录或者奖衔升级记录是会员的 算首次晋升
 | 
			
		||||
                if (memberAwards == null || memberAwards.getNewLevel() == EAwards.MEMBER.getValue()) {
 | 
			
		||||
                    cuMemberAwards.setPurchaseStatus(EYesNo.YES.getIntValue());
 | 
			
		||||
                }
 | 
			
		||||
            });
 | 
			
		||||
            // 插入记录
 | 
			
		||||
            baseMapper.saveBatchCuMemberAwards(cuMemberAwardsList);
 | 
			
		||||
        }
 | 
			
		||||
        return cuMemberAwardsList;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    private void getCuMemberAwards(Map<Long, CuMemberSettleExt> originalCuMemberSettleMap, Integer period, List<CuMemberAwards> cuMemberAwardsList, CuMemberSettleExt enoughAwardsMember) {
 | 
			
		||||
        CuMemberAwards cuMemberAwards = CuMemberAwards.builder()
 | 
			
		||||
                .pkMember(enoughAwardsMember.getPkMember())
 | 
			
		||||
                .period(period)
 | 
			
		||||
                .upType(EUpgradeType.AUTO_UPGRADE.getValue())
 | 
			
		||||
                // 原等级
 | 
			
		||||
                .oldLevel(originalCuMemberSettleMap.get(enoughAwardsMember.getPkMember()).getPkOriAwards())
 | 
			
		||||
                .newLevel(enoughAwardsMember.getPkAwards())
 | 
			
		||||
                // 默认不免考
 | 
			
		||||
                .purchaseStatus(EYesNo.NO.getIntValue())
 | 
			
		||||
                .build();
 | 
			
		||||
        cuMemberAwards.setPkCreator(MagicNumberConstants.PK_ADMIN);
 | 
			
		||||
        cuMemberAwards.setPkCountry(enoughAwardsMember.getPkSettleCountry());
 | 
			
		||||
        cuMemberAwardsList.add(cuMemberAwards);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * 更新降衔的会员,把升衔记录删除
 | 
			
		||||
     *
 | 
			
		||||
     * @param period             期间
 | 
			
		||||
     * @param changeAwardsList   降低奖衔的人
 | 
			
		||||
     * @param cuMemberAwardsList 所有变动记录的数据
 | 
			
		||||
     */
 | 
			
		||||
    private void reduceCuMemberAwards(List<CuMemberAwards> changeAwardsList, Integer period, List<CuMemberAwards> cuMemberAwardsList) {
 | 
			
		||||
        // 验证是否有降奖衔的,降奖衔的也要更新
 | 
			
		||||
        if (changeAwardsList.size() > 0) {
 | 
			
		||||
            // 更新奖衔表,将奖衔升级记录修改为删除状态
 | 
			
		||||
            QueryWrapper<CuMemberAwards> queryWrapper = new QueryWrapper<>();
 | 
			
		||||
            queryWrapper.eq(MemberFieldConstants.PERIOD, period);
 | 
			
		||||
            baseMapper.updateBatchCuMemberAwards(changeAwardsList, period);
 | 
			
		||||
            // 根据 changeAwardsList 查找到这群人的历史奖衔升级记录
 | 
			
		||||
            List<CuMemberAwards> hisCuMemberAwardsList = baseMapper.queryLastCuMemberAwards(changeAwardsList);
 | 
			
		||||
            Map<Long, CuMemberAwards> cuMemberAwardsMap = new HashMap<>();
 | 
			
		||||
            hisCuMemberAwardsList.forEach(cuMemberAwards -> cuMemberAwardsMap.put(cuMemberAwards.getPkMember(), cuMemberAwards));
 | 
			
		||||
            // 用于更新网体,将原有奖衔还原
 | 
			
		||||
            changeAwardsList.forEach(cuMemberAwards -> {
 | 
			
		||||
                if (cuMemberAwardsMap.containsKey(cuMemberAwards.getPkMember())) {
 | 
			
		||||
                    // 原有奖衔
 | 
			
		||||
                    cuMemberAwards.setNewLevel(cuMemberAwardsMap.get(cuMemberAwards.getPkMember()).getNewLevel());
 | 
			
		||||
                } else {
 | 
			
		||||
                    // 没有值的变为会员
 | 
			
		||||
                    cuMemberAwards.setNewLevel(EAwards.MEMBER.getValue());
 | 
			
		||||
                }
 | 
			
		||||
            });
 | 
			
		||||
            cuMemberAwardsList.addAll(changeAwardsList);
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * 查询某一期变动的奖衔
 | 
			
		||||
     *
 | 
			
		||||
     * @param period 奖金期
 | 
			
		||||
     */
 | 
			
		||||
    private List<CuMemberAwards> queryCuMemberAwardsByPeriod(Integer period) {
 | 
			
		||||
        QueryWrapper<CuMemberAwards> queryWrapper = new QueryWrapper<>();
 | 
			
		||||
        queryWrapper.eq(MemberFieldConstants.PERIOD, period);
 | 
			
		||||
        queryWrapper.eq(MemberFieldConstants.UP_TYPE, EUpgradeType.AUTO_UPGRADE.getValue());
 | 
			
		||||
        return baseMapper.selectList(queryWrapper);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * 验证血缘关系
 | 
			
		||||
     *
 | 
			
		||||
     * @param settleTableName   结算表
 | 
			
		||||
     * @param cuMemberSettleExt 会员结算表
 | 
			
		||||
     * @param bdAwards          等级
 | 
			
		||||
     */
 | 
			
		||||
    private Boolean validateBloodRelation(String settleTableName, CuMemberSettleExt cuMemberSettleExt, BdAwards bdAwards) {
 | 
			
		||||
        // 左区满足,且满足血缘
 | 
			
		||||
        if (iCuMemberTreeService.queryCuMemberSettlePlaceUnderUmbrella(settleTableName, bdAwards.getPkCheckAwardsLeft(), EPlaceDept.LEFT_DEPT.getValue(), cuMemberSettleExt.getPkMember()) &&
 | 
			
		||||
                iCuMemberTreeService.queryCuMemberSettleBloodUnderUmbrella(settleTableName, bdAwards.getPkCheckAwardsLeft(), EPlaceDept.LEFT_DEPT.getValue(), cuMemberSettleExt.getPkMember())) {
 | 
			
		||||
            // 验证血缘,左区存在血缘关系的
 | 
			
		||||
            // 右区满足,且满足血缘
 | 
			
		||||
            // 进行验证血缘验证
 | 
			
		||||
            return iCuMemberTreeService.queryCuMemberSettlePlaceUnderUmbrella(settleTableName, bdAwards.getPkCheckAwardsRight(), EPlaceDept.RIGHT_DEPT.getValue(), cuMemberSettleExt.getPkMember()) &&
 | 
			
		||||
                    iCuMemberTreeService.queryCuMemberSettleBloodUnderUmbrella(settleTableName, bdAwards.getPkCheckAwardsRight(), EPlaceDept.RIGHT_DEPT.getValue(), cuMemberSettleExt.getPkMember());
 | 
			
		||||
        }
 | 
			
		||||
        return false;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * 验证左右区安置关系
 | 
			
		||||
     *
 | 
			
		||||
     * @param settleTableName 结算表
 | 
			
		||||
     * @param bdAwards        等级
 | 
			
		||||
     * @param pkMember        会员
 | 
			
		||||
     */
 | 
			
		||||
    private Boolean validateCuMemberPlaceRelation(String settleTableName, BdAwards bdAwards, Long pkMember) {
 | 
			
		||||
        // 验证左区
 | 
			
		||||
        if (iCuMemberTreeService.queryCuMemberSettlePlaceUnderUmbrella(settleTableName, bdAwards.getPkCheckAwardsLeft(), EPlaceDept.LEFT_DEPT.getValue(), pkMember)) {
 | 
			
		||||
            // 在验证右区
 | 
			
		||||
            return iCuMemberTreeService.queryCuMemberSettlePlaceUnderUmbrella(settleTableName, bdAwards.getPkCheckAwardsRight(), EPlaceDept.RIGHT_DEPT.getValue(), pkMember);
 | 
			
		||||
        }
 | 
			
		||||
        return false;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @Override
 | 
			
		||||
    public CuMemberAwardsExt queryLastManualAwards(Long pkMember) {
 | 
			
		||||
        return baseMapper.queryLastManualAwards(pkMember);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -105,6 +105,36 @@
 | 
			
		|||
        where table_name = upper(#{tableName})
 | 
			
		||||
    </select>
 | 
			
		||||
 | 
			
		||||
    <select id="queryCuMemberSettlePlaceUnderUmbrella" resultType="java.lang.Integer">
 | 
			
		||||
        select count(a.pk_member)
 | 
			
		||||
        from (
 | 
			
		||||
                 select pk_member, pk_awards, pk_parent, pk_place_parent, place_dept
 | 
			
		||||
                 from ${settleTableName} start with pk_place_parent = #{pkMember} and place_dept=#{placeDept}
 | 
			
		||||
                 connect by pk_place_parent = prior pk_member
 | 
			
		||||
             ) a
 | 
			
		||||
                 inner join bd_awards ba
 | 
			
		||||
                            on a.pk_awards = ba.pk_id
 | 
			
		||||
        where ba.awards_value >= (select awards_value from bd_awards where pk_id = #{awardsValue})
 | 
			
		||||
    </select>
 | 
			
		||||
 | 
			
		||||
    <select id="queryCuMemberSettleBloodUnderUmbrella" resultType="java.lang.Integer">
 | 
			
		||||
        select count(pk_member)
 | 
			
		||||
        from (
 | 
			
		||||
                 select pk_member
 | 
			
		||||
                 from ${settleTableName} start with pk_parent = #{pkMember}
 | 
			
		||||
                 connect by pk_parent = prior pk_member) a
 | 
			
		||||
        where a.pk_member in (
 | 
			
		||||
            select a.pk_member
 | 
			
		||||
            from (
 | 
			
		||||
                     select pk_member, pk_awards, pk_parent, pk_place_parent, place_dept
 | 
			
		||||
                     from ${settleTableName} start with pk_place_parent = #{pkMember} and place_dept=#{placeDept}
 | 
			
		||||
                     connect by pk_place_parent = prior pk_member
 | 
			
		||||
                 ) a
 | 
			
		||||
                     inner join bd_awards ba
 | 
			
		||||
                                on a.pk_awards = ba.pk_id
 | 
			
		||||
            where ba.awards_value >= (select awards_value from bd_awards where pk_id = #{awardsValue}))
 | 
			
		||||
    </select>
 | 
			
		||||
 | 
			
		||||
    <select id="queryCuMemberTreeByPkMemberTable" resultMap="CuMemberSettleExt">
 | 
			
		||||
        select
 | 
			
		||||
        <if test="tableName != null and tableName != ''">
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -2,4 +2,73 @@
 | 
			
		|||
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
 | 
			
		||||
<mapper namespace="com.hzs.member.detail.mapper.CuMemberAwardsMapper">
 | 
			
		||||
 | 
			
		||||
    <!-- 通用查询映射结果 -->
 | 
			
		||||
    <resultMap id="CuMemberAwards" type="com.hzs.common.domain.member.detail.CuMemberAwards">
 | 
			
		||||
        <id column="PK_ID" property="pkId"/>
 | 
			
		||||
        <result column="PK_MEMBER" property="pkMember"/>
 | 
			
		||||
        <result column="PERIOD" property="period"/>
 | 
			
		||||
        <result column="UP_TYPE" property="upType"/>
 | 
			
		||||
        <result column="OLD_LEVEL" property="oldLevel"/>
 | 
			
		||||
        <result column="NEW_LEVEL" property="newLevel"/>
 | 
			
		||||
        <result column="PURCHASE_STATUS" property="purchaseStatus"/>
 | 
			
		||||
        <result column="PK_ORDER" property="pkOrder"/>
 | 
			
		||||
        <result column="REMARK" property="remark"/>
 | 
			
		||||
        <result column="DEL_FLAG" property="delFlag"/>
 | 
			
		||||
        <result column="CREATION_TIME" property="creationTime"/>
 | 
			
		||||
        <result column="MODIFIED_TIME" property="modifiedTime"/>
 | 
			
		||||
        <result column="PK_COUNTRY" property="pkCountry"/>
 | 
			
		||||
        <result column="PK_CREATOR" property="pkCreator"/>
 | 
			
		||||
        <result column="PK_MODIFIED" property="pkModified"/>
 | 
			
		||||
    </resultMap>
 | 
			
		||||
 | 
			
		||||
    <insert id="saveBatchCuMemberAwards">
 | 
			
		||||
        insert ALL
 | 
			
		||||
        <foreach item="item" index="index" collection="cuMemberAwardsList" separator=" ">
 | 
			
		||||
            into cu_member_awards(pk_member,period,up_type,old_level,new_level,purchase_status,pk_creator,pk_country) values
 | 
			
		||||
            (
 | 
			
		||||
            #{item.pkMember},#{item.period},#{item.upType},#{item.oldLevel},#{item.newLevel},#{item.purchaseStatus},#{item.pkCreator},
 | 
			
		||||
            #{item.pkCountry}
 | 
			
		||||
            )
 | 
			
		||||
        </foreach>
 | 
			
		||||
        SELECT 1 FROM dual
 | 
			
		||||
    </insert>
 | 
			
		||||
 | 
			
		||||
    <update id="updateBatchCuMemberAwards">
 | 
			
		||||
        update cu_member_awards set del_flag = 1, modified_time = sysdate, PK_MODIFIED = 1
 | 
			
		||||
        where period= #{period} and pk_member in
 | 
			
		||||
        <foreach collection="cuMemberAwardsList" item="item" open="(" close=")" separator=",">
 | 
			
		||||
            #{item.pkMember}
 | 
			
		||||
        </foreach>
 | 
			
		||||
    </update>
 | 
			
		||||
 | 
			
		||||
    <select id="queryLastCuMemberAwards" resultMap="CuMemberAwards">
 | 
			
		||||
        select ca.pk_member,ba.awards_value new_level from cu_member_awards ca
 | 
			
		||||
        inner join (
 | 
			
		||||
        select pk_member,max(pk_id) pk_id from cu_member_awards
 | 
			
		||||
        where del_flag=0 and pk_member in
 | 
			
		||||
        <foreach collection="cuMemberAwardsList" item="item" open="(" close=")" separator=",">
 | 
			
		||||
            #{item.pkMember}
 | 
			
		||||
        </foreach>
 | 
			
		||||
        group by pk_member
 | 
			
		||||
        ) cm
 | 
			
		||||
        on ca.pk_id=cm.pk_id
 | 
			
		||||
        inner join bd_awards ba
 | 
			
		||||
        on ca.new_level = ba.pk_id
 | 
			
		||||
        where ca.del_flag=0 and ba.del_flag=0
 | 
			
		||||
    </select>
 | 
			
		||||
 | 
			
		||||
    <!-- 查询手动升级的最新一条 -->
 | 
			
		||||
    <select id="queryLastManualAwards" resultType="com.hzs.common.domain.member.detail.ext.CuMemberAwardsExt">
 | 
			
		||||
        select *
 | 
			
		||||
        from (select cma.*, ba.awards_value
 | 
			
		||||
              from cu_member_awards cma
 | 
			
		||||
                       left join bd_awards ba
 | 
			
		||||
                                 on ba.pk_id = cma.new_level
 | 
			
		||||
              where cma.del_flag = 0
 | 
			
		||||
                and cma.pk_member = #{pkMember}
 | 
			
		||||
                and cma.up_type = 2
 | 
			
		||||
              order by cma.creation_time desc)
 | 
			
		||||
        where rownum = 1
 | 
			
		||||
    </select>
 | 
			
		||||
 | 
			
		||||
</mapper>
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -17,12 +17,14 @@ import com.hzs.common.core.web.domain.AjaxResult;
 | 
			
		|||
import com.hzs.common.domain.member.ext.CuMemberExt;
 | 
			
		||||
import com.hzs.common.domain.sale.ext.BdWaresExt;
 | 
			
		||||
import com.hzs.common.domain.sale.ext.BdWaresSpecsSkuExt;
 | 
			
		||||
import com.hzs.common.domain.sale.wares.*;
 | 
			
		||||
import com.hzs.common.domain.sale.wares.BdWares;
 | 
			
		||||
import com.hzs.common.domain.sale.wares.BdWaresLabel;
 | 
			
		||||
import com.hzs.common.domain.sale.wares.BdWaresRange;
 | 
			
		||||
import com.hzs.common.domain.sale.wares.BdWaresSpecsSku;
 | 
			
		||||
import com.hzs.common.domain.system.config.BdLabel;
 | 
			
		||||
import com.hzs.common.domain.system.ext.BdLabelExt;
 | 
			
		||||
import com.hzs.common.security.utils.SecurityUtils;
 | 
			
		||||
import com.hzs.member.base.IMemberServiceApi;
 | 
			
		||||
import com.hzs.member.base.dto.ShowWaresDTO;
 | 
			
		||||
import com.hzs.retail.wares.param.RetailWaresDetailParam;
 | 
			
		||||
import com.hzs.retail.wares.param.RetailWaresParam;
 | 
			
		||||
import com.hzs.retail.wares.vo.RetailWaresDetailVO;
 | 
			
		||||
| 
						 | 
				
			
			@ -172,8 +174,6 @@ public class ApiRetailWaresController extends BaseController {
 | 
			
		|||
                                                Integer pkGrade, boolean showLabel) {
 | 
			
		||||
        // 返回商品列表
 | 
			
		||||
        List<RetailWaresVO> resultList = new ArrayList<>();
 | 
			
		||||
        // 当前会员ID
 | 
			
		||||
        Long userId = SecurityUtils.getUserId();
 | 
			
		||||
 | 
			
		||||
        // 汇率比例
 | 
			
		||||
        R<CurrencyDTO> currency = currencyServiceApi.getCurrency(SecurityUtils.getPkCountry());
 | 
			
		||||
| 
						 | 
				
			
			@ -205,26 +205,7 @@ public class ApiRetailWaresController extends BaseController {
 | 
			
		|||
            }
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        // 检验商品团队信息
 | 
			
		||||
        Map<Integer, List<BdWaresAuthority>> waresAuthorityMap = iBdWaresService.getWaresAuthority(waresIdList);
 | 
			
		||||
        List<ShowWaresDTO> showWaresList = bdWaresExtList.stream().map(tmpBdWares -> {
 | 
			
		||||
            ShowWaresDTO showWaresDTO = new ShowWaresDTO();
 | 
			
		||||
            showWaresDTO.setPkWares(tmpBdWares.getPkId());
 | 
			
		||||
            showWaresDTO.setLoginMember(userId);
 | 
			
		||||
            showWaresDTO.setWaresAuthorityList(waresAuthorityMap.get(tmpBdWares.getPkId()));
 | 
			
		||||
            return showWaresDTO;
 | 
			
		||||
        }).collect(Collectors.toList());
 | 
			
		||||
        R<Map<Integer, Boolean>> waresShowMapDto = iMemberServiceApi.checkIsShowWares(showWaresList);
 | 
			
		||||
        Map<Integer, Boolean> waresShowMap = waresShowMapDto.getData();
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
        for (BdWaresExt bdWaresExt : bdWaresExtList) {
 | 
			
		||||
            // 校验团队信息
 | 
			
		||||
            Boolean isShowWares = waresShowMap.get(bdWaresExt.getPkId());
 | 
			
		||||
            if (null == isShowWares || !isShowWares) {
 | 
			
		||||
                continue;
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            if (null != list) {
 | 
			
		||||
                // 商品标签处理
 | 
			
		||||
                // 保证标签
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -18,7 +18,12 @@ import org.springframework.web.bind.annotation.*;
 | 
			
		|||
import java.util.List;
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * <p>
 | 
			
		||||
 * 仓库配置前端控制器
 | 
			
		||||
 * </p>
 | 
			
		||||
 *
 | 
			
		||||
 * @author hzs
 | 
			
		||||
 * @since 2022-08-02
 | 
			
		||||
 */
 | 
			
		||||
@Slf4j
 | 
			
		||||
@RestController
 | 
			
		||||
| 
						 | 
				
			
			@ -36,15 +41,15 @@ public class ApiBdStorehouseController extends BaseController {
 | 
			
		|||
    @Log(module = EOperationModule.STOREHOUSE, business = EOperationBusiness.STOREHOUSE, method = EOperationMethod.SELECT)
 | 
			
		||||
    @GetMapping("/list")
 | 
			
		||||
    public TableDataInfo list(BdStorehouseVO bdStorehouse) {
 | 
			
		||||
        if (bdStorehouse.getPkCountry() == null) {
 | 
			
		||||
        if(bdStorehouse.getPkCountry() == null){
 | 
			
		||||
            bdStorehouse.setPkCountry(SecurityUtils.getPkCountry());
 | 
			
		||||
        }
 | 
			
		||||
        List<BdStorehouseVO> list = iBdStorehouseService.selectBdStorehouseList(bdStorehouse);
 | 
			
		||||
        list.forEach(itm -> {
 | 
			
		||||
            BdStorehouseAreaMiddleVO sam = new BdStorehouseAreaMiddleVO();
 | 
			
		||||
        list.forEach( itm ->{
 | 
			
		||||
            BdStorehouseAreaMiddleVO sam=new BdStorehouseAreaMiddleVO();
 | 
			
		||||
            sam.setPkStorehouse(itm.getPkId());
 | 
			
		||||
            sam.setPkCountry(bdStorehouse.getPkCountry());
 | 
			
		||||
            List<BdStorehouseAreaMiddleVO> samList = iBdStorehouseAreaMiddleService.getBdStorehouseAreaMiddleList(sam);
 | 
			
		||||
            List<BdStorehouseAreaMiddleVO> samList=iBdStorehouseAreaMiddleService.getBdStorehouseAreaMiddleList(sam);
 | 
			
		||||
            itm.setSamList(samList);
 | 
			
		||||
        });
 | 
			
		||||
        return getDataTable(list);
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -8,13 +8,17 @@ import com.hzs.system.base.vo.BdStorehouseVO;
 | 
			
		|||
import java.util.List;
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * 仓库信息Mapper 接口
 | 
			
		||||
 * <p>
 | 
			
		||||
 *  仓库信息Mapper 接口
 | 
			
		||||
 * </p>
 | 
			
		||||
 *
 | 
			
		||||
 * @author hzs
 | 
			
		||||
 * @since 2022-08-02
 | 
			
		||||
 */
 | 
			
		||||
public interface BdStorehouseMapper extends BaseMapper<BdStorehouse> {
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * 查询仓库列表信息
 | 
			
		||||
     *
 | 
			
		||||
     * @param bdStorehouse
 | 
			
		||||
     * @return
 | 
			
		||||
     */
 | 
			
		||||
| 
						 | 
				
			
			@ -22,7 +26,6 @@ public interface BdStorehouseMapper extends BaseMapper<BdStorehouse> {
 | 
			
		|||
 | 
			
		||||
    /**
 | 
			
		||||
     * 获取单条仓库信息
 | 
			
		||||
     *
 | 
			
		||||
     * @param bdStorehouse
 | 
			
		||||
     * @return
 | 
			
		||||
     */
 | 
			
		||||
| 
						 | 
				
			
			@ -30,7 +33,6 @@ public interface BdStorehouseMapper extends BaseMapper<BdStorehouse> {
 | 
			
		|||
 | 
			
		||||
    /**
 | 
			
		||||
     * 校验仓库信息是否重复
 | 
			
		||||
     *
 | 
			
		||||
     * @param bdStorehouse
 | 
			
		||||
     * @return
 | 
			
		||||
     */
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -10,6 +10,7 @@ import com.hzs.common.core.enums.EDelFlag;
 | 
			
		|||
import com.hzs.common.core.enums.EYesNo;
 | 
			
		||||
import com.hzs.common.domain.system.base.BdStorehouse;
 | 
			
		||||
import com.hzs.common.domain.system.base.BdStorehouseAreaMiddle;
 | 
			
		||||
import com.hzs.common.security.utils.SecurityUtils;
 | 
			
		||||
import com.hzs.system.base.mapper.BdStorehouseMapper;
 | 
			
		||||
import com.hzs.system.base.service.IBdStorehouseAreaMiddleService;
 | 
			
		||||
import com.hzs.system.base.service.IBdStorehouseService;
 | 
			
		||||
| 
						 | 
				
			
			@ -19,30 +20,49 @@ import org.springframework.beans.factory.annotation.Autowired;
 | 
			
		|||
import org.springframework.stereotype.Service;
 | 
			
		||||
import org.springframework.transaction.annotation.Transactional;
 | 
			
		||||
 | 
			
		||||
import java.util.ArrayList;
 | 
			
		||||
import java.util.Date;
 | 
			
		||||
import java.util.List;
 | 
			
		||||
import java.util.Set;
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * <p>
 | 
			
		||||
 * 仓库信息服务实现类
 | 
			
		||||
 * </p>
 | 
			
		||||
 *
 | 
			
		||||
 * @author hzs
 | 
			
		||||
 * @since 2022-08-02
 | 
			
		||||
 */
 | 
			
		||||
@Service
 | 
			
		||||
public class BdStorehouseServiceImpl extends ServiceImpl<BdStorehouseMapper, BdStorehouse> implements IBdStorehouseService {
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
    @Autowired
 | 
			
		||||
    private IBdStorehouseAreaMiddleService iBdStorehouseAreaMiddleService;
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * 查询仓库列表信息
 | 
			
		||||
     *
 | 
			
		||||
     * @param bdStorehouse
 | 
			
		||||
     * @return
 | 
			
		||||
     */
 | 
			
		||||
    @Override
 | 
			
		||||
    public List<BdStorehouseVO> selectBdStorehouseList(BdStorehouseVO bdStorehouse) {
 | 
			
		||||
        return baseMapper.selectBdStorehouseList(bdStorehouse);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * 新增仓库信息
 | 
			
		||||
     *
 | 
			
		||||
     * @param bdStorehouseVO
 | 
			
		||||
     * @return
 | 
			
		||||
     */
 | 
			
		||||
    @Transactional(rollbackFor = Exception.class)
 | 
			
		||||
    @Override
 | 
			
		||||
    public boolean intBdStorehouse(BdStorehouseVO bdStorehouseVO) {
 | 
			
		||||
        BdStorehouse bdStorehouse = BeanUtil.copyProperties(bdStorehouseVO, BdStorehouse.class);
 | 
			
		||||
        BdStorehouse bdStorehouse=  BeanUtil.copyProperties(bdStorehouseVO, BdStorehouse.class);
 | 
			
		||||
        baseMapper.insert(bdStorehouse);
 | 
			
		||||
        if (CollectionUtil.isNotEmpty(bdStorehouseVO.getProvinceList())) {
 | 
			
		||||
            BdStorehouseAreaMiddleVO sam = BeanUtil.copyProperties(bdStorehouseVO, BdStorehouseAreaMiddleVO.class);
 | 
			
		||||
        if(CollectionUtil.isNotEmpty(bdStorehouseVO.getProvinceList())){
 | 
			
		||||
            BdStorehouseAreaMiddleVO sam=BeanUtil.copyProperties(bdStorehouseVO, BdStorehouseAreaMiddleVO.class);
 | 
			
		||||
            sam.setPkStorehouse(bdStorehouse.getPkId());
 | 
			
		||||
            iBdStorehouseAreaMiddleService.intStoArMiddle(sam);
 | 
			
		||||
        }
 | 
			
		||||
| 
						 | 
				
			
			@ -60,6 +80,11 @@ public class BdStorehouseServiceImpl extends ServiceImpl<BdStorehouseMapper, BdS
 | 
			
		|||
        return baseMapper.getBdStorehouse(bdStorehouse);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * 校验仓库信息是否重复
 | 
			
		||||
     * @param bdStorehouse
 | 
			
		||||
     * @return
 | 
			
		||||
     */
 | 
			
		||||
    @Override
 | 
			
		||||
    public BdStorehouse checkBdStorehouse(BdStorehouse bdStorehouse) {
 | 
			
		||||
        return baseMapper.checkBdStorehouse(bdStorehouse);
 | 
			
		||||
| 
						 | 
				
			
			@ -91,26 +116,26 @@ public class BdStorehouseServiceImpl extends ServiceImpl<BdStorehouseMapper, BdS
 | 
			
		|||
        updateWrapper.set("WARE_ADDRESS", bdStorehouse.getWareAddress());
 | 
			
		||||
        updateWrapper.set("PROVINCE", bdStorehouse.getProvince());
 | 
			
		||||
        updateWrapper.set("CITY", bdStorehouse.getCity());
 | 
			
		||||
        if (bdStorehouse.getCounty() != null) {
 | 
			
		||||
        if(bdStorehouse.getCounty() != null) {
 | 
			
		||||
            updateWrapper.set("COUNTY", bdStorehouse.getCounty());
 | 
			
		||||
        }
 | 
			
		||||
        updateWrapper.set("CONTACTS", bdStorehouse.getContacts());
 | 
			
		||||
        updateWrapper.set("MOBILE_PHONE", bdStorehouse.getMobilePhone());
 | 
			
		||||
        if (bdStorehouse.getPkCorp() != null) {
 | 
			
		||||
        if(bdStorehouse.getPkCorp() != null) {
 | 
			
		||||
            updateWrapper.set("PK_CORP", bdStorehouse.getPkCorp());
 | 
			
		||||
        }
 | 
			
		||||
        updateWrapper.set("PK_MODIFIED", bdStorehouse.getPkModified());
 | 
			
		||||
        updateWrapper.set("MODIFIED_TIME", bdStorehouse.getModifiedTime());
 | 
			
		||||
        updateWrapper.set("MODIFIED_TIME",bdStorehouse.getModifiedTime());
 | 
			
		||||
        update(updateWrapper);
 | 
			
		||||
        BdStorehouseAreaMiddleVO sam = BeanUtil.copyProperties(bdStorehouse, BdStorehouseAreaMiddleVO.class);
 | 
			
		||||
        BdStorehouseAreaMiddleVO sam=BeanUtil.copyProperties(bdStorehouse, BdStorehouseAreaMiddleVO.class);
 | 
			
		||||
        sam.setPkStorehouse(bdStorehouse.getPkId());
 | 
			
		||||
        UpdateWrapper<BdStorehouseAreaMiddle> updateWrapper1 = new UpdateWrapper<>();
 | 
			
		||||
        updateWrapper1.eq("PK_STOREHOUSE", bdStorehouse.getPkId());
 | 
			
		||||
        updateWrapper1.set("DEL_FLAG", EDelFlag.DELETE.getValue());
 | 
			
		||||
        UpdateWrapper<BdStorehouseAreaMiddle> updateWrapper1=new UpdateWrapper<>();
 | 
			
		||||
        updateWrapper1.eq("PK_STOREHOUSE",bdStorehouse.getPkId());
 | 
			
		||||
        updateWrapper1.set("DEL_FLAG",EDelFlag.DELETE.getValue());
 | 
			
		||||
        iBdStorehouseAreaMiddleService.update(updateWrapper1);
 | 
			
		||||
        if (CollectionUtil.isNotEmpty(bdStorehouse.getProvinceList())) {
 | 
			
		||||
            for (Integer i : bdStorehouse.getProvinceList()) {
 | 
			
		||||
                BdStorehouseAreaMiddle sa = new BdStorehouseAreaMiddle();
 | 
			
		||||
        if(CollectionUtil.isNotEmpty(bdStorehouse.getProvinceList())){
 | 
			
		||||
            for(Integer i:bdStorehouse.getProvinceList()){
 | 
			
		||||
                BdStorehouseAreaMiddle sa=new BdStorehouseAreaMiddle();
 | 
			
		||||
                sa.setProvince(i);
 | 
			
		||||
                sa.setPkStorehouse(bdStorehouse.getPkId());
 | 
			
		||||
                sa.setPkCountry(bdStorehouse.getPkCountry());
 | 
			
		||||
| 
						 | 
				
			
			@ -122,6 +147,13 @@ public class BdStorehouseServiceImpl extends ServiceImpl<BdStorehouseMapper, BdS
 | 
			
		|||
        return true;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * @description: 删除仓库
 | 
			
		||||
     * @author: zhang jing
 | 
			
		||||
     * @date: 2023/5/16 16:42
 | 
			
		||||
     * @param: [pkId]
 | 
			
		||||
     * @return: boolean
 | 
			
		||||
     **/
 | 
			
		||||
    @Override
 | 
			
		||||
    @Transactional(rollbackFor = Exception.class)
 | 
			
		||||
    public boolean delBdStorehouse(BdStorehouseVO bdStorehouse) {
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -25,6 +25,11 @@ public class MemberFieldConstants {
 | 
			
		|||
     */
 | 
			
		||||
    public static final String MEMBER_CODE = "member_code";
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * 推荐人
 | 
			
		||||
     */
 | 
			
		||||
    public static final String PK_REFERENCE = "pk_reference";
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * 推荐人主键
 | 
			
		||||
     */
 | 
			
		||||
| 
						 | 
				
			
			@ -114,6 +119,13 @@ public class MemberFieldConstants {
 | 
			
		|||
     * 期间
 | 
			
		||||
     */
 | 
			
		||||
    public static final String PERIOD = "period";
 | 
			
		||||
    public static final String START_PERIOD = "START_PERIOD";
 | 
			
		||||
    public static final String END_PERIOD = "END_PERIOD";
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * 升级类型 (1=自动升级,2=手动升级,3=购买赠予)
 | 
			
		||||
     */
 | 
			
		||||
    public static final String UP_TYPE = "up_type";
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * 代理类型 (1=代理商,2=店铺)
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -10,123 +10,45 @@ import java.util.List;
 | 
			
		|||
public class RetailConstants {
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * 会员 推 会员 60
 | 
			
		||||
     * VIP 推 会员 80
 | 
			
		||||
     * 合伙人 推 会员 100
 | 
			
		||||
     * 博羚店主 推 会员 200
 | 
			
		||||
     * 高级店主 推 会员 208
 | 
			
		||||
     * 分公司 推 会员 220
 | 
			
		||||
     * 总公司 推 会员 240
 | 
			
		||||
     * 直推拿
 | 
			
		||||
     */
 | 
			
		||||
    public static final BigDecimal V1_V1 = new BigDecimal("60");
 | 
			
		||||
    public static final BigDecimal V2_V1 = new BigDecimal("80");
 | 
			
		||||
    public static final BigDecimal V3_V1 = new BigDecimal("100");
 | 
			
		||||
    public static final BigDecimal V4_V1 = new BigDecimal("200");
 | 
			
		||||
    public static final BigDecimal V5_V1 = new BigDecimal("208");
 | 
			
		||||
    public static final BigDecimal V6_V1 = new BigDecimal("220");
 | 
			
		||||
    public static final BigDecimal V7_V1 = new BigDecimal("240");
 | 
			
		||||
 | 
			
		||||
    public static final BigDecimal FIRST_DIRECT = new BigDecimal("60");
 | 
			
		||||
    /**
 | 
			
		||||
     * 会员 推 VIP 300
 | 
			
		||||
     * VIP 推 VIP 400
 | 
			
		||||
     * 合伙人 推 VIP 500
 | 
			
		||||
     * 博羚店主 推 VIP 1000
 | 
			
		||||
     * 高级店主 推 VIP 1040
 | 
			
		||||
     * 分公司 推 VIP 1100
 | 
			
		||||
     * 总公司 推 VIP 1200
 | 
			
		||||
     * 间推拿20
 | 
			
		||||
     */
 | 
			
		||||
    public static final BigDecimal V1_V2 = new BigDecimal("300");
 | 
			
		||||
    public static final BigDecimal V2_V2 = new BigDecimal("400");
 | 
			
		||||
    public static final BigDecimal V3_V2 = new BigDecimal("500");
 | 
			
		||||
    public static final BigDecimal V4_V2 = new BigDecimal("1000");
 | 
			
		||||
    public static final BigDecimal V5_V2 = new BigDecimal("1040");
 | 
			
		||||
    public static final BigDecimal V6_V2 = new BigDecimal("1100");
 | 
			
		||||
    public static final BigDecimal V7_V2 = new BigDecimal("1200");
 | 
			
		||||
 | 
			
		||||
    public static final BigDecimal FIRST_INDIRECT = new BigDecimal("20");
 | 
			
		||||
    /**
 | 
			
		||||
     * 会员 推 合伙人 600
 | 
			
		||||
     * VIP 推 合伙人 800
 | 
			
		||||
     * 合伙人1 推 合伙人 1000
 | 
			
		||||
     * 合伙人2 推 合伙人 1200
 | 
			
		||||
     * 合伙人3 推 合伙人 1300
 | 
			
		||||
     * 博羚店主 推 合伙人 2000
 | 
			
		||||
     * 高级店主 推 合伙人 2080
 | 
			
		||||
     * 分公司 推 合伙人 2200
 | 
			
		||||
     * 总公司 推 合伙人 2400
 | 
			
		||||
     * 第一店长拿100
 | 
			
		||||
     */
 | 
			
		||||
    public static final BigDecimal V1_V3 = new BigDecimal("600");
 | 
			
		||||
    public static final BigDecimal V2_V3 = new BigDecimal("800");
 | 
			
		||||
    public static final BigDecimal V3_V3_1 = new BigDecimal("1000");
 | 
			
		||||
    public static final BigDecimal V3_V3_2 = new BigDecimal("1200");
 | 
			
		||||
    public static final BigDecimal V3_V3_3 = new BigDecimal("1300");
 | 
			
		||||
    public static final BigDecimal V4_V3 = new BigDecimal("2000");
 | 
			
		||||
    public static final BigDecimal V5_V3 = new BigDecimal("2080");
 | 
			
		||||
    public static final BigDecimal V6_V3 = new BigDecimal("2200");
 | 
			
		||||
    public static final BigDecimal V7_V3 = new BigDecimal("2400");
 | 
			
		||||
 | 
			
		||||
    public static final BigDecimal FIRST_ONE_STORE = new BigDecimal("100");
 | 
			
		||||
    /**
 | 
			
		||||
     * 会员 推 合伙人 1200
 | 
			
		||||
     * VIP 推 合伙人 1600
 | 
			
		||||
     * 合伙人1 推 合伙人 2000
 | 
			
		||||
     * 合伙人2 推 合伙人 2400
 | 
			
		||||
     * 合伙人3 推 合伙人 2600
 | 
			
		||||
     * 博羚店主 推 合伙人 4000
 | 
			
		||||
     * 高级店主 推 合伙人 4160
 | 
			
		||||
     * 分公司 推 合伙人 4400
 | 
			
		||||
     * 总公司 推 合伙人 4800
 | 
			
		||||
     * 第二店长拿8
 | 
			
		||||
     */
 | 
			
		||||
    public static final BigDecimal V1_V4 = new BigDecimal("1200");
 | 
			
		||||
    public static final BigDecimal V2_V4 = new BigDecimal("1600");
 | 
			
		||||
    public static final BigDecimal V3_V4_1 = new BigDecimal("2000");
 | 
			
		||||
    public static final BigDecimal V3_V4_2 = new BigDecimal("2400");
 | 
			
		||||
    public static final BigDecimal V3_V4_3 = new BigDecimal("2600");
 | 
			
		||||
    public static final BigDecimal V4_V4 = new BigDecimal("4000");
 | 
			
		||||
    public static final BigDecimal V5_V4 = new BigDecimal("4160");
 | 
			
		||||
    public static final BigDecimal V6_V4 = new BigDecimal("4400");
 | 
			
		||||
    public static final BigDecimal V7_V4 = new BigDecimal("4800");
 | 
			
		||||
 | 
			
		||||
    public static final BigDecimal FIRST_TWO_STORE = new BigDecimal("8");
 | 
			
		||||
    /**
 | 
			
		||||
     * 博羚店主 推 分公司 50000
 | 
			
		||||
     * 高级店主 推 分公司 52000
 | 
			
		||||
     * 分公司 推 分公司 55000
 | 
			
		||||
     * 总公司 推 分公司 60000
 | 
			
		||||
     * 分公司拿12
 | 
			
		||||
     */
 | 
			
		||||
    public static final BigDecimal V4_V6 = new BigDecimal("50000");
 | 
			
		||||
    public static final BigDecimal V5_V6 = new BigDecimal("52000");
 | 
			
		||||
    public static final BigDecimal V6_V6 = new BigDecimal("55000");
 | 
			
		||||
    public static final BigDecimal V7_V6 = new BigDecimal("60000");
 | 
			
		||||
 | 
			
		||||
    public static final BigDecimal FIRST_BRANCH_COMPANY = new BigDecimal("12");
 | 
			
		||||
    /**
 | 
			
		||||
     * 复购:
 | 
			
		||||
     * 会员 拿 6
 | 
			
		||||
     * VIP 拿 8
 | 
			
		||||
     * 合伙人1 拿 10
 | 
			
		||||
     * 合伙人2 拿 12
 | 
			
		||||
     * 合伙人3 拿 13
 | 
			
		||||
     * 博羚店主 拿 20
 | 
			
		||||
     * 高级店主 拿 20.8
 | 
			
		||||
     * 分公司 拿 22
 | 
			
		||||
     * 总公司 拿 24
 | 
			
		||||
     * 总公司拿20
 | 
			
		||||
     */
 | 
			
		||||
    public static final BigDecimal REPURCHASE_V1 = new BigDecimal("6");
 | 
			
		||||
    public static final BigDecimal REPURCHASE_V2 = new BigDecimal("8");
 | 
			
		||||
    public static final BigDecimal REPURCHASE_V3_1 = new BigDecimal("10");
 | 
			
		||||
    public static final BigDecimal REPURCHASE_V3_2 = new BigDecimal("12");
 | 
			
		||||
    public static final BigDecimal REPURCHASE_V3_3 = new BigDecimal("13");
 | 
			
		||||
    public static final BigDecimal REPURCHASE_V4 = new BigDecimal("20");
 | 
			
		||||
    public static final BigDecimal REPURCHASE_V5 = new BigDecimal("20.8");
 | 
			
		||||
    public static final BigDecimal REPURCHASE_V6 = new BigDecimal("22");
 | 
			
		||||
    public static final BigDecimal REPURCHASE_V7 = new BigDecimal("24");
 | 
			
		||||
    public static final BigDecimal FIRST_COMPANY = new BigDecimal("20");
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * 会员、VIP、合伙人 每月可购买1套(4盒)
 | 
			
		||||
     * 博羚店主、高级店主 每月可购买10套(40盒)
 | 
			
		||||
     * 分公司 每月可购买25套(100盒)
 | 
			
		||||
     * 总公司 不限购给一个很大的值
 | 
			
		||||
     */
 | 
			
		||||
    public static final Integer V1_LIMIT = 1;
 | 
			
		||||
    /**
 | 
			
		||||
     * 博羚店主、高级店主 每月可购买10套(40盒)
 | 
			
		||||
     */
 | 
			
		||||
    public static final Integer V4_LIMIT = 10;
 | 
			
		||||
    /**
 | 
			
		||||
     * 分公司 每月可购买25套(100盒)
 | 
			
		||||
     */
 | 
			
		||||
    public static final Integer V6_LIMIT = 25;
 | 
			
		||||
    /**
 | 
			
		||||
     * 总公司 不限购给一个很大的值
 | 
			
		||||
     */
 | 
			
		||||
    public static final Integer V7_LIMIT = 10000;
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -15,11 +15,6 @@ public class BonusMsgConstants {
 | 
			
		|||
     */
 | 
			
		||||
    public static String RANGE = "订单编号%s,%s为%s贡献了直推级差收益,计算金额%f,前一级差等级名称%s,当前级差等级名称%s。";
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * 复购级差收益说明
 | 
			
		||||
     */
 | 
			
		||||
    public static String REPUR_RANGE = "订单编号%s,%s为%s贡献了复购级差收益,计算金额%f,前一级差等级名称%s,当前级差等级名称%s。";
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * 奖金重算 -- 只能重算7天内的奖金!
 | 
			
		||||
     */
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -14,58 +14,58 @@ public enum EBonusItems {
 | 
			
		|||
    /**
 | 
			
		||||
     * 直推收益
 | 
			
		||||
     */
 | 
			
		||||
    DIRECT_INCOME(3, "旧直推收益", 1),
 | 
			
		||||
    DIRECT_INCOME(3, "旧直推收益", 0, EnumsPrefixConstants.BONUS_ITEMS + 3),
 | 
			
		||||
    /**
 | 
			
		||||
     * 拓展收益
 | 
			
		||||
     */
 | 
			
		||||
    EXPANSION_INCOME(4, "旧拓展收益", 1),
 | 
			
		||||
    EXPANSION_INCOME(4, "旧拓展收益", 0, EnumsPrefixConstants.BONUS_ITEMS + 4),
 | 
			
		||||
    /**
 | 
			
		||||
     * 辅导收益
 | 
			
		||||
     */
 | 
			
		||||
    COACHING_INCOME(5, "旧辅导收益", 1),
 | 
			
		||||
    COACHING_INCOME(5, "旧辅导收益", 0, EnumsPrefixConstants.BONUS_ITEMS + 5),
 | 
			
		||||
    /**
 | 
			
		||||
     * 分红收益
 | 
			
		||||
     */
 | 
			
		||||
    DIVIDEND_INCOME(6, "旧分红收益", 1),
 | 
			
		||||
    DIVIDEND_INCOME(6, "旧分红收益", 0, EnumsPrefixConstants.BONUS_ITEMS + 6),
 | 
			
		||||
    /**
 | 
			
		||||
     * 服务补贴
 | 
			
		||||
     */
 | 
			
		||||
    SERVICE_SUBSIDIES(7, "旧服务补贴", 1),
 | 
			
		||||
    SERVICE_SUBSIDIES(7, "旧服务补贴", 0, EnumsPrefixConstants.BONUS_ITEMS + 7),
 | 
			
		||||
    /**
 | 
			
		||||
     * 复购级差收益
 | 
			
		||||
     * 复购极差收益
 | 
			
		||||
     */
 | 
			
		||||
    REPURCHASE_RANGE_INCOME(8, "旧复购级差收益", 1),
 | 
			
		||||
    REPURCHASE_RANGE_INCOME(8, "旧复购极差收益", 0, EnumsPrefixConstants.BONUS_ITEMS + 8),
 | 
			
		||||
    /**
 | 
			
		||||
     * 复购拓展收益
 | 
			
		||||
     */
 | 
			
		||||
    CONSUMPTION_EXPANSION_INCOME(9, "旧复购拓展收益", 1),
 | 
			
		||||
    CONSUMPTION_EXPANSION_INCOME(9, "旧复购拓展收益", 0, EnumsPrefixConstants.BONUS_ITEMS + 9),
 | 
			
		||||
    /**
 | 
			
		||||
     * 旧商城重销
 | 
			
		||||
     */
 | 
			
		||||
    RESALE_IN_THE_MALL(10, "旧商城重销", 1),
 | 
			
		||||
    RESALE_IN_THE_MALL(10, "旧商城重销", 0, EnumsPrefixConstants.BONUS_ITEMS + 10),
 | 
			
		||||
    /**
 | 
			
		||||
     * 平台服务费
 | 
			
		||||
     */
 | 
			
		||||
    PLATFORM_SERVICE_FEE(11, "旧平台服务费", 1),
 | 
			
		||||
    PLATFORM_SERVICE_FEE(11, "旧平台服务费", 0, EnumsPrefixConstants.BONUS_ITEMS + 11),
 | 
			
		||||
    /**
 | 
			
		||||
     * 复购券
 | 
			
		||||
     */
 | 
			
		||||
    REPURCHASE_COUPONS(12, "旧复购券", 1),
 | 
			
		||||
    REPURCHASE_COUPONS(12, "旧复购券", 0, EnumsPrefixConstants.BONUS_ITEMS + 12),
 | 
			
		||||
    /**
 | 
			
		||||
     * 复购券均分收益
 | 
			
		||||
     */
 | 
			
		||||
    REPURCHASE_COUPONS_SHARE(13, "旧复购券均分", 1),
 | 
			
		||||
    REPURCHASE_COUPONS_SHARE(13, "旧复购券均分", 0, EnumsPrefixConstants.BONUS_ITEMS + 13),
 | 
			
		||||
 | 
			
		||||
    ////////////////////////////////////////////////// 新奖项 //////////////////////////////////////////////////
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * 直推级差收益 -- 秒结,日奖
 | 
			
		||||
     */
 | 
			
		||||
    RETAIL_RANGE_INCOME(25, "直推级差收益", 0),
 | 
			
		||||
    RETAIL_RANGE_INCOME(25, "直推收益", 0, EnumsPrefixConstants.BONUS_ITEMS + 25),
 | 
			
		||||
    /**
 | 
			
		||||
     * 复购级差收益 -- 秒结,日奖
 | 
			
		||||
     */
 | 
			
		||||
    RETAIL_REPURCHASE_INCOME(35, "复购级差收益", 0),
 | 
			
		||||
    RETAIL_REPURCHASE_INCOME(35, "复购收益", 0, EnumsPrefixConstants.BONUS_ITEMS + 35),
 | 
			
		||||
 | 
			
		||||
    ;
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -90,5 +90,8 @@ public enum EBonusItems {
 | 
			
		|||
     * 是否启用(0=是,1=否) -- 来源EYesNo
 | 
			
		||||
     */
 | 
			
		||||
    private final int enable;
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * 国际化翻译key值
 | 
			
		||||
     */
 | 
			
		||||
    private final String key;
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -59,7 +59,7 @@ public enum EGrade {
 | 
			
		|||
     */
 | 
			
		||||
    BRANCH_COMPANY(7, 80, "V6", 0, EnumsPrefixConstants.GRADE + "80", MemberFrameworkConstants.COUNTY_AGENT),
 | 
			
		||||
    /**
 | 
			
		||||
     * 总公司
 | 
			
		||||
     * 公司
 | 
			
		||||
     */
 | 
			
		||||
    COMPANY(8, 90, "V7", 0, EnumsPrefixConstants.GRADE + "90", MemberFrameworkConstants.CITY_AGENT),
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -12,7 +12,7 @@ import lombok.Getter;
 | 
			
		|||
public enum EUpgradeType {
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * 1=自动升级 -- 目前只高级店主升级为自动升级
 | 
			
		||||
     * 1=自动升级 (奖衔),2=手动升级(等级奖衔),3=购买赠予(奖衔) 4=购买升级(等级前台报单、升级) 5=活动升级(等级)
 | 
			
		||||
     */
 | 
			
		||||
    AUTO_UPGRADE(1, "自动升级", 0, EnumsPrefixConstants.UPGRADE_TYPE + 1),
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -116,7 +116,7 @@ public class CuMemberBonus extends BaseEntity {
 | 
			
		|||
    private BigDecimal repurPushIncome;
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * 复购级差收益 -- 新复购级差收益
 | 
			
		||||
     * 复购级差收益
 | 
			
		||||
     */
 | 
			
		||||
    @TableField("REPUR_RANGE_INCOME")
 | 
			
		||||
    private BigDecimal repurRangeIncome;
 | 
			
		||||
| 
						 | 
				
			
			@ -224,7 +224,7 @@ public class CuMemberBonus extends BaseEntity {
 | 
			
		|||
    private BigDecimal makerRealSubtotal;
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * 新零售直推收益 -- 新直推级差收益
 | 
			
		||||
     * 新零售直推收益
 | 
			
		||||
     */
 | 
			
		||||
    @TableField("RETAIL_RANGE_INCOME")
 | 
			
		||||
    private BigDecimal retailRangeIncome;
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -0,0 +1,23 @@
 | 
			
		|||
package com.hzs.common.domain.member.detail.ext;
 | 
			
		||||
 | 
			
		||||
import com.hzs.common.domain.member.detail.CuMemberAwards;
 | 
			
		||||
import lombok.Data;
 | 
			
		||||
import lombok.EqualsAndHashCode;
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * @Description: 奖衔升级记录扩展类
 | 
			
		||||
 * @Author: jiang chao
 | 
			
		||||
 * @Time: 2024/2/28 16:38
 | 
			
		||||
 * @Classname: CuMemberAwardsExt
 | 
			
		||||
 * @PackageName: com.hzs.common.domain.member.detail.ext
 | 
			
		||||
 */
 | 
			
		||||
@EqualsAndHashCode(callSuper = true)
 | 
			
		||||
@Data
 | 
			
		||||
public class CuMemberAwardsExt extends CuMemberAwards {
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * 奖衔值
 | 
			
		||||
     */
 | 
			
		||||
    private Integer awardsValue;
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			@ -35,6 +35,14 @@ public class SaOrderExt extends SaOrder {
 | 
			
		|||
     * 会员电话
 | 
			
		||||
     */
 | 
			
		||||
    private String memberPhone;
 | 
			
		||||
    /**
 | 
			
		||||
     * 服务编号
 | 
			
		||||
     */
 | 
			
		||||
    private String memberServiceCode;
 | 
			
		||||
    /**
 | 
			
		||||
     * 会员昵称
 | 
			
		||||
     */
 | 
			
		||||
    private String memberNickName;
 | 
			
		||||
    /**
 | 
			
		||||
     * 所属体系
 | 
			
		||||
     */
 | 
			
		||||
| 
						 | 
				
			
			@ -53,12 +61,25 @@ public class SaOrderExt extends SaOrder {
 | 
			
		|||
     * 创建人姓名
 | 
			
		||||
     */
 | 
			
		||||
    private String creatorName;
 | 
			
		||||
    /**
 | 
			
		||||
     * 创建人服务编号
 | 
			
		||||
     */
 | 
			
		||||
    private String creatorServiceCode;
 | 
			
		||||
    /**
 | 
			
		||||
     * 创建人昵称
 | 
			
		||||
     */
 | 
			
		||||
    private String creatorNickName;
 | 
			
		||||
    /**
 | 
			
		||||
     * 创建人体系
 | 
			
		||||
     */
 | 
			
		||||
    private Long creatorPkVertex;
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * 结算国
 | 
			
		||||
     */
 | 
			
		||||
    private Integer pkSettleCountry;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * 审核状态(0=待提交,1=待审核,2=审核通过,3=审核驳回)
 | 
			
		||||
     */
 | 
			
		||||
| 
						 | 
				
			
			@ -78,6 +99,11 @@ public class SaOrderExt extends SaOrder {
 | 
			
		|||
     */
 | 
			
		||||
    private Long pkCenterCode;
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * 店铺等级
 | 
			
		||||
     */
 | 
			
		||||
    private Integer pkStoreLevel;
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * 订单明细表
 | 
			
		||||
     */
 | 
			
		||||
| 
						 | 
				
			
			@ -108,6 +134,11 @@ public class SaOrderExt extends SaOrder {
 | 
			
		|||
     */
 | 
			
		||||
    private Integer editType;
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * 提货码
 | 
			
		||||
     */
 | 
			
		||||
    private String selfCode;
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * 公司
 | 
			
		||||
     */
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -9,7 +9,12 @@ import lombok.EqualsAndHashCode;
 | 
			
		|||
import java.util.List;
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * 自提订单申请
 | 
			
		||||
 * @description: 自提订单申请
 | 
			
		||||
 * @author: sui q
 | 
			
		||||
 * @time: 2023/4/19 19:28
 | 
			
		||||
 * @classname: SaOrderSelfLogExt
 | 
			
		||||
 * @package_name: com.hzs.common.domain.sale.ext
 | 
			
		||||
 * version 1.0.0
 | 
			
		||||
 */
 | 
			
		||||
@EqualsAndHashCode(callSuper = true)
 | 
			
		||||
@Data
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in New Issue