forked from angelo/java-retail-app
				
			Compare commits
	
		
			4 Commits
		
	
	
		
			5de0a3ee32
			...
			a97f519179
		
	
	| Author | SHA1 | Date | 
|---|---|---|
| 
							
							
								
								 | 
						a97f519179 | |
| 
							
							
								
								 | 
						fcda6b1b77 | |
| 
							
							
								
								 | 
						848d6a0756 | |
| 
							
							
								
								 | 
						fc5826caf1 | 
| 
						 | 
				
			
			@ -291,38 +291,40 @@ public class BonusSettleRangeHandle extends BonusSettleHandle {
 | 
			
		|||
                        // V1 推拿 60
 | 
			
		||||
                        rangeBonusIncome = RetailConstants.V1_V1;
 | 
			
		||||
                        // 前面累计的奖金
 | 
			
		||||
                        totalBonus = totalBonus.add(RetailConstants.V1_V1);
 | 
			
		||||
                        totalBonus = 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));
 | 
			
		||||
                        totalBonus = RetailConstants.V2_V1;
 | 
			
		||||
                    } else if (EGrade.MAKER.getValue() == targetGradeValue) {
 | 
			
		||||
                        // V3 推拿 100,或者减去之前累计
 | 
			
		||||
                        rangeBonusIncome = RetailConstants.V3_V1.subtract(totalBonus);
 | 
			
		||||
                        // 前面累计的奖金
 | 
			
		||||
                        totalBonus = totalBonus.add(RetailConstants.V3_V1.subtract(totalBonus));
 | 
			
		||||
                        totalBonus = RetailConstants.V3_V1;
 | 
			
		||||
                    } else if (EGrade.VIP.getValue() == targetGradeValue) {
 | 
			
		||||
                        // V4 推拿 200,或者减去之前累计
 | 
			
		||||
                        rangeBonusIncome = RetailConstants.V4_V1.subtract(totalBonus);
 | 
			
		||||
                        // 前面累计的奖金
 | 
			
		||||
                        totalBonus = totalBonus.add(RetailConstants.V4_V1.subtract(totalBonus));
 | 
			
		||||
                        totalBonus = RetailConstants.V4_V1;
 | 
			
		||||
                    } else if (EGrade.S_VIP.getValue() == targetGradeValue) {
 | 
			
		||||
                        // V5 推拿 208,或者减去之前累计
 | 
			
		||||
                        rangeBonusIncome = RetailConstants.V5_V1.subtract(totalBonus);
 | 
			
		||||
                        // 前面累计的奖金
 | 
			
		||||
                        totalBonus = totalBonus.add(RetailConstants.V5_V1.subtract(totalBonus));
 | 
			
		||||
                        totalBonus = RetailConstants.V5_V1;
 | 
			
		||||
                    } else if (EGrade.BRANCH_COMPANY.getValue() == targetGradeValue) {
 | 
			
		||||
                        // V6 推拿 220 ,或者减去之前累计
 | 
			
		||||
                        rangeBonusIncome = RetailConstants.V6_V1.subtract(totalBonus);
 | 
			
		||||
                        // 前面累计的奖金
 | 
			
		||||
                        totalBonus = totalBonus.add(RetailConstants.V6_V1.subtract(totalBonus));
 | 
			
		||||
                        totalBonus = RetailConstants.V6_V1;
 | 
			
		||||
                    } else if (EGrade.COMPANY.getValue() == targetGradeValue) {
 | 
			
		||||
                        // V7 推拿 240,或者减去之前累计
 | 
			
		||||
                        rangeBonusIncome = RetailConstants.V7_V1.subtract(totalBonus);
 | 
			
		||||
                        // 前面累计的奖金
 | 
			
		||||
                        totalBonus = totalBonus.add(RetailConstants.V7_V1.subtract(totalBonus));
 | 
			
		||||
                        totalBonus = RetailConstants.V7_V1;
 | 
			
		||||
                    }
 | 
			
		||||
                    // 前一级会员等级
 | 
			
		||||
                    beforeGradeValue = targetGradeValue;
 | 
			
		||||
                }
 | 
			
		||||
            } else if (EGrade.YOU_KE.getValue() == orderGradeValue) {
 | 
			
		||||
                // 订单等级是VIP
 | 
			
		||||
| 
						 | 
				
			
			@ -332,38 +334,40 @@ public class BonusSettleRangeHandle extends BonusSettleHandle {
 | 
			
		|||
                        // V1 推拿 300
 | 
			
		||||
                        rangeBonusIncome = RetailConstants.V1_V2;
 | 
			
		||||
                        // 前面累计的奖金
 | 
			
		||||
                        totalBonus = totalBonus.add(RetailConstants.V1_V2);
 | 
			
		||||
                        totalBonus = 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));
 | 
			
		||||
                        totalBonus = RetailConstants.V2_V2;
 | 
			
		||||
                    } else if (EGrade.MAKER.getValue() == targetGradeValue) {
 | 
			
		||||
                        // V3 推拿 500,或者减去之前累计
 | 
			
		||||
                        rangeBonusIncome = RetailConstants.V3_V2.subtract(totalBonus);
 | 
			
		||||
                        // 前面累计的奖金
 | 
			
		||||
                        totalBonus = totalBonus.add(RetailConstants.V3_V2.subtract(totalBonus));
 | 
			
		||||
                        totalBonus = RetailConstants.V3_V2;
 | 
			
		||||
                    } else if (EGrade.VIP.getValue() == targetGradeValue) {
 | 
			
		||||
                        // V4 推拿 1000,或者减去之前累计
 | 
			
		||||
                        rangeBonusIncome = RetailConstants.V4_V2.subtract(totalBonus);
 | 
			
		||||
                        // 前面累计的奖金
 | 
			
		||||
                        totalBonus = totalBonus.add(RetailConstants.V4_V2.subtract(totalBonus));
 | 
			
		||||
                        totalBonus = RetailConstants.V4_V2;
 | 
			
		||||
                    } else if (EGrade.S_VIP.getValue() == targetGradeValue) {
 | 
			
		||||
                        // V5 推拿 1040,或者减去之前累计
 | 
			
		||||
                        rangeBonusIncome = RetailConstants.V5_V2.subtract(totalBonus);
 | 
			
		||||
                        // 前面累计的奖金
 | 
			
		||||
                        totalBonus = totalBonus.add(RetailConstants.V5_V2.subtract(totalBonus));
 | 
			
		||||
                        totalBonus = RetailConstants.V5_V2;
 | 
			
		||||
                    } else if (EGrade.BRANCH_COMPANY.getValue() == targetGradeValue) {
 | 
			
		||||
                        // V6 推拿 1100,或者减去之前累计
 | 
			
		||||
                        rangeBonusIncome = RetailConstants.V6_V2.subtract(totalBonus);
 | 
			
		||||
                        // 前面累计的奖金
 | 
			
		||||
                        totalBonus = totalBonus.add(RetailConstants.V6_V2.subtract(totalBonus));
 | 
			
		||||
                        totalBonus = RetailConstants.V6_V2;
 | 
			
		||||
                    } else if (EGrade.COMPANY.getValue() == targetGradeValue) {
 | 
			
		||||
                        // V7 推拿 1200,或者减去之前累计
 | 
			
		||||
                        rangeBonusIncome = RetailConstants.V7_V2.subtract(totalBonus);
 | 
			
		||||
                        // 前面累计的奖金
 | 
			
		||||
                        totalBonus = totalBonus.add(RetailConstants.V7_V2.subtract(totalBonus));
 | 
			
		||||
                        totalBonus = RetailConstants.V7_V2;
 | 
			
		||||
                    }
 | 
			
		||||
                    // 前一级会员等级
 | 
			
		||||
                    beforeGradeValue = targetGradeValue;
 | 
			
		||||
                }
 | 
			
		||||
            } else if (EGrade.MAKER.getValue() == orderGradeValue) {
 | 
			
		||||
                // 订单是合伙人
 | 
			
		||||
| 
						 | 
				
			
			@ -373,38 +377,40 @@ public class BonusSettleRangeHandle extends BonusSettleHandle {
 | 
			
		|||
                        // V1 推拿 600
 | 
			
		||||
                        rangeBonusIncome = RetailConstants.V1_V3;
 | 
			
		||||
                        // 前面累计的奖金
 | 
			
		||||
                        totalBonus = totalBonus.add(RetailConstants.V1_V3);
 | 
			
		||||
                        totalBonus = 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));
 | 
			
		||||
                        totalBonus = RetailConstants.V2_V3;
 | 
			
		||||
                    } else if (EGrade.MAKER.getValue() == targetGradeValue) {
 | 
			
		||||
                        // V3 推拿 1000,或者减去之前累计
 | 
			
		||||
                        rangeBonusIncome = RetailConstants.V3_V3_1.subtract(totalBonus);
 | 
			
		||||
                        // 前面累计的奖金
 | 
			
		||||
                        totalBonus = totalBonus.add(RetailConstants.V3_V3_1.subtract(totalBonus));
 | 
			
		||||
                        totalBonus = RetailConstants.V3_V3_1;
 | 
			
		||||
                    } else if (EGrade.VIP.getValue() == targetGradeValue) {
 | 
			
		||||
                        // V4 推拿 2000,或者减去之前累计
 | 
			
		||||
                        rangeBonusIncome = RetailConstants.V4_V3.subtract(totalBonus);
 | 
			
		||||
                        // 前面累计的奖金
 | 
			
		||||
                        totalBonus = totalBonus.add(RetailConstants.V4_V3.subtract(totalBonus));
 | 
			
		||||
                        totalBonus = RetailConstants.V4_V3;
 | 
			
		||||
                    } else if (EGrade.S_VIP.getValue() == targetGradeValue) {
 | 
			
		||||
                        // V5 推拿 2080,或者减去之前累计
 | 
			
		||||
                        rangeBonusIncome = RetailConstants.V5_V3.subtract(totalBonus);
 | 
			
		||||
                        // 前面累计的奖金
 | 
			
		||||
                        totalBonus = totalBonus.add(RetailConstants.V5_V3.subtract(totalBonus));
 | 
			
		||||
                        totalBonus = RetailConstants.V5_V3;
 | 
			
		||||
                    } else if (EGrade.BRANCH_COMPANY.getValue() == targetGradeValue) {
 | 
			
		||||
                        // V6 推拿 2200,或者减去之前累计
 | 
			
		||||
                        rangeBonusIncome = RetailConstants.V6_V3.subtract(totalBonus);
 | 
			
		||||
                        // 前面累计的奖金
 | 
			
		||||
                        totalBonus = totalBonus.add(RetailConstants.V6_V3.subtract(totalBonus));
 | 
			
		||||
                        totalBonus = RetailConstants.V6_V3;
 | 
			
		||||
                    } else if (EGrade.COMPANY.getValue() == targetGradeValue) {
 | 
			
		||||
                        // V7 推拿 2400,或者减去之前累计
 | 
			
		||||
                        rangeBonusIncome = RetailConstants.V7_V3.subtract(totalBonus);
 | 
			
		||||
                        // 前面累计的奖金
 | 
			
		||||
                        totalBonus = totalBonus.add(RetailConstants.V7_V3.subtract(totalBonus));
 | 
			
		||||
                        totalBonus = RetailConstants.V7_V3;
 | 
			
		||||
                    }
 | 
			
		||||
                    // 前一级会员等级
 | 
			
		||||
                    beforeGradeValue = targetGradeValue;
 | 
			
		||||
                } else if (EGrade.MAKER.getValue() == beforeGradeValue
 | 
			
		||||
                        && EGrade.MAKER.getValue() == targetGradeValue) {
 | 
			
		||||
                    // 之前和现在都是合伙人,处理平级
 | 
			
		||||
| 
						 | 
				
			
			@ -412,56 +418,58 @@ public class BonusSettleRangeHandle extends BonusSettleHandle {
 | 
			
		|||
                        // V3第一平级 推拿 1200,或者减去之前累计
 | 
			
		||||
                        rangeBonusIncome = RetailConstants.V3_V3_2.subtract(totalBonus);
 | 
			
		||||
                        // 前面累计的奖金
 | 
			
		||||
                        totalBonus = totalBonus.add(RetailConstants.V3_V3_2.subtract(totalBonus));
 | 
			
		||||
                        totalBonus = RetailConstants.V3_V3_2;
 | 
			
		||||
                        v3Count++;
 | 
			
		||||
                    } else if (v3Count == 2) {
 | 
			
		||||
                        // V3第二平级 推拿 1300,或者减去之前累计
 | 
			
		||||
                        rangeBonusIncome = RetailConstants.V3_V3_3.subtract(totalBonus);
 | 
			
		||||
                        // 前面累计的奖金
 | 
			
		||||
                        totalBonus = totalBonus.add(RetailConstants.V3_V3_3.subtract(totalBonus));
 | 
			
		||||
                        totalBonus = RetailConstants.V3_V3_3;
 | 
			
		||||
                        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);
 | 
			
		||||
                        totalBonus = 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));
 | 
			
		||||
                        totalBonus = RetailConstants.V2_V4;
 | 
			
		||||
                    } else if (EGrade.MAKER.getValue() == targetGradeValue) {
 | 
			
		||||
                        // V3 推拿 2000,或者减去之前累计
 | 
			
		||||
                        rangeBonusIncome = RetailConstants.V3_V4_1.subtract(totalBonus);
 | 
			
		||||
                        // 前面累计的奖金
 | 
			
		||||
                        totalBonus = totalBonus.add(RetailConstants.V3_V4_1.subtract(totalBonus));
 | 
			
		||||
                        totalBonus = RetailConstants.V3_V4_1;
 | 
			
		||||
                    } else if (EGrade.VIP.getValue() == targetGradeValue) {
 | 
			
		||||
                        // V4 推拿 4000,或者减去之前累计
 | 
			
		||||
                        rangeBonusIncome = RetailConstants.V4_V4.subtract(totalBonus);
 | 
			
		||||
                        // 前面累计的奖金
 | 
			
		||||
                        totalBonus = totalBonus.add(RetailConstants.V4_V4.subtract(totalBonus));
 | 
			
		||||
                        totalBonus = RetailConstants.V4_V4;
 | 
			
		||||
                    } else if (EGrade.S_VIP.getValue() == targetGradeValue) {
 | 
			
		||||
                        // V5 推拿 4160,或者减去之前累计
 | 
			
		||||
                        rangeBonusIncome = RetailConstants.V5_V4.subtract(totalBonus);
 | 
			
		||||
                        // 前面累计的奖金
 | 
			
		||||
                        totalBonus = totalBonus.add(RetailConstants.V5_V4.subtract(totalBonus));
 | 
			
		||||
                        totalBonus = RetailConstants.V5_V4;
 | 
			
		||||
                    } else if (EGrade.BRANCH_COMPANY.getValue() == targetGradeValue) {
 | 
			
		||||
                        // V6 推拿 4400,或者减去之前累计
 | 
			
		||||
                        rangeBonusIncome = RetailConstants.V6_V4.subtract(totalBonus);
 | 
			
		||||
                        // 前面累计的奖金
 | 
			
		||||
                        totalBonus = totalBonus.add(RetailConstants.V6_V4.subtract(totalBonus));
 | 
			
		||||
                        totalBonus = RetailConstants.V6_V4;
 | 
			
		||||
                    } else if (EGrade.COMPANY.getValue() == targetGradeValue) {
 | 
			
		||||
                        // V7 推拿 4800,或者减去之前累计
 | 
			
		||||
                        rangeBonusIncome = RetailConstants.V7_V4.subtract(totalBonus);
 | 
			
		||||
                        // 前面累计的奖金
 | 
			
		||||
                        totalBonus = totalBonus.add(RetailConstants.V7_V4.subtract(totalBonus));
 | 
			
		||||
                        totalBonus = RetailConstants.V7_V4;
 | 
			
		||||
                    }
 | 
			
		||||
                    // 前一级会员等级
 | 
			
		||||
                    beforeGradeValue = targetGradeValue;
 | 
			
		||||
                } else if (EGrade.MAKER.getValue() == beforeGradeValue
 | 
			
		||||
                        && EGrade.MAKER.getValue() == targetGradeValue) {
 | 
			
		||||
                    // 之前和现在都是合伙人,处理平级
 | 
			
		||||
| 
						 | 
				
			
			@ -469,13 +477,13 @@ public class BonusSettleRangeHandle extends BonusSettleHandle {
 | 
			
		|||
                        // V3第一平级 推拿 2400,或者减去之前累计
 | 
			
		||||
                        rangeBonusIncome = RetailConstants.V3_V4_2.subtract(totalBonus);
 | 
			
		||||
                        // 前面累计的奖金
 | 
			
		||||
                        totalBonus = totalBonus.add(RetailConstants.V3_V4_2.subtract(totalBonus));
 | 
			
		||||
                        totalBonus = RetailConstants.V3_V4_2;
 | 
			
		||||
                        v3Count++;
 | 
			
		||||
                    } else if (v3Count == 2) {
 | 
			
		||||
                        // V3第二平级 推拿 2600,或者减去之前累计
 | 
			
		||||
                        rangeBonusIncome = RetailConstants.V3_V4_3.subtract(totalBonus);
 | 
			
		||||
                        // 前面累计的奖金
 | 
			
		||||
                        totalBonus = totalBonus.add(RetailConstants.V3_V4_3.subtract(totalBonus));
 | 
			
		||||
                        totalBonus = RetailConstants.V3_V4_3;
 | 
			
		||||
                        v3Count++;
 | 
			
		||||
                    }
 | 
			
		||||
                }
 | 
			
		||||
