forked from angelo/java-retail-app
				
			Compare commits
	
		
			3 Commits
		
	
	
		
			af4d056488
			...
			d299b38890
		
	
	| Author | SHA1 | Date | 
|---|---|---|
| 
							
							
								
								 | 
						d299b38890 | |
| 
							
							
								
								 | 
						08fdaf709f | |
| 
							
							
								
								 | 
						8665a3c606 | 
| 
						 | 
				
			
			@ -608,12 +608,12 @@ public interface CuMemberMapper extends BaseMapper<CuMember> {
 | 
			
		|||
    CuMember getShopkeeperMember(@Param("pkMember") Long pkMember, @Param("gradeValue") Integer gradeValue);
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * 查询高级店主
 | 
			
		||||
     * 查询会员等级
 | 
			
		||||
     *
 | 
			
		||||
     * @param pkMember
 | 
			
		||||
     * @return
 | 
			
		||||
     */
 | 
			
		||||
    CuMember getGradeSvipMember(@Param("pkMember") Long pkMember);
 | 
			
		||||
    CuMemberExt getGradeSvipMember(@Param("pkMember") Long pkMember, @Param("gradeValue") Integer gradeValue);
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * 查询会员直推大于博羚店主的注册、升级订单查询会员直推大于博羚店主的注册、升级订单
 | 
			
		||||
| 
						 | 
				
			
			@ -622,7 +622,7 @@ public interface CuMemberMapper extends BaseMapper<CuMember> {
 | 
			
		|||
     * @param orderCode
 | 
			
		||||
     * @return
 | 
			
		||||
     */
 | 
			
		||||
    SaOrder listRecommendVipOrder(@Param("pkMember") Long pkMember, @Param("orderCode") String orderCode);
 | 
			
		||||
    SaOrder listRecommendVipOrder(@Param("pkMember") Long pkMember, @Param("orderCode") String orderCode, @Param("gradeValue") Integer gradeValue);
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -878,12 +878,12 @@ public interface ICuMemberService extends IService<CuMember> {
 | 
			
		|||
    CuMember getShopkeeperMember(Long pkMember, Integer gradeValue);
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * 查询高级店主
 | 
			
		||||
     * 查询会员等级
 | 
			
		||||
     *
 | 
			
		||||
     * @param pkMember
 | 
			
		||||
     * @return
 | 
			
		||||
     */
 | 
			
		||||
    CuMember getGradeSvipMember(Long pkMember);
 | 
			
		||||
    CuMemberExt getGradeSvipMember(Long pkMember, Integer gradeValue);
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * 查询会员直推大于博羚店主的注册、升级订单查询会员直推大于博羚店主的注册、升级订单
 | 
			
		||||
| 
						 | 
				
			
			@ -892,7 +892,7 @@ public interface ICuMemberService extends IService<CuMember> {
 | 
			
		|||
     * @param orderCode
 | 
			
		||||
     * @return
 | 
			
		||||
     */
 | 
			
		||||
    SaOrder listRecommendVipOrder(Long pkMember, String orderCode);
 | 
			
		||||
    SaOrder listRecommendVipOrder(Long pkMember, String orderCode, Integer gradeValue);
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * 查询汇总
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1605,12 +1605,12 @@ public class CuMemberBusinessServiceImpl implements ICuMemberBusinessService {
 | 
			
		|||
        if (null == gradeDTO) {
 | 
			
		||||
            gradeDTO = iGradeServiceApi.getGrade(cuMember.getPkSettleGrade()).getData();
 | 
			
		||||
        }
 | 
			
		||||
        if (gradeDTO.getGradeValue() >= EGrade.VIP.getValue()) {
 | 
			
		||||
            // 会员等级大于等于 博羚店主,推荐人如果也是博羚店主,需要升级为高级店主
 | 
			
		||||
            CuMember parentMember = iCuMemberService.getShopkeeperMember(cuMember.getPkParent(), EGrade.VIP.getValue());
 | 
			
		||||
        if (gradeDTO.getGradeValue() >= EGrade.REGION.getValue()) {
 | 
			
		||||
            // 会员等级大于等于 区域代理,推荐人如果也是区域代理,需要升级为董事代理
 | 
			
		||||
            CuMember parentMember = iCuMemberService.getShopkeeperMember(cuMember.getPkParent(), EGrade.REGION.getValue());
 | 
			
		||||
            if (null != parentMember) {
 | 
			
		||||
                // 记录升级历史
 | 
			
		||||
                GradeDTO upgradeDTO = iGradeServiceApi.getGradeByGradeValue(EGrade.S_VIP.getValue(), cuMember.getPkSettleCountry()).getData();
 | 
			
		||||
                GradeDTO upgradeDTO = iGradeServiceApi.getGradeByGradeValue(EGrade.DIRECTOR.getValue(), cuMember.getPkSettleCountry()).getData();
 | 
			
		||||
                CuMemberLevel cuMemberLevel = CuMemberLevel.builder()
 | 
			
		||||
                        .pkMember(parentMember.getPkId())
 | 
			
		||||
                        .upType(EUpgradeType.AUTO_UPGRADE.getValue())
 | 
			
		||||
| 
						 | 
				
			
			@ -1630,12 +1630,12 @@ public class CuMemberBusinessServiceImpl implements ICuMemberBusinessService {
 | 
			
		|||
                updateWrapper.set(CuMember::getModifiedTime, new Date());
 | 
			
		||||
                iCuMemberService.update(updateWrapper);
 | 
			
		||||
            }
 | 
			
		||||
        } else if (gradeDTO.getGradeValue() >= EGrade.REGION.getValue())  {
 | 
			
		||||
            // 会员等级大于等于 区域代理,推荐人如果也是区域代理,需要升级为董事代理
 | 
			
		||||
            CuMember parentMember = iCuMemberService.getShopkeeperMember(cuMember.getPkParent(), EGrade.REGION.getValue());
 | 
			
		||||
        } else if (gradeDTO.getGradeValue() >= EGrade.VIP.getValue()) {
 | 
			
		||||
            // 会员等级大于等于 博羚店主,推荐人如果也是博羚店主,需要升级为高级店主
 | 
			
		||||
            CuMember parentMember = iCuMemberService.getShopkeeperMember(cuMember.getPkParent(), EGrade.VIP.getValue());
 | 
			
		||||
            if (null != parentMember) {
 | 
			
		||||
                // 记录升级历史
 | 
			
		||||
                GradeDTO upgradeDTO = iGradeServiceApi.getGradeByGradeValue(EGrade.DIRECTOR.getValue(), cuMember.getPkSettleCountry()).getData();
 | 
			
		||||
                GradeDTO upgradeDTO = iGradeServiceApi.getGradeByGradeValue(EGrade.S_VIP.getValue(), cuMember.getPkSettleCountry()).getData();
 | 
			
		||||
                CuMemberLevel cuMemberLevel = CuMemberLevel.builder()
 | 
			
		||||
                        .pkMember(parentMember.getPkId())
 | 
			
		||||
                        .upType(EUpgradeType.AUTO_UPGRADE.getValue())
 | 
			
		||||
| 
						 | 
				
			
			@ -1674,38 +1674,47 @@ public class CuMemberBusinessServiceImpl implements ICuMemberBusinessService {
 | 
			
		|||
            memberLevelQuery.eq(CuMemberLevel::getUpType, EUpgradeType.AUTO_UPGRADE.getValue());
 | 
			
		||||
            CuMemberLevel parentLevel = iCuMemberLevelService.getOne(memberLevelQuery);
 | 
			
		||||
            if (null != parentLevel) {
 | 
			
		||||
                // 查询推荐人信息(必须是高级店主)
 | 
			
		||||
                CuMember parentMember = iCuMemberService.getGradeSvipMember(parentLevel.getPkMember());
 | 
			
		||||
                // 查询推荐人及等级信息
 | 
			
		||||
                CuMemberExt parentMember = iCuMemberService.getGradeSvipMember(parentLevel.getPkMember(), null);
 | 
			
		||||
                if (null != parentMember) {
 | 
			
		||||
                    // 推荐是高级店主,查询直推博羚店主以上订单
 | 
			
		||||
                    SaOrder parentOrder = iCuMemberService.listRecommendVipOrder(parentMember.getPkId(), saOrder.getOrderCode());
 | 
			
		||||
                    if (null != parentOrder) {
 | 
			
		||||
                        // 存在其它博羚店主订单,重新处理升级记录
 | 
			
		||||
                        CuMemberLevel parentNewLevel = BeanUtil.copyProperties(parentLevel, CuMemberLevel.class);
 | 
			
		||||
                        parentNewLevel.setPkId(null);
 | 
			
		||||
                        parentNewLevel.setPkOrder(parentOrder.getPkId());
 | 
			
		||||
                        parentNewLevel.setUpgradeTime(parentOrder.getPayTime());
 | 
			
		||||
                        parentNewLevel.setModifiedTime(parentOrder.getPayTime());
 | 
			
		||||
                        parentNewLevel.setPkModified(parentOrder.getPkMember());
 | 
			
		||||
                        iCuMemberLevelService.save(parentNewLevel);
 | 
			
		||||
                    } else {
 | 
			
		||||
                        // 不存在其它博羚店主订单,会员需要降级处理
 | 
			
		||||
                        LambdaUpdateWrapper<CuMember> parentMemberUpdate = new LambdaUpdateWrapper<>();
 | 
			
		||||
                        parentMemberUpdate.eq(CuMember::getPkId, parentMember.getPkId());
 | 
			
		||||
                        parentMemberUpdate.set(CuMember::getPkSettleGrade, parentLevel.getOldLevel());
 | 
			
		||||
                        parentMemberUpdate.set(CuMember::getModifiedTime, currentDateTime);
 | 
			
		||||
                        iCuMemberService.update(parentMemberUpdate);
 | 
			
		||||
                    SaOrder parentOrder = null;
 | 
			
		||||
                    if (parentMember.getGradeValue() == EGrade.DIRECTOR.getValue()) {
 | 
			
		||||
                        // 推荐人是董事代理,查询直推区域代理以上订单
 | 
			
		||||
                        parentOrder = iCuMemberService.listRecommendVipOrder(parentMember.getPkId(), saOrder.getOrderCode(), EGrade.REGION.getValue());
 | 
			
		||||
                    } else if (parentMember.getGradeValue() == EGrade.S_VIP.getValue()) {
 | 
			
		||||
                        // 推荐人是高级店主,查询直推博羚店主以上订单
 | 
			
		||||
                        parentOrder = iCuMemberService.listRecommendVipOrder(parentMember.getPkId(), saOrder.getOrderCode(), EGrade.VIP.getValue());
 | 
			
		||||
                    }
 | 
			
		||||
                    // 删除原来升级记录
 | 
			
		||||
                    LambdaUpdateWrapper<CuMemberLevel> updateMemberLevel = new LambdaUpdateWrapper<>();
 | 
			
		||||
                    updateMemberLevel.eq(CuMemberLevel::getPkId, parentLevel.getPkId());
 | 
			
		||||
                    updateMemberLevel.set(CuMemberLevel::getDelFlag, EDelFlag.DELETE.getValue());
 | 
			
		||||
                    updateMemberLevel.set(CuMemberLevel::getModifiedTime, currentDateTime);
 | 
			
		||||
                    iCuMemberLevelService.update(updateMemberLevel);
 | 
			
		||||
                    this.handleParentLevelUpdate(parentOrder, parentLevel, parentMember, currentDateTime);
 | 
			
		||||
                }
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    private void handleParentLevelUpdate(SaOrder parentOrder, CuMemberLevel parentLevel, CuMemberExt parentMember, Date currentDateTime) {
 | 
			
		||||
        if (null != parentOrder) {
 | 
			
		||||
            // 存在其它博羚店主订单,重新处理升级记录
 | 
			
		||||
            CuMemberLevel parentNewLevel = BeanUtil.copyProperties(parentLevel, CuMemberLevel.class);
 | 
			
		||||
            parentNewLevel.setPkId(null);
 | 
			
		||||
            parentNewLevel.setPkOrder(parentOrder.getPkId());
 | 
			
		||||
            parentNewLevel.setUpgradeTime(parentOrder.getPayTime());
 | 
			
		||||
            parentNewLevel.setModifiedTime(parentOrder.getPayTime());
 | 
			
		||||
            parentNewLevel.setPkModified(parentOrder.getPkMember());
 | 
			
		||||
            iCuMemberLevelService.save(parentNewLevel);
 | 
			
		||||
        } else {
 | 
			
		||||
            // 不存在其它博羚店主订单,会员需要降级处理
 | 
			
		||||
            LambdaUpdateWrapper<CuMember> parentMemberUpdate = new LambdaUpdateWrapper<>();
 | 
			
		||||
            parentMemberUpdate.eq(CuMember::getPkId, parentMember.getPkId());
 | 
			
		||||
            parentMemberUpdate.set(CuMember::getPkSettleGrade, parentLevel.getOldLevel());
 | 
			
		||||
            parentMemberUpdate.set(CuMember::getModifiedTime, currentDateTime);
 | 
			
		||||
            iCuMemberService.update(parentMemberUpdate);
 | 
			
		||||
        }
 | 
			
		||||
        // 删除原来升级记录
 | 
			
		||||
        LambdaUpdateWrapper<CuMemberLevel> updateMemberLevel = new LambdaUpdateWrapper<>();
 | 
			
		||||
        updateMemberLevel.eq(CuMemberLevel::getPkId, parentLevel.getPkId());
 | 
			
		||||
        updateMemberLevel.set(CuMemberLevel::getDelFlag, EDelFlag.DELETE.getValue());
 | 
			
		||||
        updateMemberLevel.set(CuMemberLevel::getModifiedTime, currentDateTime);
 | 
			
		||||
        iCuMemberLevelService.update(updateMemberLevel);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -3250,13 +3250,13 @@ public class CuMemberServiceImpl extends ServiceImpl<CuMemberMapper, CuMember> i
 | 
			
		|||
    }
 | 
			
		||||
 | 
			
		||||
    @Override
 | 
			
		||||
    public CuMember getGradeSvipMember(Long pkMember) {
 | 
			
		||||
        return baseMapper.getGradeSvipMember(pkMember);
 | 
			
		||||
    public CuMemberExt getGradeSvipMember(Long pkMember, Integer gradeValue) {
 | 
			
		||||
        return baseMapper.getGradeSvipMember(pkMember, gradeValue);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @Override
 | 
			
		||||
    public SaOrder listRecommendVipOrder(Long pkMember, String orderCode) {
 | 
			
		||||
        return baseMapper.listRecommendVipOrder(pkMember, orderCode);
 | 
			
		||||
    public SaOrder listRecommendVipOrder(Long pkMember, String orderCode, Integer gradeValue) {
 | 
			
		||||
        return baseMapper.listRecommendVipOrder(pkMember, orderCode, gradeValue);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -2382,16 +2382,18 @@
 | 
			
		|||
          and bg.grade_value = #{gradeValue}
 | 
			
		||||
    </select>
 | 
			
		||||
 | 
			
		||||
    <!-- 查询高级店主 -->
 | 
			
		||||
    <select id="getGradeSvipMember" resultType="com.hzs.common.domain.member.base.CuMember">
 | 
			
		||||
        select cm.*
 | 
			
		||||
    <!-- 查询会员等级 -->
 | 
			
		||||
    <select id="getGradeSvipMember" resultType="com.hzs.common.domain.member.ext.CuMemberExt">
 | 
			
		||||
        select cm.*, bg.grade_value gradeValue
 | 
			
		||||
        from cu_member cm
 | 
			
		||||
                 left join bd_grade bg
 | 
			
		||||
                           on bg.pk_id = cm.pk_settle_grade
 | 
			
		||||
        where cm.del_flag = 0
 | 
			
		||||
          and cm.category = 0
 | 
			
		||||
          and cm.pk_id = #{pkMember}
 | 
			
		||||
          and bg.grade_value = 70
 | 
			
		||||
          <!--
 | 
			
		||||
          and bg.grade_value = #{gradeValue}
 | 
			
		||||
          -->
 | 
			
		||||
    </select>
 | 
			
		||||
 | 
			
		||||
    <!-- 查询会员直推大于博羚店主的注册、升级订单 -->
 | 
			
		||||
| 
						 | 
				
			
			@ -2416,7 +2418,7 @@
 | 
			
		|||
        <if test="orderCode != null and orderCode != ''">
 | 
			
		||||
            and so.order_code != #{orderCode}
 | 
			
		||||
        </if>
 | 
			
		||||
        and bg.grade_value >= 60) so
 | 
			
		||||
        and bg.grade_value >= #{gradeValue}) so
 | 
			
		||||
        where rownum = 1
 | 
			
		||||
    </select>
 | 
			
		||||
    <select id="getMemberCountWithGradeAndParent" resultType="java.lang.Integer">
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -2201,23 +2201,10 @@ public class SaOrderServiceImpl extends ServiceImpl<SaOrderMapper, SaOrder> impl
 | 
			
		|||
                    .max(Comparator.comparingInt(BdGrade::getGradeValue)).get();
 | 
			
		||||
        } else {
 | 
			
		||||
            // 非注册处理
 | 
			
		||||
//            if (checkUpgrade) {
 | 
			
		||||
//                // 当前等级大于等于V3 或 盒数商品为0,则直接返回当前等级
 | 
			
		||||
//                if (memberGrade.getGradeValue().compareTo(EGrade.MAKER.getValue()) >= 0
 | 
			
		||||
//                        || boxTotal == 0) {
 | 
			
		||||
//                    return memberGrade;
 | 
			
		||||
//                }
 | 
			
		||||
//            } else {
 | 
			
		||||
//                // 当前等级大于V3 或 盒数商品为0,则直接返回当前等级
 | 
			
		||||
//                if (memberGrade.getGradeValue().compareTo(EGrade.MAKER.getValue()) > 0
 | 
			
		||||
//                        || boxTotal == 0) {
 | 
			
		||||
//                    return memberGrade;
 | 
			
		||||
//                }
 | 
			
		||||
//            }
 | 
			
		||||
 | 
			
		||||
            // 查询等级比现在当前等级大的  并且 排除高级店主,然后倒序排序,再查询 购买盒数 <= 等级盒数 的第一个等级,就是当前升级的等级
 | 
			
		||||
            Optional<BdGrade> gradeOptional = gradeList.stream()
 | 
			
		||||
                    .filter(tmpGrade -> tmpGrade.getGradeValue() != EGrade.S_VIP.getValue() && tmpGrade.getGradeValue() > memberGrade.getGradeValue())
 | 
			
		||||
                    .filter(tmpGrade -> tmpGrade.getGradeValue() != EGrade.S_VIP.getValue() && tmpGrade.getGradeValue() != EGrade.DIRECTOR.getValue()
 | 
			
		||||
                            && tmpGrade.getGradeValue() > memberGrade.getGradeValue())
 | 
			
		||||
                    .sorted(Comparator.comparingInt(BdGrade::getGradeValue).reversed())
 | 
			
		||||
                    .filter(tmpGrade -> tmpGrade.getBoxNumber().compareTo(BigDecimal.ZERO) > 0)
 | 
			
		||||
                    .filter(tmpGrade -> tmpGrade.getBoxNumber().compareTo(boxTotal) <= 0).findFirst();
 | 
			
		||||
| 
						 | 
				
			
			@ -2238,7 +2225,7 @@ public class SaOrderServiceImpl extends ServiceImpl<SaOrderMapper, SaOrder> impl
 | 
			
		|||
     */
 | 
			
		||||
    @Override
 | 
			
		||||
    public BigDecimal handleBaseBoxNum(CuMember cuMember, BdGrade memberGrade, List<BdGrade> gradeList, List<String> boxWaresList,
 | 
			
		||||
                                Integer systemType) {
 | 
			
		||||
                                       Integer systemType) {
 | 
			
		||||
        // 升级盒数基数
 | 
			
		||||
        BigDecimal baseBoxNum = BigDecimal.ZERO;
 | 
			
		||||
        // 会员所有升级记录
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in New Issue