| 
						 | 
				
			
			@ -487,27 +495,27 @@ public class BonusSettleRangeHandle extends BonusSettleHandle {
 | 
			
		|||
                        // 博羚店主拿 50000
 | 
			
		||||
                        rangeBonusIncome = RetailConstants.V4_V6.subtract(totalBonus);
 | 
			
		||||
                        // 前面累计的奖金
 | 
			
		||||
                        totalBonus = totalBonus.add(RetailConstants.V4_V6.subtract(totalBonus));
 | 
			
		||||
                        totalBonus = RetailConstants.V4_V6;
 | 
			
		||||
                    } else if (EGrade.S_VIP.getValue() == targetGradeValue) {
 | 
			
		||||
                        // 高级店主拿 52000,或者减去之前累计
 | 
			
		||||
                        rangeBonusIncome = RetailConstants.V5_V6.subtract(totalBonus);
 | 
			
		||||
                        // 前面累计的奖金
 | 
			
		||||
                        totalBonus = totalBonus.add(RetailConstants.V5_V6.subtract(totalBonus));
 | 
			
		||||
                        totalBonus = RetailConstants.V5_V6;
 | 
			
		||||
                    } else if (EGrade.BRANCH_COMPANY.getValue() == targetGradeValue) {
 | 
			
		||||
                        // 分公司拿 55000,或者减去之前累计
 | 
			
		||||
                        rangeBonusIncome = RetailConstants.V6_V6.subtract(totalBonus);
 | 
			
		||||
                        // 前面累计的奖金
 | 
			
		||||
                        totalBonus = totalBonus.add(RetailConstants.V6_V6.subtract(totalBonus));
 | 
			
		||||
                        totalBonus = RetailConstants.V6_V6;
 | 
			
		||||
                    } else if (EGrade.COMPANY.getValue() == targetGradeValue) {
 | 
			
		||||
                        // 总公司拿 60000,或者减去之前累计
 | 
			
		||||
                        rangeBonusIncome = RetailConstants.V7_V6.subtract(totalBonus);
 | 
			
		||||
                        // 前面累计的奖金
 | 
			
		||||
                        totalBonus = totalBonus.add(RetailConstants.V7_V6.subtract(totalBonus));
 | 
			
		||||
                    }
 | 
			
		||||
                }
 | 
			
		||||
                        totalBonus = RetailConstants.V7_V6;
 | 
			
		||||
                    }
 | 
			
		||||
                    // 前一级会员等级
 | 
			
		||||
                    beforeGradeValue = targetGradeValue;
 | 
			
		||||
                }
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            if (rangeBonusIncome.compareTo(BigDecimal.ZERO) > 0) {
 | 
			
		||||
                // 处理直推级差收益
 | 
			
		||||
| 
						 | 
				
			
			@ -623,6 +631,8 @@ public class BonusSettleRangeHandle extends BonusSettleHandle {
 | 
			
		|||
                    // 前面累计的奖金
 | 
			
		||||
                    totalBonus = totalBonus.add(RetailConstants.REPURCHASE_V7.multiply(boxNum).subtract(totalBonus));
 | 
			
		||||
                }
 | 
			
		||||
                // 前一级会员等级
 | 
			
		||||
                beforeGradeValue = targetGradeValue;
 | 
			
		||||
            } else if (EGrade.MAKER.getValue() == beforeGradeValue
 | 
			
		||||
                    && EGrade.MAKER.getValue() == targetGradeValue) {
 | 
			
		||||
                // 之前和现在都是合伙人,处理平级
 | 
			
		||||
| 
						 | 
				
			
			@ -641,9 +651,6 @@ public class BonusSettleRangeHandle extends BonusSettleHandle {
 | 
			
		|||
                }
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            // 前一级会员等级
 | 
			
		||||
            beforeGradeValue = targetGradeValue;
 | 
			
		||||
 | 
			
		||||
            if (rangeBonusIncome.compareTo(BigDecimal.ZERO) > 0) {
 | 
			
		||||
                // 处理复购级差收益
 | 
			
		||||
                // 会员奖金
 | 
			
		||||
| 
						 | 
				
			
			@ -662,7 +669,7 @@ public class BonusSettleRangeHandle extends BonusSettleHandle {
 | 
			
		|||
                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()));
 | 
			
		||||
                    cuMemberBonus.setRepurRangeIncome(ComputeUtil.computeAdd(cuMemberBonus.getRepurRangeIncome(), cuMemberBonusRange.getPretaxIncome()));
 | 
			
		||||
                    setRetailTotal(bdBonusDeduct, cuMemberBonus, cuMemberBonusRange);
 | 
			
		||||
                }
 | 
			
		||||
                memberBonusRangeList.add(cuMemberBonusRange);
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 | 
			
		|||
import com.hzs.common.domain.member.base.CuMember;
 | 
			
		||||
import com.hzs.common.domain.member.detail.CuMemberGrade;
 | 
			
		||||
import com.hzs.common.domain.member.ext.CuMemberExt;
 | 
			
		||||
import com.hzs.common.domain.sale.order.SaOrder;
 | 
			
		||||
import com.hzs.common.domain.system.config.BdTradeWhiteConfig;
 | 
			
		||||
import com.hzs.member.base.dto.MemberCountDTO;
 | 
			
		||||
import com.hzs.member.base.param.*;
 | 
			
		||||
| 
						 | 
				
			
			@ -625,4 +626,21 @@ public interface CuMemberMapper extends BaseMapper<CuMember> {
 | 
			
		|||
     */
 | 
			
		||||
    CuMember getShopkeeperMember(@Param("pkMember") Long pkMember);
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * 查询高级店主
 | 
			
		||||
     *
 | 
			
		||||
     * @param pkMember
 | 
			
		||||
     * @return
 | 
			
		||||
     */
 | 
			
		||||
    CuMember getGradeSvipMember(@Param("pkMember") Long pkMember);
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * 查询会员直推大于博羚店主的注册、升级订单查询会员直推大于博羚店主的注册、升级订单
 | 
			
		||||
     *
 | 
			
		||||
     * @param pkMember
 | 
			
		||||
     * @param orderCode
 | 
			
		||||
     * @return
 | 
			
		||||
     */
 | 
			
		||||
    SaOrder listRecommendVipOrder(@Param("pkMember") Long pkMember, @Param("orderCode") String orderCode);
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -6,6 +6,7 @@ import com.hzs.common.domain.member.achieve.ext.CuMemberRetailSExt;
 | 
			
		|||
import com.hzs.common.domain.member.base.CuMember;
 | 
			
		||||
import com.hzs.common.domain.member.detail.CuMemberGrade;
 | 
			
		||||
import com.hzs.common.domain.member.ext.CuMemberExt;
 | 
			
		||||
import com.hzs.common.domain.sale.order.SaOrder;
 | 
			
		||||
import com.hzs.common.domain.system.config.BdTradeWhiteConfig;
 | 
			
		||||
import com.hzs.member.base.param.UpdatePlaceParentPetitionParam;
 | 
			
		||||
import com.hzs.member.base.dto.ShowWaresDTO;
 | 
			
		||||
| 
						 | 
				
			
			@ -894,4 +895,21 @@ public interface ICuMemberService extends IService<CuMember> {
 | 
			
		|||
     */
 | 
			
		||||
    CuMember getShopkeeperMember(Long pkMember);
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * 查询高级店主
 | 
			
		||||
     *
 | 
			
		||||
     * @param pkMember
 | 
			
		||||
     * @return
 | 
			
		||||
     */
 | 
			
		||||
    CuMember getGradeSvipMember(Long pkMember);
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * 查询会员直推大于博羚店主的注册、升级订单查询会员直推大于博羚店主的注册、升级订单
 | 
			
		||||
     *
 | 
			
		||||
     * @param pkMember
 | 
			
		||||
     * @param orderCode
 | 
			
		||||
     * @return
 | 
			
		||||
     */
 | 
			
		||||
    SaOrder listRecommendVipOrder(Long pkMember, String orderCode);
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -2,8 +2,8 @@ package com.hzs.member.base.service.impl;
 | 
			
		|||
 | 
			
		||||
import cn.hutool.core.bean.BeanUtil;
 | 
			
		||||
import cn.hutool.core.collection.CollectionUtil;
 | 
			
		||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 | 
			
		||||
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
 | 
			
		||||
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 | 
			
		||||
import com.hzs.common.core.constant.*;
 | 
			
		||||
import com.hzs.common.core.constant.msg.MemberMsgConstants;
 | 
			
		||||
import com.hzs.common.core.domain.R;
 | 
			
		||||
| 
						 | 
				
			
			@ -97,13 +97,13 @@ public class CuMemberBusinessServiceImpl implements ICuMemberBusinessService {
 | 
			
		|||
    private ICuMemberRegisterService iCuMemberRegisterService;
 | 
			
		||||
    @Autowired
 | 
			
		||||
    private ICuMemberRetailRegionService iCuMemberRetailRegionService;
 | 
			
		||||
    @Autowired
 | 
			
		||||
    private ICuMemberLevelService iCuMemberLevelService;
 | 
			
		||||
 | 
			
		||||
    private ICuMemberAccountService cuMemberAccountService;
 | 
			
		||||
 | 
			
		||||
    private ICuMemberTradeService cuMemberTradeService;
 | 
			
		||||
 | 
			
		||||
    private ICuMemberLevelService cuMemberLevelService;
 | 
			
		||||
 | 
			
		||||
    private ICuMemberAwardsService cuMemberAwardsService;
 | 
			
		||||
 | 
			
		||||
    private ICuMemberChangeLogService cuMemberChangeLogService;
 | 
			
		||||
| 
						 | 
				
			
			@ -134,11 +134,6 @@ public class CuMemberBusinessServiceImpl implements ICuMemberBusinessService {
 | 
			
		|||
        this.cuMemberAwardsService = cuMemberAwardsService;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @Autowired
 | 
			
		||||
    public void setCuMemberLevelService(ICuMemberLevelService cuMemberLevelService) {
 | 
			
		||||
        this.cuMemberLevelService = cuMemberLevelService;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @Autowired
 | 
			
		||||
    public void setCuMemberTradeService(ICuMemberTradeService cuMemberTradeService) {
 | 
			
		||||
        this.cuMemberTradeService = cuMemberTradeService;
 | 
			
		||||
| 
						 | 
				
			
			@ -219,7 +214,7 @@ public class CuMemberBusinessServiceImpl implements ICuMemberBusinessService {
 | 
			
		|||
                .build();
 | 
			
		||||
        cuMemberLevel.setPkCountry(cuMember.getPkSettleCountry());
 | 
			
		||||
        cuMemberLevel.setPkCreator(cuMember.getPkId());
 | 
			
		||||
        return cuMemberLevelService.save(cuMemberLevel);
 | 
			
		||||
        return iCuMemberLevelService.save(cuMemberLevel);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
| 
						 | 
				
			
			@ -863,7 +858,7 @@ public class CuMemberBusinessServiceImpl implements ICuMemberBusinessService {
 | 
			
		|||
            Long pkMember = memberList.get(i);
 | 
			
		||||
            SaOrderExt saOrder = saOrderMap.get(pkMember);
 | 
			
		||||
            // 删除等级
 | 
			
		||||
            cuMemberLevelService.deleteCuMemberLevelRecord(saOrder.getPkId(), pkApprove, currentDateTime);
 | 
			
		||||
            iCuMemberLevelService.deleteCuMemberLevelRecord(saOrder.getPkId(), pkApprove, currentDateTime);
 | 
			
		||||
            // 回退奖衔,根据订单从 cu_member_awards查询
 | 
			
		||||
            cuMemberAwardsService.deleteCuMemberAwards(saOrder.getPkId(), pkApprove, currentDateTime);
 | 
			
		||||
            iCuMemberService.deleteCuMemberByPkMember(pkMember, pkApprove, currentDateTime);
 | 
			
		||||
| 
						 | 
				
			
			@ -897,7 +892,7 @@ public class CuMemberBusinessServiceImpl implements ICuMemberBusinessService {
 | 
			
		|||
        if (EOrderType.RETAIL_UPGRADE.getValue() == saOrder.getOrderType()) {
 | 
			
		||||
            // 升级订单
 | 
			
		||||
            // 回退等级
 | 
			
		||||
            cuMemberLevelService.deleteCuMemberLevelRecord(saOrder.getPkId(), pkApprove, currentDateTime);
 | 
			
		||||
            iCuMemberLevelService.deleteCuMemberLevelRecord(saOrder.getPkId(), pkApprove, currentDateTime);
 | 
			
		||||
        } else if (EOrderType.RETAIL_REPURCHASE.getValue() == saOrder.getOrderType()) {
 | 
			
		||||
            // 复购订单
 | 
			
		||||
            // 会员等级发生变化,新等级需要处理
 | 
			
		||||
| 
						 | 
				
			
			@ -906,26 +901,6 @@ public class CuMemberBusinessServiceImpl implements ICuMemberBusinessService {
 | 
			
		|||
                // 更新会员等级
 | 
			
		||||
                cuMember.setPkSettleGrade(newGrade.getPkId());
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            // 处理升级记录(添加、删除)
 | 
			
		||||
            List<CuMemberLevel> deleteLevelList = saOrder.getDeleteLevelList();
 | 
			
		||||
            if (CollectionUtil.isNotEmpty(deleteLevelList)) {
 | 
			
		||||
                cuMemberLevelService.update(Wrappers.<CuMemberLevel>lambdaUpdate()
 | 
			
		||||
                        .set(CuMemberLevel::getDelFlag, EDelFlag.DELETE.getValue())
 | 
			
		||||
                        .set(CuMemberLevel::getModifiedTime, new Date())
 | 
			
		||||
                        .set(CuMemberLevel::getPkModified, pkApprove)
 | 
			
		||||
                        .in(CuMemberLevel::getPkId, deleteLevelList.stream().map(CuMemberLevel::getPkId).collect(Collectors.toList()))
 | 
			
		||||
                );
 | 
			
		||||
            }
 | 
			
		||||
            List<CuMemberLevel> createLevelList = saOrder.getCreateLevelList();
 | 
			
		||||
            if (CollectionUtil.isNotEmpty(createLevelList)) {
 | 
			
		||||
                // 校验插入的升级时间要小于V4、V5的升级时间
 | 
			
		||||
                CuMemberLevel tmpLevel = cuMemberLevelService.getLevelByGradeValue(saOrder.getPkMember(), EGrade.VIP.getValue(), saOrder.getPayTime(), saOrder.getPkCountry());
 | 
			
		||||
                if (null != tmpLevel) {
 | 
			
		||||
                    createLevelList = createLevelList.stream().filter(tmp -> tmp.getUpgradeTime().compareTo(tmpLevel.getUpgradeTime()) < 0).collect(Collectors.toList());
 | 
			
		||||
                }
 | 
			
		||||
                cuMemberLevelService.insertBatch(createLevelList);
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        // 更新会员标记,如果是则更新会员信息
 | 
			
		||||
| 
						 | 
				
			
			@ -936,6 +911,8 @@ public class CuMemberBusinessServiceImpl implements ICuMemberBusinessService {
 | 
			
		|||
            }
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        this.handleParentLevel(saOrder, currentDateTime);
 | 
			
		||||
 | 
			
		||||
        // 部分撤单 todo  发货后邮费不退,未发货退邮费
 | 
			
		||||
        if (saOrder.getBackOrderAmount() != null && ComputeUtil.compareValue(saOrder.getBackOrderAmount())) {
 | 
			
		||||
            cancelPartOrderBackAmount(pkApprove, saOrder);
 | 
			
		||||
| 
						 | 
				
			
			@ -1633,7 +1610,7 @@ public class CuMemberBusinessServiceImpl implements ICuMemberBusinessService {
 | 
			
		|||
                        .build();
 | 
			
		||||
                cuMemberLevel.setPkCountry(cuMember.getPkSettleCountry());
 | 
			
		||||
                cuMemberLevel.setPkCreator(cuMember.getPkId());
 | 
			
		||||
                cuMemberLevelService.save(cuMemberLevel);
 | 
			
		||||
                iCuMemberLevelService.save(cuMemberLevel);
 | 
			
		||||
 | 
			
		||||
                LambdaUpdateWrapper<CuMember> updateWrapper = new LambdaUpdateWrapper<>();
 | 
			
		||||
                updateWrapper.set(CuMember::getPkSettleGrade, upgradeDTO.getPkId());
 | 
			
		||||
| 
						 | 
				
			
			@ -1645,4 +1622,54 @@ public class CuMemberBusinessServiceImpl implements ICuMemberBusinessService {
 | 
			
		|||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * 处理推荐人等级
 | 
			
		||||
     *
 | 
			
		||||
     * @param saOrder
 | 
			
		||||
     * @param currentDateTime
 | 
			
		||||
     */
 | 
			
		||||
    private void handleParentLevel(SaOrderExt saOrder, Date currentDateTime) {
 | 
			
		||||
        // 注册、升级订单,需要判断是否有推荐人升级的
 | 
			
		||||
        if (EOrderType.RETAIL_REGISTER.getValue() == saOrder.getOrderType()
 | 
			
		||||
                || EOrderType.RETAIL_UPGRADE.getValue() == saOrder.getOrderType()) {
 | 
			
		||||
            // 查询订单是否带有自动升级记录
 | 
			
		||||
            LambdaQueryWrapper<CuMemberLevel> memberLevelQuery = new LambdaQueryWrapper<>();
 | 
			
		||||
            memberLevelQuery.eq(CuMemberLevel::getPkOrder, saOrder.getPkId());
 | 
			
		||||
            memberLevelQuery.eq(CuMemberLevel::getUpType, EUpgradeType.AUTO_UPGRADE.getValue());
 | 
			
		||||
            CuMemberLevel parentLevel = iCuMemberLevelService.getOne(memberLevelQuery);
 | 
			
		||||
            if (null != parentLevel) {
 | 
			
		||||
                // 查询推荐人信息(必须是高级店主)
 | 
			
		||||
                CuMember parentMember = iCuMemberService.getGradeSvipMember(parentLevel.getPkMember());
 | 
			
		||||
                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);
 | 
			
		||||
                    }
 | 
			
		||||
                    // 删除原来升级记录
 | 
			
		||||
                    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);
 | 
			
		||||
                }
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -26,6 +26,7 @@ import com.hzs.common.domain.member.detail.CuMemberGrade;
 | 
			
		|||
import com.hzs.common.domain.member.detail.CuMemberServiceLog;
 | 
			
		||||
import com.hzs.common.domain.member.empty.CuMemberEmptyCode;
 | 
			
		||||
import com.hzs.common.domain.member.ext.CuMemberExt;
 | 
			
		||||
import com.hzs.common.domain.sale.order.SaOrder;
 | 
			
		||||
import com.hzs.common.domain.sale.wares.BdWaresAuthority;
 | 
			
		||||
import com.hzs.common.domain.system.config.BdAwards;
 | 
			
		||||
import com.hzs.common.domain.system.config.BdTradeWhiteConfig;
 | 
			
		||||
| 
						 | 
				
			
			@ -3161,4 +3162,14 @@ public class CuMemberServiceImpl extends ServiceImpl<CuMemberMapper, CuMember> i
 | 
			
		|||
        return baseMapper.getShopkeeperMember(pkMember);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @Override
 | 
			
		||||
    public CuMember getGradeSvipMember(Long pkMember) {
 | 
			
		||||
        return baseMapper.getGradeSvipMember(pkMember);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @Override
 | 
			
		||||
    public SaOrder listRecommendVipOrder(Long pkMember, String orderCode) {
 | 
			
		||||
        return baseMapper.listRecommendVipOrder(pkMember, orderCode);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -13,7 +13,7 @@ import java.util.List;
 | 
			
		|||
public interface ICuMemberLevelService extends IService<CuMemberLevel> {
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * 删除会员等级升级记录
 | 
			
		||||
     * 删除会员等级升级记录(订单购买升级的)
 | 
			
		||||
     *
 | 
			
		||||
     * @param pkOrder         订单
 | 
			
		||||
     * @param pkApprove       审核人
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -2,6 +2,7 @@ package com.hzs.member.detail.service.impl;
 | 
			
		|||
 | 
			
		||||
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
 | 
			
		||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 | 
			
		||||
import com.hzs.common.core.enums.EUpgradeType;
 | 
			
		||||
import com.hzs.common.core.enums.EYesNo;
 | 
			
		||||
import com.hzs.common.domain.member.detail.CuMemberGrade;
 | 
			
		||||
import com.hzs.common.domain.member.detail.CuMemberLevel;
 | 
			
		||||
| 
						 | 
				
			
			@ -25,6 +26,8 @@ public class CuMemberLevelServiceImpl extends ServiceImpl<CuMemberLevelMapper, C
 | 
			
		|||
        updateWrapper.set(CuMemberLevel::getPkModified, pkApprove);
 | 
			
		||||
        updateWrapper.set(CuMemberLevel::getModifiedTime, currentDateTime);
 | 
			
		||||
        updateWrapper.eq(CuMemberLevel::getPkOrder, pkOrder);
 | 
			
		||||
        // 购买升级
 | 
			
		||||
        updateWrapper.eq(CuMemberLevel::getUpType, EUpgradeType.BUY_UPGRADE.getValue());
 | 
			
		||||
        update(updateWrapper);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -2449,4 +2449,42 @@
 | 
			
		|||
          and bg.grade_value = 60
 | 
			
		||||
    </select>
 | 
			
		||||
 | 
			
		||||
    <!-- 查询高级店主 -->
 | 
			
		||||
    <select id="getGradeSvipMember" resultType="com.hzs.common.domain.member.base.CuMember">
 | 
			
		||||
        select cm.*
 | 
			
		||||
        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
 | 
			
		||||
    </select>
 | 
			
		||||
 | 
			
		||||
    <!-- 查询会员直推大于博羚店主的注册、升级订单 -->
 | 
			
		||||
    <select id="listRecommendVipOrder" resultType="com.hzs.common.domain.sale.order.SaOrder">
 | 
			
		||||
        select so.*
 | 
			
		||||
        from (select so.*, rownum
 | 
			
		||||
        from cu_member cm
 | 
			
		||||
        left join sa_order so
 | 
			
		||||
        on so.pk_member = cm.pk_id
 | 
			
		||||
        left join cu_member_level cml
 | 
			
		||||
        on cml.pk_member = so.pk_member
 | 
			
		||||
        and cml.pk_order = so.pk_id
 | 
			
		||||
        and cml.up_type = 4
 | 
			
		||||
        left join bd_grade bg
 | 
			
		||||
        on bg.pk_id = cml.new_level
 | 
			
		||||
        where cm.del_flag = 0
 | 
			
		||||
        and cm.category = 0
 | 
			
		||||
        and cm.pk_parent = #{pkMember}
 | 
			
		||||
        and so.del_flag = 0
 | 
			
		||||
        and so.order_status = 1
 | 
			
		||||
        and so.order_type in (41, 42)
 | 
			
		||||
        <if test="orderCode != null and orderCode != ''">
 | 
			
		||||
            and so.order_code != #{orderCode}
 | 
			
		||||
        </if>
 | 
			
		||||
        and bg.grade_value >= 60) so
 | 
			
		||||
        where rownum = 1
 | 
			
		||||
    </select>
 | 
			
		||||
 | 
			
		||||
</mapper>
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -245,7 +245,7 @@ public class RetailOrderServiceImpl implements IRetailOrderService {
 | 
			
		|||
        int boxNum = 0;
 | 
			
		||||
 | 
			
		||||
        // 2025.03.11 添加需求,复购专区、重消专区,指定盒数商品每用户每月限购50件
 | 
			
		||||
        this.checkWaresLimit(cuMember, orderParam.getSpecialArea(), waresDetailExtList, boxWaresList, gradeList);
 | 
			
		||||
//        this.checkWaresLimit(cuMember, orderParam.getSpecialArea(), waresDetailExtList, boxWaresList, gradeList);
 | 
			
		||||
 | 
			
		||||
        // 遍历生成订单明细数据
 | 
			
		||||
        for (BdWaresDetailExt waresDetailExt : waresDetailExtList) {
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -911,9 +911,9 @@ public class SaOrderBusinessController extends BaseController {
 | 
			
		|||
        SaOrderExt saOrderExt = validateCancelOrderVO.getSaOrderExt();
 | 
			
		||||
        saOrderExtList.add(saOrderExt);
 | 
			
		||||
        EApprovalBusiness approveBusiness = EApprovalBusiness.ORDER_CANCEL;
 | 
			
		||||
        if (ECancelOrderType.OTHER_CANCEL_PART_ORDER.getValue() == orderCancelParam.getCancelType()) {
 | 
			
		||||
            approveBusiness = EApprovalBusiness.ORDER_CANCEL_PRODUCT;
 | 
			
		||||
        }
 | 
			
		||||
//        if (ECancelOrderType.OTHER_CANCEL_PART_ORDER.getValue() == orderCancelParam.getCancelType()) {
 | 
			
		||||
//            approveBusiness = EApprovalBusiness.ORDER_CANCEL_PRODUCT;
 | 
			
		||||
//        }
 | 
			
		||||
        Map<Long, OrderQueryChargeDTO> queryChargeMap = iOrderBusinessService.queryChargeLog(saOrderExtList, approveBusiness, SecurityUtils.getPkCountry());
 | 
			
		||||
        OrderQueryChargeDTO dto = queryChargeMap.get(saOrderExt.getPkId());
 | 
			
		||||
        // 撤销订单,撤销产品,撤销除升级订单
 | 
			
		||||
| 
						 | 
				
			
			@ -932,20 +932,20 @@ public class SaOrderBusinessController extends BaseController {
 | 
			
		|||
                    .orderCode(saOrderExt.getOrderCode())
 | 
			
		||||
                    .build();
 | 
			
		||||
            List<OrderCancelDetailVO> orderCancelDetailVOList = new ArrayList<>();
 | 
			
		||||
            if (ECancelOrderType.OTHER_CANCEL_PART_ORDER.getValue() == orderCancelParam.getCancelType()) {
 | 
			
		||||
                saOrderExt.getOrderItemsList().forEach(saOrderItems -> {
 | 
			
		||||
                    String productName = productServiceApi.getProduct(saOrderItems.getPkProduct()).getData().getProductName();
 | 
			
		||||
                    OrderCancelDetailVO orderCancelDetailVO = OrderCancelDetailVO.builder()
 | 
			
		||||
                            .pkId(saOrderItems.getPkId())
 | 
			
		||||
                            .productName(productName)
 | 
			
		||||
                            .orderAmount(saOrderItems.getPrice())
 | 
			
		||||
                            .number(saOrderItems.getQuantity())
 | 
			
		||||
                            .achievement(saOrderItems.getAchievement())
 | 
			
		||||
                            .assAchievement(saOrderItems.getAssAchievement())
 | 
			
		||||
                            .build();
 | 
			
		||||
                    orderCancelDetailVOList.add(orderCancelDetailVO);
 | 
			
		||||
                });
 | 
			
		||||
            } else {
 | 
			
		||||
//            if (ECancelOrderType.OTHER_CANCEL_PART_ORDER.getValue() == orderCancelParam.getCancelType()) {
 | 
			
		||||
//                saOrderExt.getOrderItemsList().forEach(saOrderItems -> {
 | 
			
		||||
//                    String productName = productServiceApi.getProduct(saOrderItems.getPkProduct()).getData().getProductName();
 | 
			
		||||
//                    OrderCancelDetailVO orderCancelDetailVO = OrderCancelDetailVO.builder()
 | 
			
		||||
//                            .pkId(saOrderItems.getPkId())
 | 
			
		||||
//                            .productName(productName)
 | 
			
		||||
//                            .orderAmount(saOrderItems.getPrice())
 | 
			
		||||
//                            .number(saOrderItems.getQuantity())
 | 
			
		||||
//                            .achievement(saOrderItems.getAchievement())
 | 
			
		||||
//                            .assAchievement(saOrderItems.getAssAchievement())
 | 
			
		||||
//                            .build();
 | 
			
		||||
//                    orderCancelDetailVOList.add(orderCancelDetailVO);
 | 
			
		||||
//                });
 | 
			
		||||
//            } else {
 | 
			
		||||
                saOrderExt.getOrderItemsExtList().forEach(saOrderItems -> {
 | 
			
		||||
                    OrderCancelDetailVO orderCancelDetailVO = OrderCancelDetailVO.builder()
 | 
			
		||||
                            .pkId(saOrderItems.getPkId())
 | 
			
		||||
| 
						 | 
				
			
			@ -957,7 +957,7 @@ public class SaOrderBusinessController extends BaseController {
 | 
			
		|||
                            .build();
 | 
			
		||||
                    orderCancelDetailVOList.add(orderCancelDetailVO);
 | 
			
		||||
                });
 | 
			
		||||
            }
 | 
			
		||||
//            }
 | 
			
		||||
            orderCancelVO.setOrderCancelDetailVOList(orderCancelDetailVOList);
 | 
			
		||||
            orderCancelVO.setMemberCode(saOrderExt.getMemberCode());
 | 
			
		||||
            orderCancelVO.setMemberName(saOrderExt.getMemberName());
 | 
			
		||||
| 
						 | 
				
			
			@ -978,11 +978,11 @@ public class SaOrderBusinessController extends BaseController {
 | 
			
		|||
    @Log(module = EOperationModule.CANCEL_ORDER_CONFIRM, method = EOperationMethod.INSERT)
 | 
			
		||||
    public AjaxResult cancelOrder(@RequestBody OrderCancelParam orderCancelParam) {
 | 
			
		||||
        orderCancelParam.setPkCountry(SecurityUtils.getPkCountry());
 | 
			
		||||
        if (ECancelOrderType.OTHER_CANCEL_PART_ORDER.getValue() == orderCancelParam.getCancelType()) {
 | 
			
		||||
            if (orderCancelParam.getOrderCancelDetailParamList() == null || orderCancelParam.getOrderCancelDetailParamList().size() == 0) {
 | 
			
		||||
                return AjaxResult.error(TransactionUtils.getContent(MemberMsgConstants.REQUIRED_NOT_EMPTY));
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
//        if (ECancelOrderType.OTHER_CANCEL_PART_ORDER.getValue() == orderCancelParam.getCancelType()) {
 | 
			
		||||
//            if (orderCancelParam.getOrderCancelDetailParamList() == null || orderCancelParam.getOrderCancelDetailParamList().size() == 0) {
 | 
			
		||||
//                return AjaxResult.error(TransactionUtils.getContent(MemberMsgConstants.REQUIRED_NOT_EMPTY));
 | 
			
		||||
//            }
 | 
			
		||||
//        }
 | 
			
		||||
        ValidateCancelOrderVO validateCancelOrderVO = iOrderBusinessService.validateCancelOrder(orderCancelParam);
 | 
			
		||||
        AjaxResult validateCancelOrder = validateCancelOrderVO(orderCancelParam, validateCancelOrderVO);
 | 
			
		||||
        if (validateCancelOrder != null) {
 | 
			
		||||
| 
						 | 
				
			
			@ -1001,11 +1001,11 @@ public class SaOrderBusinessController extends BaseController {
 | 
			
		|||
    @Log(module = EOperationModule.CANCEL_ORDER_CONFIRM, method = EOperationMethod.INSERT)
 | 
			
		||||
    public AjaxResult freeCostCancelOrder(@RequestBody OrderCancelParam orderCancelParam) {
 | 
			
		||||
        orderCancelParam.setPkCountry(SecurityUtils.getPkCountry());
 | 
			
		||||
        if (ECancelOrderType.OTHER_CANCEL_PART_ORDER.getValue() == orderCancelParam.getCancelType()) {
 | 
			
		||||
            if (orderCancelParam.getOrderCancelDetailParamList() == null || orderCancelParam.getOrderCancelDetailParamList().size() == 0) {
 | 
			
		||||
                return AjaxResult.error(TransactionUtils.getContent(MemberMsgConstants.REQUIRED_NOT_EMPTY));
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
//        if (ECancelOrderType.OTHER_CANCEL_PART_ORDER.getValue() == orderCancelParam.getCancelType()) {
 | 
			
		||||
//            if (orderCancelParam.getOrderCancelDetailParamList() == null || orderCancelParam.getOrderCancelDetailParamList().size() == 0) {
 | 
			
		||||
//                return AjaxResult.error(TransactionUtils.getContent(MemberMsgConstants.REQUIRED_NOT_EMPTY));
 | 
			
		||||
//            }
 | 
			
		||||
//        }
 | 
			
		||||
        if (orderCancelParam.getCancelRoad() == null || (orderCancelParam.getCancelRoad() != 1 && orderCancelParam.getCancelRoad() != 3)) {
 | 
			
		||||
            return AjaxResult.error(TransactionUtils.getContent(MemberMsgConstants.REQUIRED_NOT_EMPTY));
 | 
			
		||||
        }
 | 
			
		||||
| 
						 | 
				
			
			@ -1014,7 +1014,7 @@ public class SaOrderBusinessController extends BaseController {
 | 
			
		|||
        if (validateCancelOrder != null) {
 | 
			
		||||
            return validateCancelOrder;
 | 
			
		||||
        }
 | 
			
		||||
        // 2023.11.22 不走签呈也需要添加中间操作表,用于区分部分撤单和调换货物
 | 
			
		||||
        // 不走签呈也需要添加中间操作表,用于区分部分撤单和调换货物
 | 
			
		||||
        iOrderBusinessService.revokeSaOrderByOrderCode(SecurityUtils.getUserId(), orderCancelParam, validateCancelOrderVO);
 | 
			
		||||
        return AjaxResult.success();
 | 
			
		||||
    }
 | 
			
		||||
| 
						 | 
				
			
			@ -1023,22 +1023,22 @@ public class SaOrderBusinessController extends BaseController {
 | 
			
		|||
        if (validateCancelOrderVO.getSaOrderExt() == null) {
 | 
			
		||||
            return AjaxResult.error(validateCancelOrderVO.getMsg());
 | 
			
		||||
        }
 | 
			
		||||
        if (ECancelOrderType.OTHER_CANCEL_PART_ORDER.getValue() == orderCancelParam.getCancelType()) {
 | 
			
		||||
            SaOrderExt saOrderExt = validateCancelOrderVO.getSaOrderExt();
 | 
			
		||||
            if (saOrderExt.getOrderItemsList() == null) {
 | 
			
		||||
                return AjaxResult.error(TransactionUtils.getContent(SaOrderMsgConstants.ORDER_EMPTY));
 | 
			
		||||
            }
 | 
			
		||||
            Map<Long, String> productMap = new HashMap<>(ComputeUtil.mapInitCapacity(orderCancelParam.getOrderCancelDetailParamList().size()));
 | 
			
		||||
            saOrderExt.getOrderItemsList().forEach(saOrderItems -> {
 | 
			
		||||
                String productName = productServiceApi.getProduct(saOrderItems.getPkProduct()).getData().getProductName();
 | 
			
		||||
                productMap.put(saOrderItems.getPkId(), productName);
 | 
			
		||||
            });
 | 
			
		||||
            orderCancelParam.getOrderCancelDetailParamList().forEach(orderCancelDetailParam -> {
 | 
			
		||||
                if (productMap.containsKey(orderCancelDetailParam.getPkId())) {
 | 
			
		||||
                    orderCancelDetailParam.setProductName(productMap.get(orderCancelDetailParam.getPkId()));
 | 
			
		||||
                }
 | 
			
		||||
            });
 | 
			
		||||
        }
 | 
			
		||||
//        if (ECancelOrderType.OTHER_CANCEL_PART_ORDER.getValue() == orderCancelParam.getCancelType()) {
 | 
			
		||||
//            SaOrderExt saOrderExt = validateCancelOrderVO.getSaOrderExt();
 | 
			
		||||
//            if (saOrderExt.getOrderItemsList() == null) {
 | 
			
		||||
//                return AjaxResult.error(TransactionUtils.getContent(SaOrderMsgConstants.ORDER_EMPTY));
 | 
			
		||||
//            }
 | 
			
		||||
//            Map<Long, String> productMap = new HashMap<>(ComputeUtil.mapInitCapacity(orderCancelParam.getOrderCancelDetailParamList().size()));
 | 
			
		||||
//            saOrderExt.getOrderItemsList().forEach(saOrderItems -> {
 | 
			
		||||
//                String productName = productServiceApi.getProduct(saOrderItems.getPkProduct()).getData().getProductName();
 | 
			
		||||
//                productMap.put(saOrderItems.getPkId(), productName);
 | 
			
		||||
//            });
 | 
			
		||||
//            orderCancelParam.getOrderCancelDetailParamList().forEach(orderCancelDetailParam -> {
 | 
			
		||||
//                if (productMap.containsKey(orderCancelDetailParam.getPkId())) {
 | 
			
		||||
//                    orderCancelDetailParam.setProductName(productMap.get(orderCancelDetailParam.getPkId()));
 | 
			
		||||
//                }
 | 
			
		||||
//            });
 | 
			
		||||
//        }
 | 
			
		||||
        return null;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1250,30 +1250,31 @@ public class OrderBusinessServiceImpl implements IOrderBusinessService {
 | 
			
		|||
        }
 | 
			
		||||
        int approveBusiness = EApprovalBusiness.ORDER_CANCEL.getValue();
 | 
			
		||||
        SaOrderExt saOrderExt;
 | 
			
		||||
        if (ECancelOrderType.OTHER_CANCEL_PART_ORDER.getValue() == orderCancelParam.getCancelType()) {
 | 
			
		||||
            approveBusiness = EApprovalBusiness.ORDER_CANCEL_PRODUCT.getValue();
 | 
			
		||||
            SaOrder orderQuery = SaOrder.builder().orderStatus(EOrderStatus.PAY.getValue()).orderCode(orderCancelParam.getOrderCode()).build();
 | 
			
		||||
            orderQuery.setPkCountry(orderCancelParam.getPkCountry());
 | 
			
		||||
//            List<Long> itemIdList = new ArrayList<>();
 | 
			
		||||
//            if (orderCancelParam.getOrderCancelDetailParamList() != null && orderCancelParam.getOrderCancelDetailParamList().size() > 0) {
 | 
			
		||||
//                orderCancelParam.getOrderCancelDetailParamList().forEach(orderCancelDetailParam ->
 | 
			
		||||
//                        itemIdList.add(orderCancelDetailParam.getPkId()));
 | 
			
		||||
//            }
 | 
			
		||||
            saOrderExt = iSaOrderService.querySaleOrderExtByOrderCode(orderQuery, new ArrayList<>());
 | 
			
		||||
            CuMember cuMember = iSaOrderService.getCuMemberByKey(saOrderExt.getPkMember());
 | 
			
		||||
            saOrderExt.setMemberCode(cuMember.getMemberCode());
 | 
			
		||||
            saOrderExt.setMemberName(cuMember.getMemberName());
 | 
			
		||||
        } else {
 | 
			
		||||
//        if (ECancelOrderType.OTHER_CANCEL_PART_ORDER.getValue() == orderCancelParam.getCancelType()) {
 | 
			
		||||
//            approveBusiness = EApprovalBusiness.ORDER_CANCEL_PRODUCT.getValue();
 | 
			
		||||
//            SaOrder orderQuery = SaOrder.builder().orderStatus(EOrderStatus.PAY.getValue()).orderCode(orderCancelParam.getOrderCode()).build();
 | 
			
		||||
//            orderQuery.setPkCountry(orderCancelParam.getPkCountry());
 | 
			
		||||
////            List<Long> itemIdList = new ArrayList<>();
 | 
			
		||||
////            if (orderCancelParam.getOrderCancelDetailParamList() != null && orderCancelParam.getOrderCancelDetailParamList().size() > 0) {
 | 
			
		||||
////                orderCancelParam.getOrderCancelDetailParamList().forEach(orderCancelDetailParam ->
 | 
			
		||||
////                        itemIdList.add(orderCancelDetailParam.getPkId()));
 | 
			
		||||
////            }
 | 
			
		||||
//            saOrderExt = iSaOrderService.querySaleOrderExtByOrderCode(orderQuery, new ArrayList<>());
 | 
			
		||||
//            CuMember cuMember = iSaOrderService.getCuMemberByKey(saOrderExt.getPkMember());
 | 
			
		||||
//            saOrderExt.setMemberCode(cuMember.getMemberCode());
 | 
			
		||||
//            saOrderExt.setMemberName(cuMember.getMemberName());
 | 
			
		||||
//        } else {
 | 
			
		||||
        saOrderExt = iSaOrderService.queryOrderByCode(orderCancelParam.getOrderCode(), orderCancelParam.getPkCountry());
 | 
			
		||||
        }
 | 
			
		||||
//        }
 | 
			
		||||
        if (saOrderExt == null || EOrderStatus.WAIT_PAY.getValue() == saOrderExt.getOrderStatus()) {
 | 
			
		||||
            validateCancelOrderVO.setMsg(TransactionUtils.getContent(SaOrderMsgConstants.ORDER_EMPTY));
 | 
			
		||||
            return validateCancelOrderVO;
 | 
			
		||||
        }
 | 
			
		||||
        if (orderCancelParam.getCancelType().equals(ECancelOrderType.SINGLE_CANCEL_ORDER.getValue()) ||
 | 
			
		||||
                orderCancelParam.getCancelType().equals(ECancelOrderType.MERGE_CANCEL_ORDER.getValue()) ||
 | 
			
		||||
                orderCancelParam.getCancelType().equals(ECancelOrderType.OTHER_CANCEL_ORDER.getValue()) ||
 | 
			
		||||
                orderCancelParam.getCancelType().equals(ECancelOrderType.OTHER_CANCEL_PART_ORDER.getValue())) {
 | 
			
		||||
        if (orderCancelParam.getCancelType().equals(ECancelOrderType.SINGLE_CANCEL_ORDER.getValue())
 | 
			
		||||
                || orderCancelParam.getCancelType().equals(ECancelOrderType.MERGE_CANCEL_ORDER.getValue())
 | 
			
		||||
                || orderCancelParam.getCancelType().equals(ECancelOrderType.OTHER_CANCEL_ORDER.getValue())
 | 
			
		||||
//                || orderCancelParam.getCancelType().equals(ECancelOrderType.OTHER_CANCEL_PART_ORDER.getValue())
 | 
			
		||||
        ) {
 | 
			
		||||
            // 验证订单时间,只能撤销7天以内的支付订单
 | 
			
		||||
            // 周结只能撤销当前期间的订单,不能撤销上个期间的订单
 | 
			
		||||
            String settleCycle = systemConfigServiceApi.getBonusSystemConfig(orderCancelParam.getPkCountry(), ESystemConfig.EXPAND_CAP_METHOD.getKey()).getData();
 | 
			
		||||
| 
						 | 
				
			
			@ -1460,14 +1461,14 @@ public class OrderBusinessServiceImpl implements IOrderBusinessService {
 | 
			
		|||
        String businessCode = CommonUtil.createSerialNumber(EOrderPrefix.DEFAULT);
 | 
			
		||||
        // 修改类型
 | 
			
		||||
        EApprovalBusiness approveBusiness = EApprovalBusiness.ORDER_CANCEL;
 | 
			
		||||
        if (ECancelOrderType.OTHER_CANCEL_PART_ORDER.getValue() == orderCancelParam.getCancelType()) {
 | 
			
		||||
            approveBusiness = EApprovalBusiness.ORDER_CANCEL_PRODUCT;
 | 
			
		||||
        }
 | 
			
		||||
//        if (ECancelOrderType.OTHER_CANCEL_PART_ORDER.getValue() == orderCancelParam.getCancelType()) {
 | 
			
		||||
//            approveBusiness = EApprovalBusiness.ORDER_CANCEL_PRODUCT;
 | 
			
		||||
//        }
 | 
			
		||||
 | 
			
		||||
        // 封装修改地址业务日志
 | 
			
		||||
        List<BusinessLogDTO> dtoList = new ArrayList<>();
 | 
			
		||||
 | 
			
		||||
        // 2023.11.22 不走签呈也需要添加中间操作表,用于区分部分撤单和调换货物
 | 
			
		||||
        // 不走签呈也需要添加中间操作表,用于区分部分撤单和调换货物
 | 
			
		||||
        // 撤单日志列表
 | 
			
		||||
        List<SaOrderChargeLog> saOrderChargeLogList = new ArrayList<>();
 | 
			
		||||
        Map<Long, SaOrderExt> saOrderMap = validateCancelOrderVO.getSaOrderMap();
 | 
			
		||||
| 
						 | 
				
			
			@ -1549,13 +1550,13 @@ public class OrderBusinessServiceImpl implements IOrderBusinessService {
 | 
			
		|||
        orderCancelParam.setMemberCode(cuMember.getMemberCode());
 | 
			
		||||
        orderCancelParam.setMemberName(cuMember.getMemberName());
 | 
			
		||||
        EApprovalBusiness approveBusiness = EApprovalBusiness.ORDER_CANCEL;
 | 
			
		||||
        if (ECancelOrderType.OTHER_CANCEL_PART_ORDER.getValue() == orderCancelParam.getCancelType()) {
 | 
			
		||||
            approveBusiness = EApprovalBusiness.ORDER_CANCEL_PRODUCT;
 | 
			
		||||
//            List<OrderCancelDetailParam> orderCancelDetailParamList = new ArrayList<>();
 | 
			
		||||
//            orderCancelParam.getOrderCancelDetailParamList().forEach(orderCancelDetailParam ->
 | 
			
		||||
//                    orderCancelDetailParamList.add(BeanUtil.copyProperties(orderCancelDetailParam, OrderCancelDetailParam.class)));
 | 
			
		||||
//            orderCancelParam.setOrderCancelDetailParamList(orderCancelDetailParamList);
 | 
			
		||||
        }
 | 
			
		||||
//        if (ECancelOrderType.OTHER_CANCEL_PART_ORDER.getValue() == orderCancelParam.getCancelType()) {
 | 
			
		||||
//            approveBusiness = EApprovalBusiness.ORDER_CANCEL_PRODUCT;
 | 
			
		||||
////            List<OrderCancelDetailParam> orderCancelDetailParamList = new ArrayList<>();
 | 
			
		||||
////            orderCancelParam.getOrderCancelDetailParamList().forEach(orderCancelDetailParam ->
 | 
			
		||||
////                    orderCancelDetailParamList.add(BeanUtil.copyProperties(orderCancelDetailParam, OrderCancelDetailParam.class)));
 | 
			
		||||
////            orderCancelParam.setOrderCancelDetailParamList(orderCancelDetailParamList);
 | 
			
		||||
//        }
 | 
			
		||||
        // 本次业务修改费用
 | 
			
		||||
        Map<Long, OrderQueryChargeDTO> queryChargeMap = null;
 | 
			
		||||
        if (orderCancelParam.getCancelRoad() == null || orderCancelParam.getCancelRoad() != 2) {
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1258,9 +1258,9 @@ public class SaOrderServiceImpl extends ServiceImpl<SaOrderMapper, SaOrder> impl
 | 
			
		|||
        BusinessCommissionDTO businessCommissionDTO = null;
 | 
			
		||||
        if (orderCancelParam.getCancelRoad() == 1) {
 | 
			
		||||
            EApprovalBusiness approveBusiness = EApprovalBusiness.ORDER_CANCEL;
 | 
			
		||||
            if (ECancelOrderType.OTHER_CANCEL_PART_ORDER.getValue() == orderCancelParam.getCancelType()) {
 | 
			
		||||
                approveBusiness = EApprovalBusiness.ORDER_CANCEL_PRODUCT;
 | 
			
		||||
            }
 | 
			
		||||
//            if (ECancelOrderType.OTHER_CANCEL_PART_ORDER.getValue() == orderCancelParam.getCancelType()) {
 | 
			
		||||
//                approveBusiness = EApprovalBusiness.ORDER_CANCEL_PRODUCT;
 | 
			
		||||
//            }
 | 
			
		||||
            Map<Long, OrderQueryChargeDTO> queryChargeMap = orderBusinessService.queryChargeLog(Collections.singletonList(validateCancelOrderVO.getSaOrderExt()),
 | 
			
		||||
                    approveBusiness, orderCancelParam.getPkCountry());
 | 
			
		||||
            if (queryChargeMap != null && queryChargeMap.containsKey(saOrderExt.getPkId())) {
 | 
			
		||||
| 
						 | 
				
			
			@ -1289,47 +1289,47 @@ public class SaOrderServiceImpl extends ServiceImpl<SaOrderMapper, SaOrder> impl
 | 
			
		|||
            }
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        if (ECancelOrderType.OTHER_CANCEL_PART_ORDER.getValue() == orderCancelParam.getCancelType()) {
 | 
			
		||||
            List<OrderCancelDetailParam> orderCancelDetailParamList = orderCancelParam.getOrderCancelDetailParamList();
 | 
			
		||||
            List<Long> pkOrderItemList = orderCancelDetailParamList.stream().map(OrderCancelDetailParam::getPkId).collect(Collectors.toList());
 | 
			
		||||
            // 第二次封装订单,根据明细表计算订单主表金额、业绩
 | 
			
		||||
            saOrderExt.setOrderAmount(BigDecimal.ZERO);
 | 
			
		||||
            saOrderExt.setOrderAchieve(BigDecimal.ZERO);
 | 
			
		||||
            saOrderExt.setOrderAssAchieve(BigDecimal.ZERO);
 | 
			
		||||
            saOrderExt.setBackOrderAmount(BigDecimal.ZERO);
 | 
			
		||||
            List<SaOrderItems> saOrderItemsList = new ArrayList<>();
 | 
			
		||||
            saOrderExt.getOrderItemsList().forEach(saOrderItems -> {
 | 
			
		||||
                if (pkOrderItemList.contains(saOrderItems.getPkId())) {
 | 
			
		||||
                    saOrderExt.setBackOrderAmount(ComputeUtil.computeAddMultiply(saOrderExt.getBackOrderAmount(), saOrderItems.getPrice(), saOrderItems.getQuantity()));
 | 
			
		||||
                    return;
 | 
			
		||||
                }
 | 
			
		||||
                // 总价;
 | 
			
		||||
                saOrderExt.setOrderAmount(ComputeUtil.computeAddMultiply(saOrderExt.getOrderAmount(), saOrderItems.getPrice(), saOrderItems.getQuantity()));
 | 
			
		||||
                // 总业绩
 | 
			
		||||
                saOrderExt.setOrderAchieve(ComputeUtil.computeAddMultiply(saOrderExt.getOrderAchieve(), saOrderItems.getAchievement(), saOrderItems.getQuantity()));
 | 
			
		||||
                // 总考核业绩
 | 
			
		||||
                saOrderExt.setOrderAssAchieve(ComputeUtil.computeAddMultiply(saOrderExt.getOrderAssAchieve(), saOrderItems.getAssAchievement(), saOrderItems.getQuantity()));
 | 
			
		||||
                saOrderItemsList.add(saOrderItems);
 | 
			
		||||
            });
 | 
			
		||||
            saOrderExt.setUploadAchieve(saOrderExt.getOrderAchieve());
 | 
			
		||||
            if (saOrderItemsList.size() == 0) {
 | 
			
		||||
                saOrderExt.setDelFlag(EDelFlag.DELETE.getValue());
 | 
			
		||||
            } else {
 | 
			
		||||
                saOrderExt.setOrderItemsList(saOrderItemsList);
 | 
			
		||||
            }
 | 
			
		||||
            // 修改订单
 | 
			
		||||
            Date currentDateTime = DateUtils.currentDateTime();
 | 
			
		||||
            // 删除发货单
 | 
			
		||||
            saDeliverItemsService.deleteSaDeliverItems(saOrderExt.getPkId(), pkOrderItemList);
 | 
			
		||||
            updateSaOrder(pkApprove, saOrderExt, currentDateTime);
 | 
			
		||||
            // 删除订单明细
 | 
			
		||||
            if (!saOrderItemsService.updateOrderItemsById(pkOrderItemList, pkApprove, currentDateTime)) {
 | 
			
		||||
                throw new ServiceException("更新订单失败");
 | 
			
		||||
            }
 | 
			
		||||
            if (!memberServiceApi.normalRevokeOrder(pkApprove, saOrderExt, null, businessCommissionDTO).getData()) {
 | 
			
		||||
                throw new ServiceException("撤单失败");
 | 
			
		||||
            }
 | 
			
		||||
        } else {
 | 
			
		||||
//        if (ECancelOrderType.OTHER_CANCEL_PART_ORDER.getValue() == orderCancelParam.getCancelType()) {
 | 
			
		||||
//            List<OrderCancelDetailParam> orderCancelDetailParamList = orderCancelParam.getOrderCancelDetailParamList();
 | 
			
		||||
//            List<Long> pkOrderItemList = orderCancelDetailParamList.stream().map(OrderCancelDetailParam::getPkId).collect(Collectors.toList());
 | 
			
		||||
//            // 第二次封装订单,根据明细表计算订单主表金额、业绩
 | 
			
		||||
//            saOrderExt.setOrderAmount(BigDecimal.ZERO);
 | 
			
		||||
//            saOrderExt.setOrderAchieve(BigDecimal.ZERO);
 | 
			
		||||
//            saOrderExt.setOrderAssAchieve(BigDecimal.ZERO);
 | 
			
		||||
//            saOrderExt.setBackOrderAmount(BigDecimal.ZERO);
 | 
			
		||||
//            List<SaOrderItems> saOrderItemsList = new ArrayList<>();
 | 
			
		||||
//            saOrderExt.getOrderItemsList().forEach(saOrderItems -> {
 | 
			
		||||
//                if (pkOrderItemList.contains(saOrderItems.getPkId())) {
 | 
			
		||||
//                    saOrderExt.setBackOrderAmount(ComputeUtil.computeAddMultiply(saOrderExt.getBackOrderAmount(), saOrderItems.getPrice(), saOrderItems.getQuantity()));
 | 
			
		||||
//                    return;
 | 
			
		||||
//                }
 | 
			
		||||
//                // 总价;
 | 
			
		||||
//                saOrderExt.setOrderAmount(ComputeUtil.computeAddMultiply(saOrderExt.getOrderAmount(), saOrderItems.getPrice(), saOrderItems.getQuantity()));
 | 
			
		||||
//                // 总业绩
 | 
			
		||||
//                saOrderExt.setOrderAchieve(ComputeUtil.computeAddMultiply(saOrderExt.getOrderAchieve(), saOrderItems.getAchievement(), saOrderItems.getQuantity()));
 | 
			
		||||
//                // 总考核业绩
 | 
			
		||||
//                saOrderExt.setOrderAssAchieve(ComputeUtil.computeAddMultiply(saOrderExt.getOrderAssAchieve(), saOrderItems.getAssAchievement(), saOrderItems.getQuantity()));
 | 
			
		||||
//                saOrderItemsList.add(saOrderItems);
 | 
			
		||||
//            });
 | 
			
		||||
//            saOrderExt.setUploadAchieve(saOrderExt.getOrderAchieve());
 | 
			
		||||
//            if (saOrderItemsList.size() == 0) {
 | 
			
		||||
//                saOrderExt.setDelFlag(EDelFlag.DELETE.getValue());
 | 
			
		||||
//            } else {
 | 
			
		||||
//                saOrderExt.setOrderItemsList(saOrderItemsList);
 | 
			
		||||
//            }
 | 
			
		||||
//            // 修改订单
 | 
			
		||||
//            Date currentDateTime = DateUtils.currentDateTime();
 | 
			
		||||
//            // 删除发货单
 | 
			
		||||
//            saDeliverItemsService.deleteSaDeliverItems(saOrderExt.getPkId(), pkOrderItemList);
 | 
			
		||||
//            updateSaOrder(pkApprove, saOrderExt, currentDateTime);
 | 
			
		||||
//            // 删除订单明细
 | 
			
		||||
//            if (!saOrderItemsService.updateOrderItemsById(pkOrderItemList, pkApprove, currentDateTime)) {
 | 
			
		||||
//                throw new ServiceException("更新订单失败");
 | 
			
		||||
//            }
 | 
			
		||||
//            if (!memberServiceApi.normalRevokeOrder(pkApprove, saOrderExt, null, businessCommissionDTO).getData()) {
 | 
			
		||||
//                throw new ServiceException("撤单失败");
 | 
			
		||||
//            }
 | 
			
		||||
//        } else {
 | 
			
		||||
            // 删除订单
 | 
			
		||||
            saOrderExt.setDelFlag(EDelFlag.DELETE.getValue());
 | 
			
		||||
            Date currentDate = DateUtils.currentDateTime();
 | 
			
		||||
| 
						 | 
				
			
			@ -1367,7 +1367,7 @@ public class SaOrderServiceImpl extends ServiceImpl<SaOrderMapper, SaOrder> impl
 | 
			
		|||
                // 其他撤单
 | 
			
		||||
                this.handleCancelUpgradeOrder(saOrderExt, validateCancelOrderVO.getUpdSaOrder(), pkApprove, businessCommissionDTO);
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
//        }
 | 
			
		||||
 | 
			
		||||
        try {
 | 
			
		||||
            // 推送MQ的列表
 | 
			
		||||
| 
						 | 
				
			
			@ -2030,7 +2030,7 @@ public class SaOrderServiceImpl extends ServiceImpl<SaOrderMapper, SaOrder> impl
 | 
			
		|||
     * @return
 | 
			
		||||
     */
 | 
			
		||||
    private GradeDTO calculateRetailCancelGrade(CuMember cuMember, SaOrder saOrder) {
 | 
			
		||||
        // 查询会员升级记录表最终数据
 | 
			
		||||
        // 查询会员最新升级记录
 | 
			
		||||
        CuMemberLevel cuMemberLevel = iCuMemberDetailServiceApi.getLastUpgrade(cuMember.getPkId(), saOrder.getPkId()).getData();
 | 
			
		||||
        if (null != cuMemberLevel) {
 | 
			
		||||
            return gradeServiceApi.getGrade(cuMemberLevel.getNewLevel()).getData();
 | 
			
		||||
| 
						 | 
				
			
			@ -2065,10 +2065,9 @@ public class SaOrderServiceImpl extends ServiceImpl<SaOrderMapper, SaOrder> impl
 | 
			
		|||
                cuMember.setConsumeMoney(BigDecimal.ZERO);
 | 
			
		||||
                cuMember.setConsumeAchieve(cuMemberRegister.getConsumeAchieve());
 | 
			
		||||
 | 
			
		||||
                // 查询会员升级记录表最终数据
 | 
			
		||||
                // 查询会员最新升级记录
 | 
			
		||||
                CuMemberLevel cuMemberLevel = iCuMemberDetailServiceApi.getLastUpgrade(cuMember.getPkId(), saOrderExt.getPkId()).getData();
 | 
			
		||||
                if (null != cuMemberLevel) {
 | 
			
		||||
                    // 存在手动升级
 | 
			
		||||
                    cuMember.setPkSettleGrade(cuMemberLevel.getNewLevel());
 | 
			
		||||
                }
 | 
			
		||||
            } else {
 | 
			
		||||
| 
						 | 
				
			
			@ -2085,48 +2084,6 @@ public class SaOrderServiceImpl extends ServiceImpl<SaOrderMapper, SaOrder> impl
 | 
			
		|||
                cuMember.setIsActivate(EYesNo.NO.getIntValue());
 | 
			
		||||
            }
 | 
			
		||||
            saOrderExt.setUpdateFlag(EYesNo.YES.getIntValue());
 | 
			
		||||
        } else if (EOrderType.RETAIL_REPURCHASE.getValue() == saOrderExt.getOrderType()) {
 | 
			
		||||
            // 复购订单存在盒数商品撤单,需要处理降级操作
 | 
			
		||||
            if (saOrderExt.getBoxNum() > 0) {
 | 
			
		||||
                // TODO 目前只有注册、升级才能激活,复购不进行处理
 | 
			
		||||
//                Date firstDate = baseMapper.getFirstPayTime(cuMember.getPkId());
 | 
			
		||||
//                if (null == firstDate) {
 | 
			
		||||
//                    // 盒数商品订单最早的时间为空,则会员未激活
 | 
			
		||||
//                    cuMember.setPayTime(null);
 | 
			
		||||
//                    cuMember.setPayStatus(EPayStatus.UNPAID.getValue());
 | 
			
		||||
//                    cuMember.setIsActivate(EYesNo.NO.getIntValue());
 | 
			
		||||
//                    saOrderExt.setUpdateFlag(EYesNo.YES.getIntValue());
 | 
			
		||||
//                }
 | 
			
		||||
 | 
			
		||||
                // TODO 恢复升级专区,复购专区不需要处理等级问题
 | 
			
		||||
//                // 如果复购订单后面还有升级订单,不需要处理等级问题; 复购订单后面没有升级订单,走新逻辑校验
 | 
			
		||||
//                if (this.count(Wrappers.<SaOrder>lambdaQuery()
 | 
			
		||||
//                        .eq(SaOrder::getPkMember, saOrderExt.getPkMember())
 | 
			
		||||
//                        .eq(SaOrder::getOrderType, EOrderType.RETAIL_UPGRADE.getValue())
 | 
			
		||||
//                        .ge(SaOrder::getPayTime, saOrderExt.getPayTime())
 | 
			
		||||
//                        .eq(SaOrder::getOrderStatus, EPayStatus.PAID.getValue())
 | 
			
		||||
//                ) == 0) {
 | 
			
		||||
//                    // 带有盒数商品的订单,需要校验等级
 | 
			
		||||
//                    List<BdGrade> gradeList = iGradeServiceApi.getRetailGradeList().getData();
 | 
			
		||||
//                    // 当前会员等级
 | 
			
		||||
//                    BdGrade memberGrade = this.getGrade(cuMember.getPkSettleGrade(), gradeList);
 | 
			
		||||
//
 | 
			
		||||
//                    // 需要添加的升级记录列表
 | 
			
		||||
//                    List<CuMemberLevel> createLevelList = new ArrayList<>();
 | 
			
		||||
//                    // 需要删除的升级记录列表
 | 
			
		||||
//                    List<CuMemberLevel> deleteLevelList = new ArrayList<>();
 | 
			
		||||
//                    // 新等级计算
 | 
			
		||||
//                    BdGrade newGrade = this.handleNewGrade(cuMember, memberGrade, gradeList, saOrderExt, createLevelList, deleteLevelList);
 | 
			
		||||
//
 | 
			
		||||
//                    if (memberGrade.getGradeValue() < EGrade.VIP.getValue() && newGrade.getGradeValue() < memberGrade.getGradeValue()) {
 | 
			
		||||
//                        // 当前会员等级不是V4或者V5 并且 新等级小于当前等级需要进行处理
 | 
			
		||||
//                        saOrderExt.setNewGrade(newGrade);
 | 
			
		||||
//                        saOrderExt.setUpdateFlag(EYesNo.YES.getIntValue());
 | 
			
		||||
//                    }
 | 
			
		||||
//                    saOrderExt.setCreateLevelList(createLevelList);
 | 
			
		||||
//                    saOrderExt.setDeleteLevelList(deleteLevelList);
 | 
			
		||||
//                }
 | 
			
		||||
            }
 | 
			
		||||
        } else if (EOrderType.RETAIL_PICK.getValue() == saOrderExt.getOrderType()) {
 | 
			
		||||
            // 新提货订单
 | 
			
		||||
            if (!iAcRetailPickService.cancelRetailPickOrder(saOrderExt.getPkId(), pkApprove)) {
 | 
			
		||||
| 
						 | 
				
			
			@ -2134,13 +2091,13 @@ public class SaOrderServiceImpl extends ServiceImpl<SaOrderMapper, SaOrder> impl
 | 
			
		|||
            }
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        if (EOrderType.RETAIL_REPURCHASE.getValue() == saOrderExt.getOrderType() ||
 | 
			
		||||
                EOrderType.RETAIL_CONSUME.getValue() == saOrderExt.getOrderType()) {
 | 
			
		||||
            // 需要查询盒数商品
 | 
			
		||||
            List<String> boxProductList = BoxProductUtil.getBoxProductListBySystemType(saOrderExt.getSystemType());
 | 
			
		||||
            // 复购、重消订单处理限购
 | 
			
		||||
            iSaOrderWaresLimitService.updateCancelOrder(saOrderExt.getPkId(), saOrderExt.getPkMember(), saOrderExt.getModifiedTime(), boxProductList);
 | 
			
		||||
        }
 | 
			
		||||
//        if (EOrderType.RETAIL_REPURCHASE.getValue() == saOrderExt.getOrderType() ||
 | 
			
		||||
//                EOrderType.RETAIL_CONSUME.getValue() == saOrderExt.getOrderType()) {
 | 
			
		||||
//            // 需要查询盒数商品
 | 
			
		||||
//            List<String> boxProductList = BoxProductUtil.getBoxProductListBySystemType(saOrderExt.getSystemType());
 | 
			
		||||
//            // 复购、重消订单处理限购
 | 
			
		||||
//            iSaOrderWaresLimitService.updateCancelOrder(saOrderExt.getPkId(), saOrderExt.getPkMember(), saOrderExt.getModifiedTime(), boxProductList);
 | 
			
		||||
//        }
 | 
			
		||||
 | 
			
		||||
        if (!memberServiceApi.normalRevokeOrder(pkApprove, saOrderExt, cuMember, businessCommissionDTO).getData()) {
 | 
			
		||||
            throw new ServiceException("撤单处理会员失败");
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -28,10 +28,10 @@ public enum ECancelOrderType {
 | 
			
		|||
     */
 | 
			
		||||
    OTHER_CANCEL_ORDER(3, "其他整单撤单", 0),
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * 其他部分撤单
 | 
			
		||||
     */
 | 
			
		||||
    OTHER_CANCEL_PART_ORDER(4, "其他部分撤单", 0),
 | 
			
		||||
//    /**
 | 
			
		||||
//     * 其他部分撤单
 | 
			
		||||
//     */
 | 
			
		||||
//    OTHER_CANCEL_PART_ORDER(4, "其他部分撤单", 0),
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * 单点退单
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -3,7 +3,6 @@ package com.hzs.common.domain.sale.ext;
 | 
			
		|||
import com.hzs.common.core.annotation.Transaction;
 | 
			
		||||
import com.hzs.common.core.constant.EnumsPrefixConstants;
 | 
			
		||||
import com.hzs.common.domain.member.account.CuMemberTrade;
 | 
			
		||||
import com.hzs.common.domain.member.detail.CuMemberLevel;
 | 
			
		||||
import com.hzs.common.domain.sale.order.*;
 | 
			
		||||
import com.hzs.common.domain.system.config.BdGrade;
 | 
			
		||||
import lombok.Data;
 | 
			
		||||
| 
						 | 
				
			
			@ -166,15 +165,6 @@ public class SaOrderExt extends SaOrder {
 | 
			
		|||
     */
 | 
			
		||||
    private BdGrade newGrade;
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * 需要添加的升级记录列表
 | 
			
		||||
     */
 | 
			
		||||
    private List<CuMemberLevel> createLevelList;
 | 
			
		||||
    /**
 | 
			
		||||
     * 需要删除的升级记录列表
 | 
			
		||||
     */
 | 
			
		||||
    private List<CuMemberLevel> deleteLevelList;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * 选择区域省
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in New Issue