Compare commits
	
		
			11 Commits
		
	
	
		
			7c0fdc1afd
			...
			5778ca1429
		
	
	| Author | SHA1 | Date | 
|---|---|---|
|  | 5778ca1429 | |
|  | 68827b97f2 | |
|  | e8bba0ae80 | |
|  | a687acd4f3 | |
|  | 78c9b8d038 | |
|  | 5cedaa4f2e | |
|  | 9289057d55 | |
|  | eb34a8eea9 | |
|  | 279a17cf1e | |
|  | 190c8b3c9d | |
|  | ffc688d029 | 
|  | @ -192,7 +192,7 @@ public abstract class BonusSettleHandle { | |||
|      */ | ||||
|     protected Boolean validatePkBonusItems(BonusConfigDTO bonusConfigDTO, Integer pkCountry, Integer bonusItems) { | ||||
|         BdBonusItemsExt bdBonusItemsExt = bonusConfigDTO.getBonusItemsExtMap().get(pkCountry.toString() + bonusItems); | ||||
|         return bdBonusItemsExt == null || bdBonusItemsExt.getPkId() == null; | ||||
|         return null == bdBonusItemsExt || null == bdBonusItemsExt.getPkId(); | ||||
|     } | ||||
| 
 | ||||
|     /** | ||||
|  | @ -1124,10 +1124,7 @@ public abstract class BonusSettleHandle { | |||
|     } | ||||
| 
 | ||||
|     /** | ||||
|      * @Description: 云代计算 扣项,小计,总计 | ||||
|      * @return: void | ||||
|      * @Author: sui q | ||||
|      * @Date: 2023/1/11 13:59 | ||||
|      * 扣项,小计,总计 | ||||
|      */ | ||||
|     protected void setRetailTotal(BdBonusDeduct bdBonusDeduct, CuMemberBonus cuMemberBonus, Object bonusDetail) { | ||||
|         setBonusDeduct(bdBonusDeduct, cuMemberBonus, bonusDetail); | ||||
|  | @ -1137,23 +1134,7 @@ public abstract class BonusSettleHandle { | |||
|     } | ||||
| 
 | ||||
|     /** | ||||
|      * @Description: 云代计算 扣项,小计,总计 | ||||
|      * @return: void | ||||
|      * @Author: sui q | ||||
|      * @Date: 2023/1/11 13:59 | ||||
|      */ | ||||
|     protected void setMakerTotal(BdBonusDeduct bdBonusDeduct, CuMemberBonus cuMemberBonus, Object bonusDetail) { | ||||
|         setBonusDeduct(bdBonusDeduct, cuMemberBonus, bonusDetail); | ||||
|         BigDecimal realIncome = ReflectUtils.invokeGetter(bonusDetail, BonusFieldConstants.REAL_INCOME); | ||||
|         cuMemberBonus.setMakerRealSubtotal(ComputeUtil.computeAdd(cuMemberBonus.getMakerRealSubtotal(), realIncome)); | ||||
|         cuMemberBonus.setRealIncomeTotal(ComputeUtil.computeAdd(cuMemberBonus.getRealIncomeTotal(), realIncome)); | ||||
|     } | ||||
| 
 | ||||
|     /** | ||||
|      * @Description: 云代计算 扣项,小计,总计 | ||||
|      * @return: void | ||||
|      * @Author: sui q | ||||
|      * @Date: 2023/1/11 13:59 | ||||
|      * 扣项,小计,总计 | ||||
|      */ | ||||
|     protected void setRepurchaseCouponTotal(BdBonusDeduct bdBonusDeduct, CuMemberBonus cuMemberBonus, Object bonusDetail) { | ||||
|         setBonusDeduct(bdBonusDeduct, cuMemberBonus, bonusDetail); | ||||
|  |  | |||
|  | @ -57,7 +57,7 @@ public class BonusSettleRangeHandle extends BonusSettleHandle { | |||
|     private IBonusOrderService iBonusOrderService; | ||||
| 
 | ||||
|     /** | ||||
|      * 实时计算当月奖衔 | ||||
|      * 实时计算秒结数据(业绩、盒数、等级、奖衔、日奖) | ||||
|      */ | ||||
|     List<CuMemberBonusRange> calculateCuMemberRetailRangeBonusBySecond(String settleDate, SaOrderExt saOrderExt, BonusConfigDTO bonusConfigDTO, | ||||
|                                                                        String secondRangeTableName, int beforePeriod, int currentPeriod, | ||||
|  | @ -130,17 +130,18 @@ public class BonusSettleRangeHandle extends BonusSettleHandle { | |||
|         // 计算自消费奖衔 | ||||
|         CuMemberRetailRangeExt sourceMemberRangeExt = memberRangeExtMap.get(saOrderExt.getPkMember()); | ||||
|         // 先算等级 注册、升级计算等级 | ||||
|         // 订单指定产品盒数(计算等级使用) | ||||
|         int boxNum = saOrderExt.getBoxNum(); | ||||
| //        int boxNum = 0; | ||||
| //        for (SaOrderWaresExt saOrderItems : saOrderExt.getOrderWaresExtList()) { | ||||
| //            for (String waresCode : RetailProductConstants.ALL_BOX_WARES_LIST) { | ||||
| //                if (saOrderItems.getWaresCode().equals(waresCode)) { | ||||
| //                    boxNum += saOrderItems.getWaresQuantity(); | ||||
| //                    break; | ||||
| //                } | ||||
| //            } | ||||
| //        } | ||||
|         // 订单指定产品盒数 | ||||
|         int boxNum = 0; | ||||
|         for (SaOrderWaresExt saOrderItems : saOrderExt.getOrderWaresExtList()) { | ||||
|             for (String waresCode : RetailProductConstants.ALL_BOX_WARES_LIST) { | ||||
|                 if (saOrderItems.getWaresCode().equals(waresCode)) { | ||||
|                     boxNum += saOrderItems.getWaresQuantity(); | ||||
|                     break; | ||||
|                 } | ||||
|             } | ||||
|         } | ||||
|         saOrderExt.setBoxNum(boxNum); | ||||
| 
 | ||||
|         // 订单业绩 | ||||
|         BigDecimal orderAchieve = saOrderExt.getOrderAchieve(); | ||||
|         if (EOrderType.RETAIL_REPURCHASE.getValue() == saOrderExt.getOrderType() | ||||
|  | @ -163,7 +164,6 @@ public class BonusSettleRangeHandle extends BonusSettleHandle { | |||
|         // 计算团队业绩、盒数,计算等级、奖衔 | ||||
|         cuMemberAwardsList.addAll(calculateRetailRangeGradeAwards(currentPeriod, memberRangeExtMap, rangeTableName, saOrderExt, retailTeamGradeMap, retailAwardsMap, secondRangeTableName, boxNum, cuMemberGradeList)); | ||||
| 
 | ||||
| 
 | ||||
|         // TODO new 奖金处理 | ||||
|         List<CuMemberBonusRange> cuMemberBonusRangeList = new ArrayList<>(); | ||||
|         // 计算奖金 计算平级收益 | ||||
|  | @ -184,13 +184,13 @@ public class BonusSettleRangeHandle extends BonusSettleHandle { | |||
|         List<CuMemberRetailRangeExt> countyRangeExtList = iCuMemberRetailRangeService.batchQueryMemberRetailSecondRangeByCounty(rangeTableName, secondRangeTableName, saOrderExt.getRecCounty()); | ||||
|         countyRangeExtList.forEach(cuMemberRetailRangeExt -> | ||||
|                 countyRangeExtMap.put(cuMemberRetailRangeExt.getSystemType() + "_" + cuMemberRetailRangeExt.getRegionAddress(), cuMemberRetailRangeExt)); | ||||
| 
 | ||||
|         // 计算区域奖 | ||||
|         CuMemberBonusDetail cuMemberBonusDetail = calculateRetailAreaBonus(countyRangeExtMap, saOrderExt, bonusConfigDTO, currentPeriod, memberRangeExtMap, cuMemberBonusMap); | ||||
|         CuMemberBonusDetail cuMemberBonusDetail = calculateRetailAreaBonus(countyRangeExtMap, bonusConfigDTO, currentPeriod, memberRangeExtMap, cuMemberBonusMap, saOrderExt); | ||||
|         if (cuMemberBonusDetail != null) { | ||||
|             cuMemberBonusDetailList.add(cuMemberBonusDetail); | ||||
|         } | ||||
| 
 | ||||
| 
 | ||||
|         // 回退会员等级 | ||||
|         iCuMemberGradeService.updateCuMemberGrade(secondRangeTableName, saOrderExt.getPkId()); | ||||
|         if (cuMemberGradeList.size() > 0) { | ||||
|  | @ -214,32 +214,43 @@ public class BonusSettleRangeHandle extends BonusSettleHandle { | |||
|     } | ||||
| 
 | ||||
|     /** | ||||
|      * 实时计算当月奖衔 | ||||
|      * 实时计算撤单数据(业绩、盒数、等级、奖衔、日奖) | ||||
|      */ | ||||
|     void calculateCuMemberBackRetailIncome(SaOrderExt saOrderExt, BonusConfigDTO bonusConfigDTO, | ||||
|                                            String secondRangeTableName, int beforePeriod, int currentPeriod) { | ||||
|         // 当天的撤单 | ||||
|         List<CuMemberRetailRangeExt> memberRetailRangeExtList; | ||||
|         String rangeTableName = TableNameConstants.CU_MEMBER_RETAIL_RANGE + beforePeriod; | ||||
| 
 | ||||
|         if (DateUtils.isSameDay(saOrderExt.getPayTime(), DateUtils.currentDate())) { | ||||
|             // 按照血缘,查询该会员所有伞上会员 | ||||
|             // 当天撤单 | ||||
|             // 实时网体查询血缘伞上会员,更新秒结表等级、奖衔 | ||||
|             iCuMemberRetailRangeService.mergeMemberRetailGradeByMember(secondRangeTableName, saOrderExt.getPkMember()); | ||||
|             // 恢复奖衔 | ||||
|             // 恢复秒结表奖衔 | ||||
|             iCuMemberAwardsService.mergeCuMemberBackAwards(secondRangeTableName, saOrderExt.getPkMember(), currentPeriod); | ||||
|             // 查询 昨天日结 + 今天秒结 血缘上会员结算数据 | ||||
|             memberRetailRangeExtList = iCuMemberRetailRangeService.queryCuMemberSecondRangeParent(rangeTableName, secondRangeTableName, saOrderExt.getPkMember()); | ||||
|         } else { | ||||
|             // 非当天撤单 | ||||
|             rangeTableName = TableNameConstants.CU_MEMBER_RETAIL_RANGE + currentPeriod; | ||||
|             List<SaOrderExt> retailOrderList = new ArrayList<>(); | ||||
|             retailOrderList.add(saOrderExt); | ||||
|             // 实时网体查询血缘上会员,更新订单支付日结表等级、奖衔 | ||||
|             iCuMemberRetailRangeService.mergeMemberRetailGradeByMember(rangeTableName, saOrderExt.getPkMember()); | ||||
|             // 恢复奖衔 | ||||
|             // 恢复日结表奖衔 | ||||
|             iCuMemberAwardsService.mergeCuMemberBackAwards(rangeTableName, saOrderExt.getPkMember(), beforePeriod); | ||||
|             // 查询 订单下单日结 血缘上会员结算数据 | ||||
|             memberRetailRangeExtList = iCuMemberRetailRangeService.queryCuMemberRetailRangeParent(rangeTableName, retailOrderList); | ||||
|         } | ||||
| 
 | ||||
|         // 会员结算map(key:会员ID,value:结算扩展) | ||||
|         Map<Long, CuMemberRetailRangeExt> memberRangeExtMap = new HashMap<>(); | ||||
| 
 | ||||
|         // 团队升级等级map(key:等级值,value:等级对象) | ||||
|         Map<Integer, BdGrade> retailTeamGradeMap = new TreeMap<>(); | ||||
|         // 等级map(key:等级ID,value:等级对象) | ||||
|         Map<Integer, BdGrade> gradeIdMap = new HashMap<>(); | ||||
|         // 等级列表 | ||||
|         List<BdGrade> retaiGradeList = bonusConfigDTO.getRetaiGradeList(); | ||||
|         // 等级 | ||||
|         for (BdGrade bdGrade : retaiGradeList) { | ||||
|  | @ -248,18 +259,20 @@ public class BonusSettleRangeHandle extends BonusSettleHandle { | |||
|             } | ||||
|             gradeIdMap.put(bdGrade.getPkId(), bdGrade); | ||||
|         } | ||||
| 
 | ||||
|         // 奖衔map(key:奖衔值,value:奖衔对象) | ||||
|         Map<Integer, BdAwards> retailAwardsMap = new HashMap<>(); | ||||
|         List<BdAwards> awardsList = bonusConfigDTO.getAwardsList(); | ||||
|         awardsList.forEach(bdAwards -> retailAwardsMap.put(bdAwards.getAwardsValue(), bdAwards)); | ||||
| 
 | ||||
|         for (CuMemberRetailRangeExt cuMemberRetailRangeExt : memberRetailRangeExtList) { | ||||
|             if (!memberRangeExtMap.containsKey(cuMemberRetailRangeExt.getPkMember())) { | ||||
|                 cuMemberRetailRangeExt.setBuyNum(0); | ||||
|                 // 转换等级购买数量 | ||||
|                 memberRangeExtMap.put(cuMemberRetailRangeExt.getPkMember(), cuMemberRetailRangeExt); | ||||
|             } | ||||
|         } | ||||
|         Map<String, CuMemberGrade> cuMemberGradeMap = new HashMap<>(); | ||||
|         Map<String, CuMemberAwards> cuMemberAwardsMap = new HashMap<>(); | ||||
| 
 | ||||
|         // 计算自消费奖衔 | ||||
|         CuMemberRetailRangeExt sourceMemberRangeExt = memberRangeExtMap.get(saOrderExt.getPkMember()); | ||||
|         // 先算等级 注册、升级计算等级 | ||||
|         int boxNum = 0; | ||||
|  | @ -271,23 +284,32 @@ public class BonusSettleRangeHandle extends BonusSettleHandle { | |||
|                 } | ||||
|             } | ||||
|         } | ||||
|         saOrderExt.setBoxNum(boxNum); | ||||
| 
 | ||||
|         // 订单业绩 | ||||
|         BigDecimal orderAchieve = saOrderExt.getOrderAchieve(); | ||||
| //        if (saOrderExt.getOrderType().equals(EOrderType.RETAIL_REGISTER.getValue()) || | ||||
| //                saOrderExt.getOrderType().equals(EOrderType.RETAIL_UPGRADE.getValue())) { | ||||
| //            orderAchieve = BigDecimal.ZERO; | ||||
| //        }else{ | ||||
| // | ||||
| //        } | ||||
|         // 个人累计消费pv | ||||
|         sourceMemberRangeExt.setConsumeBoxNum(sourceMemberRangeExt.getConsumeBoxNum() - boxNum); | ||||
|         sourceMemberRangeExt.setNewBoxNum(sourceMemberRangeExt.getNewBoxNum() - boxNum); | ||||
|         sourceMemberRangeExt.setConsumePv(ComputeUtil.computeSubtract(sourceMemberRangeExt.getConsumePv(), orderAchieve)); | ||||
|         sourceMemberRangeExt.setMonthConsumePv(ComputeUtil.computeSubtract(sourceMemberRangeExt.getMonthConsumePv(), orderAchieve)); | ||||
|         sourceMemberRangeExt.setNewConsumePv(ComputeUtil.computeSubtract(sourceMemberRangeExt.getNewConsumePv(), orderAchieve)); | ||||
|         // 团队业绩,计算奖衔 | ||||
|         if (EOrderType.RETAIL_REPURCHASE.getValue() == saOrderExt.getOrderType() | ||||
|                 || EOrderType.RETAIL_CONSUME.getValue() == saOrderExt.getOrderType() | ||||
|         ) { | ||||
|             // 复购、重消,盒数、业绩算个人累计数据(盒数、业绩) | ||||
|             sourceMemberRangeExt.setConsumeBoxNum(sourceMemberRangeExt.getConsumeBoxNum() - boxNum); | ||||
|             sourceMemberRangeExt.setNewBoxNum(sourceMemberRangeExt.getNewBoxNum() - boxNum); | ||||
|             sourceMemberRangeExt.setConsumePv(ComputeUtil.computeSubtract(sourceMemberRangeExt.getConsumePv(), orderAchieve)); | ||||
|             sourceMemberRangeExt.setMonthConsumePv(ComputeUtil.computeSubtract(sourceMemberRangeExt.getMonthConsumePv(), orderAchieve)); | ||||
|             sourceMemberRangeExt.setNewConsumePv(ComputeUtil.computeSubtract(sourceMemberRangeExt.getNewConsumePv(), orderAchieve)); | ||||
|         } | ||||
| 
 | ||||
|         // 会员等级map | ||||
|         Map<String, CuMemberGrade> cuMemberGradeMap = new HashMap<>(); | ||||
|         // 会员奖衔map | ||||
|         Map<String, CuMemberAwards> cuMemberAwardsMap = new HashMap<>(); | ||||
|         // 计算自己等级、奖衔等 | ||||
|         calculateBackGrade(currentPeriod, memberRangeExtMap, rangeTableName, saOrderExt, retailTeamGradeMap, retailAwardsMap, secondRangeTableName, cuMemberGradeMap, cuMemberAwardsMap, sourceMemberRangeExt); | ||||
|         // 计算团队业绩、盒数,计算等级、奖衔 | ||||
|         List<CuMemberRetailRangeExt> cuMemberRetailRangeExtList = calculateRetailBackRangeGradeAwards(currentPeriod, memberRangeExtMap, rangeTableName, saOrderExt, retailTeamGradeMap, retailAwardsMap, secondRangeTableName, boxNum, cuMemberGradeMap, cuMemberAwardsMap); | ||||
|         cuMemberRetailRangeExtList.add(sourceMemberRangeExt); | ||||
| 
 | ||||
| 
 | ||||
|         // 查询期间的等级和奖衔 | ||||
|         List<CuMemberGrade> memberGradeList = iCuMemberGradeService.queryCuMemberGrade(cuMemberRetailRangeExtList, currentPeriod); | ||||
|         // 查询最大的手动奖衔 | ||||
|  | @ -409,8 +431,6 @@ public class BonusSettleRangeHandle extends BonusSettleHandle { | |||
|         // 更新网体 | ||||
|         iCuMemberRetailRangeService.mergeMemberRetailRangeByYesterday(settleEndDate, rangeTableName, yesterdayRangeTableName, isSameMonth); | ||||
| 
 | ||||
|         //////////////// TODO ////////////////////// | ||||
| 
 | ||||
|         // 回退历史注水 | ||||
|         iCuMemberRetailRangeService.mergeCuMemberRetailBackBoxBySpecial(rangeTableName, yesterdayRangeTableName, period); | ||||
|         // 更新注水 | ||||
|  | @ -426,7 +446,6 @@ public class BonusSettleRangeHandle extends BonusSettleHandle { | |||
| 
 | ||||
|             // 会员结算map(key:会员ID,value:结算扩展) | ||||
|             Map<Long, CuMemberRetailRangeExt> memberRangeExtMap = new HashMap<>(); | ||||
| 
 | ||||
|             // 购买升级等级map(key:等级值,value:等级对象) | ||||
|             Map<Integer, BdGrade> retaiBuyGradeMap = new TreeMap<>(); | ||||
|             // 团队升级等级map(key:等级值,value:等级对象) | ||||
|  | @ -537,31 +556,35 @@ public class BonusSettleRangeHandle extends BonusSettleHandle { | |||
| 
 | ||||
| 
 | ||||
|                 // TODO new 奖金处理 | ||||
|                 // 计算奖金 计算极差平级收益 | ||||
|                 for (SaOrderWaresExt saOrderItems : saOrderExt.getOrderWaresExtList()) { | ||||
|                     for (String waresCode : RetailProductConstants.ALL_BOX_WARES_LIST) { | ||||
|                         if (saOrderItems.getWaresCode() != null && saOrderItems.getWaresCode().equals(waresCode)) { | ||||
|                 // 计算奖金 直推级差 + 平级收益 | ||||
|                 if ((EOrderType.RETAIL_REGISTER.getValue() == saOrderExt.getOrderType() | ||||
|                         || EOrderType.RETAIL_UPGRADE.getValue() == saOrderExt.getOrderType()) | ||||
|                         && boxNum > 0 | ||||
|                 ) { | ||||
|                     // 注册或升级订单并且存在盒数产品,才有 直推级差收益 和 平级收益 | ||||
|                     for (SaOrderWaresExt saOrderItems : saOrderExt.getOrderWaresExtList()) { | ||||
|                         // 直推级差 + 平级收益 | ||||
|                         cuMemberBonusRangeList.addAll(calculateRetailRangeBonus(memberRangeExtMap, cuMemberBonusMap, gradeMap, bonusConfigDTO, period, saOrderItems, saOrderExt)); | ||||
| 
 | ||||
|                         // 计算完奖金算等级 | ||||
|                         if (EOrderType.RETAIL_REGISTER.getValue() == saOrderExt.getOrderType() || | ||||
|                                 EOrderType.RETAIL_UPGRADE.getValue() == saOrderExt.getOrderType() || | ||||
|                                 EOrderType.RETAIL_REPURCHASE.getValue() == saOrderExt.getOrderType()) { | ||||
|                             // 计算个人等级,消费等级 | ||||
|                             int waresQuantity = saOrderItems.getWaresQuantity(); | ||||
|                             cuMemberBonusRangeList.addAll(calculateRetailRangeBonus(memberRangeExtMap, cuMemberBonusMap, gradeMap, bonusConfigDTO, period, saOrderItems, saOrderExt)); | ||||
|                             // 计算完奖金算等级 | ||||
|                             if (EOrderType.RETAIL_REGISTER.getValue() == saOrderExt.getOrderType() || | ||||
|                                     EOrderType.RETAIL_UPGRADE.getValue() == saOrderExt.getOrderType() || | ||||
|                                     EOrderType.RETAIL_REPURCHASE.getValue() == saOrderExt.getOrderType()) { | ||||
|                                 // 计算个人等级,消费等级 | ||||
|                                 int buyBoxNum = sourceMemberRangeExt.getBuyNum() + waresQuantity; | ||||
|                                 if (memberLevelMap.containsKey(saOrderExt.getPkId())) { | ||||
|                                     CuMemberLevel cuMemberLevel = memberLevelMap.get(saOrderExt.getPkId()); | ||||
|                                     if (gradeIdMap.containsKey(cuMemberLevel.getNewLevel())) { | ||||
|                                         BdGrade bdGrade = gradeIdMap.get(cuMemberLevel.getNewLevel()); | ||||
|                                         if (bdGrade.getGradeValue() > sourceMemberRangeExt.getGradeValue()) { | ||||
|                                             sourceMemberRangeExt.setGradeValue(bdGrade.getGradeValue()); | ||||
|                                             sourceMemberRangeExt.setPkGrade(bdGrade.getPkId()); | ||||
|                                             sourceMemberRangeExt.setGradeName(bdGrade.getGradeName()); | ||||
|                                             if (sourceMemberRangeExt.getSameDate() == EYesNo.NO.getIntValue()) { | ||||
|                                                 sourceMemberRangeExt.setBuyNum(bdGrade.getBoxNumber()); | ||||
|                                             } else { | ||||
|                                                 sourceMemberRangeExt.setBuyNum(buyBoxNum); | ||||
|                                             } | ||||
|                             int buyBoxNum = sourceMemberRangeExt.getBuyNum() + waresQuantity; | ||||
|                             if (memberLevelMap.containsKey(saOrderExt.getPkId())) { | ||||
|                                 CuMemberLevel cuMemberLevel = memberLevelMap.get(saOrderExt.getPkId()); | ||||
|                                 if (gradeIdMap.containsKey(cuMemberLevel.getNewLevel())) { | ||||
|                                     BdGrade bdGrade = gradeIdMap.get(cuMemberLevel.getNewLevel()); | ||||
|                                     if (bdGrade.getGradeValue() > sourceMemberRangeExt.getGradeValue()) { | ||||
|                                         sourceMemberRangeExt.setGradeValue(bdGrade.getGradeValue()); | ||||
|                                         sourceMemberRangeExt.setPkGrade(bdGrade.getPkId()); | ||||
|                                         sourceMemberRangeExt.setGradeName(bdGrade.getGradeName()); | ||||
|                                         if (sourceMemberRangeExt.getSameDate() == EYesNo.NO.getIntValue()) { | ||||
|                                             sourceMemberRangeExt.setBuyNum(bdGrade.getBoxNumber()); | ||||
|                                         } else { | ||||
|                                             sourceMemberRangeExt.setBuyNum(buyBoxNum); | ||||
|                                         } | ||||
|                                     } | ||||
|                                 } | ||||
|  | @ -569,11 +592,9 @@ public class BonusSettleRangeHandle extends BonusSettleHandle { | |||
|                         } | ||||
|                     } | ||||
|                 } | ||||
|                 if (saOrderExt.getOrderType().equals(EOrderType.RETAIL_CONSUME.getValue())) { | ||||
|                     continue; | ||||
|                 } | ||||
| //                 计算区域奖 | ||||
|                 CuMemberBonusDetail cuMemberBonusDetail = calculateRetailAreaBonus(countyRangeExtMap, saOrderExt, bonusConfigDTO, period, memberRangeExtMap, cuMemberBonusMap); | ||||
| 
 | ||||
|                 // 计算区域奖 | ||||
|                 CuMemberBonusDetail cuMemberBonusDetail = calculateRetailAreaBonus(countyRangeExtMap, bonusConfigDTO, period, memberRangeExtMap, cuMemberBonusMap, saOrderExt); | ||||
|                 if (cuMemberBonusDetail != null) { | ||||
|                     cuMemberBonusDetailList.add(cuMemberBonusDetail); | ||||
|                 } | ||||
|  | @ -926,7 +947,6 @@ public class BonusSettleRangeHandle extends BonusSettleHandle { | |||
|             // 如果等级值 大于 当前会员等级值 并且 等级要求累计盒数 小于等于 团队累计盒数 + 累计消费盒数,则可以进行升级 | ||||
|             if (bdGrade.getGradeValue() > targetMemberRangeExt.getGradeValue() | ||||
|                     && bdGrade.getBoxTotal() <= (targetMemberRangeExt.getTeamBoxNum() + targetMemberRangeExt.getConsumeBoxNum())) { | ||||
| 
 | ||||
|                 // 验证小区,计算小区累计盒数 查询伞下会员 | ||||
|                 List<CuMemberRetailRangeExt> cuMemberRangeExtList; | ||||
|                 if (secondRangeTableName != null) { | ||||
|  | @ -982,7 +1002,7 @@ public class BonusSettleRangeHandle extends BonusSettleHandle { | |||
|                 // 先验证累计业绩 | ||||
|                 // new 升级奖衔判断为当月累计业绩,累计业绩为团队业绩 + 个人消费业绩 | ||||
|                 if (ComputeUtil.compareValue(ComputeUtil.computeAdd(targetMemberRangeExt.getTeamMonthPv(), targetMemberRangeExt.getMonthConsumePv()), bdAwards.getTotalCheck())) { | ||||
|                     // 累计业绩足够 | ||||
|                     // 累计业绩足够,即可升奖衔 | ||||
| //                    BigDecimal consumeBigPv = BigDecimal.ZERO; | ||||
| //                    if (ComputeUtil.compareValue(bdAwards.getCommunityCheck())) { | ||||
| //                        // 验证小区,计算小区业绩 | ||||
|  | @ -1002,12 +1022,11 @@ public class BonusSettleRangeHandle extends BonusSettleHandle { | |||
| //                            } | ||||
| //                        } | ||||
| //                    } | ||||
| //                    // new 新制度奖衔不校验小区 | ||||
| //                    BigDecimal smallAreaPv = ComputeUtil.computeSubtract(ComputeUtil.computeAdd(targetMemberRangeExt.getTeamMonthPv(), targetMemberRangeExt.getMonthConsumePv()), consumeBigPv); | ||||
| //                    if (ComputeUtil.compareValue(smallAreaPv, bdAwards.getCommunityCheck())) { | ||||
|                     cuMemberAwardsList.add(getCuMemberRetailAwards(targetMemberRangeExt, period, saOrderExt, bdAwards, EAwardsType.RANGE_TYPE.getValue())); | ||||
|                     targetMemberRangeExt.setAwardsValue(bdAwards.getAwardsValue()); | ||||
|                     targetMemberRangeExt.setPkAwards(bdAwards.getPkId()); | ||||
|                     targetMemberRangeExt.setAwardsValue(bdAwards.getAwardsValue()); | ||||
|                     targetMemberRangeExt.setAwardsName(bdAwards.getAwardsName()); | ||||
|                     continue; | ||||
| //                    } | ||||
|  | @ -1075,26 +1094,31 @@ public class BonusSettleRangeHandle extends BonusSettleHandle { | |||
|     public List<CuMemberRetailRangeExt> calculateRetailBackRangeGradeAwards(Integer period, Map<Long, CuMemberRetailRangeExt> memberRangeExtMap, String rangeTableName, SaOrderExt saOrderExt, | ||||
|                                                                             Map<Integer, BdGrade> retailTeamGradeMap, Map<Integer, BdAwards> retailAwardsMap, String secondRangeTableName, | ||||
|                                                                             Integer boxNum, Map<String, CuMemberGrade> cuMemberGradeMap, Map<String, CuMemberAwards> cuMemberAwardsMap) { | ||||
|         CuMemberRetailRangeExt sourceMemberRangeExt = memberRangeExtMap.get(saOrderExt.getPkMember()); | ||||
|         CuMemberRetailRangeExt targetMemberRangeExt = memberRangeExtMap.get(sourceMemberRangeExt.getPkParent()); | ||||
|         List<CuMemberRetailRangeExt> cuMemberRetailRangeExtList = new ArrayList<>(); | ||||
|         // 订单会员 | ||||
|         CuMemberRetailRangeExt sourceMemberRangeExt = memberRangeExtMap.get(saOrderExt.getPkMember()); | ||||
|         // 订单会员的推荐人 | ||||
|         CuMemberRetailRangeExt targetMemberRangeExt = memberRangeExtMap.get(sourceMemberRangeExt.getPkParent()); | ||||
| 
 | ||||
|         BigDecimal orderAchieve = saOrderExt.getOrderAchieve(); | ||||
|         BigDecimal orderAmount = saOrderExt.getOrderAmount(); | ||||
|         // 累计业绩 | ||||
|         targetMemberRangeExt.setTeamConsumeAmount(ComputeUtil.computeSubtract(targetMemberRangeExt.getTeamConsumeAmount(), orderAmount)); | ||||
|         targetMemberRangeExt.setTeamConsumePv(ComputeUtil.computeSubtract(targetMemberRangeExt.getTeamConsumePv(), orderAchieve)); | ||||
|         targetMemberRangeExt.setTeamMonthAmount(ComputeUtil.computeSubtract(targetMemberRangeExt.getTeamMonthAmount(), orderAmount)); | ||||
|         targetMemberRangeExt.setTeamMonthPv(ComputeUtil.computeSubtract(targetMemberRangeExt.getTeamMonthPv(), orderAchieve)); | ||||
|         targetMemberRangeExt.setTeamNewAmount(ComputeUtil.computeSubtract(targetMemberRangeExt.getTeamNewAmount(), orderAmount)); | ||||
|         targetMemberRangeExt.setTeamNewPv(ComputeUtil.computeSubtract(targetMemberRangeExt.getTeamNewPv(), orderAchieve)); | ||||
|         while (targetMemberRangeExt != null) { | ||||
|             // 累计盒数 | ||||
|             // 激活的账号才能累计业绩和盒数(有注册、升级订单) | ||||
|             if (targetMemberRangeExt.getEnableStatus() == EYesNo.YES.getIntValue()) { | ||||
|                 // 累计业绩 | ||||
|                 targetMemberRangeExt.setTeamConsumeAmount(ComputeUtil.computeSubtract(targetMemberRangeExt.getTeamConsumeAmount(), orderAmount)); | ||||
|                 targetMemberRangeExt.setTeamConsumePv(ComputeUtil.computeSubtract(targetMemberRangeExt.getTeamConsumePv(), orderAchieve)); | ||||
|                 targetMemberRangeExt.setTeamMonthAmount(ComputeUtil.computeSubtract(targetMemberRangeExt.getTeamMonthAmount(), orderAmount)); | ||||
|                 targetMemberRangeExt.setTeamMonthPv(ComputeUtil.computeSubtract(targetMemberRangeExt.getTeamMonthPv(), orderAchieve)); | ||||
|                 targetMemberRangeExt.setTeamNewAmount(ComputeUtil.computeSubtract(targetMemberRangeExt.getTeamNewAmount(), orderAmount)); | ||||
|                 targetMemberRangeExt.setTeamNewPv(ComputeUtil.computeSubtract(targetMemberRangeExt.getTeamNewPv(), orderAchieve)); | ||||
|                 // 累计盒数 | ||||
|                 targetMemberRangeExt.setTeamBoxNum(targetMemberRangeExt.getTeamBoxNum() - boxNum); | ||||
|                 targetMemberRangeExt.setMonthBoxNum(targetMemberRangeExt.getMonthBoxNum() - boxNum); | ||||
|                 targetMemberRangeExt.setTeamNewBoxNum(targetMemberRangeExt.getTeamNewBoxNum() - boxNum); | ||||
|                 cuMemberRetailRangeExtList.add(targetMemberRangeExt); | ||||
|                 // 计算等级 | ||||
|                 calculateBackGrade(period, memberRangeExtMap, rangeTableName, saOrderExt, retailTeamGradeMap, retailAwardsMap, secondRangeTableName, cuMemberGradeMap, cuMemberAwardsMap, targetMemberRangeExt); | ||||
|                 cuMemberRetailRangeExtList.add(targetMemberRangeExt); | ||||
|             } | ||||
|             // 计算等级 | ||||
|             targetMemberRangeExt = memberRangeExtMap.get(targetMemberRangeExt.getPkParent()); | ||||
|  | @ -1102,34 +1126,51 @@ public class BonusSettleRangeHandle extends BonusSettleHandle { | |||
|         return cuMemberRetailRangeExtList; | ||||
|     } | ||||
| 
 | ||||
|     private void calculateBackGrade(Integer period, Map<Long, CuMemberRetailRangeExt> memberRangeExtMap, String rangeTableName, SaOrderExt saOrderExt, Map<Integer, BdGrade> retailTeamGradeMap, Map<Integer, BdAwards> retailAwardsMap, String secondRangeTableName, Map<String, CuMemberGrade> cuMemberGradeMap, Map<String, CuMemberAwards> cuMemberAwardsMap, CuMemberRetailRangeExt targetMemberRangeExt) { | ||||
|     private void calculateBackGrade(Integer period, Map<Long, CuMemberRetailRangeExt> memberRangeExtMap, String rangeTableName, | ||||
|                                     SaOrderExt saOrderExt, Map<Integer, BdGrade> retailTeamGradeMap, Map<Integer, BdAwards> retailAwardsMap, | ||||
|                                     String secondRangeTableName, Map<String, CuMemberGrade> cuMemberGradeMap, Map<String, CuMemberAwards> cuMemberAwardsMap, | ||||
|                                     CuMemberRetailRangeExt targetMemberRangeExt) { | ||||
|         // 遍历团队等级map(V4,V5) | ||||
|         for (Integer gradeValue : retailTeamGradeMap.keySet()) { | ||||
|             BdGrade bdGrade = retailTeamGradeMap.get(gradeValue); | ||||
| 
 | ||||
|             if (bdGrade.getBoxTotal() <= (targetMemberRangeExt.getTeamBoxNum() + targetMemberRangeExt.getConsumeBoxNum())) { | ||||
|                 // 验证小区,计算小区累计盒数 查询伞下会员 | ||||
|                 List<CuMemberRetailRangeExt> cuMemberRangeExtList; | ||||
|                 if (secondRangeTableName != null) { | ||||
|                     // 秒结表关联昨日结算表,查询订单会员直推数据 | ||||
|                     cuMemberRangeExtList = iCuMemberRetailRangeService.queryCuMemberSecondRangeExtByParent(rangeTableName, secondRangeTableName, targetMemberRangeExt.getPkMember()); | ||||
|                 } else { | ||||
|                     // 昨日结算表,查询订单会员直推数据 | ||||
|                     cuMemberRangeExtList = iCuMemberRetailRangeService.queryCuMemberRetailRangeExtByParent(rangeTableName, targetMemberRangeExt.getPkMember()); | ||||
|                 } | ||||
| 
 | ||||
|                 // 有注水的,大区无限大,新增全算小区 | ||||
|                 // 大区盒数 | ||||
|                 int bigBoxNum = targetMemberRangeExt.getConsumeBoxNum(); | ||||
|                 if (targetMemberRangeExt.getBigBoxNum() > 0) { | ||||
|                     // 大区存在注水盒数,直接使用大区注水盒数 | ||||
|                     bigBoxNum = targetMemberRangeExt.getBigBoxNum(); | ||||
|                 } else { | ||||
|                     // 秒结 cuMemberRangeExtList 为直推会员数据, memberRangeExtMap 为会员伞上数据,这块应该永远不会处理 | ||||
|                     // 日结这块处理直推判断大小区没问题 | ||||
|                     for (CuMemberRetailRangeExt cuMemberRetailRangeExt : cuMemberRangeExtList) { | ||||
|                         if (memberRangeExtMap.containsKey(cuMemberRetailRangeExt.getPkMember())) { | ||||
|                             cuMemberRetailRangeExt = memberRangeExtMap.get(cuMemberRetailRangeExt.getPkMember()); | ||||
|                         } | ||||
|                         // 伞下团队累计盒数 + 自己消费盒数 - 大区注水 - 小区注水 | ||||
|                         int areaBoxNum = cuMemberRetailRangeExt.getTeamBoxNum() + cuMemberRetailRangeExt.getConsumeBoxNum() | ||||
|                                 - cuMemberRetailRangeExt.getBigBoxNum() - cuMemberRetailRangeExt.getSmallBoxNum(); | ||||
|                         if (areaBoxNum > bigBoxNum) { | ||||
|                             // 实际订单累计盒数 大于 累计消费盒数,实际订单累计盒数为大区 | ||||
|                             bigBoxNum = areaBoxNum; | ||||
|                         } | ||||
|                     } | ||||
|                 } | ||||
|                 // 小区盒数 | ||||
|                 int smallBoxNum = targetMemberRangeExt.getTeamBoxNum() + targetMemberRangeExt.getConsumeBoxNum() - bigBoxNum; | ||||
|                 if (smallBoxNum >= bdGrade.getBoxSmallTotal()) { | ||||
|                     // 小区盒数 大于等于 升级小区盒数 | ||||
|                     CuMemberGrade cuMemberGrade = getCuMemberGrade(period, targetMemberRangeExt, bdGrade); | ||||
|                     cuMemberGradeMap.put(cuMemberGrade.getPkMember() + "_" + cuMemberGrade.getNewLevel(), cuMemberGrade); | ||||
|                     targetMemberRangeExt.setGradeValue(bdGrade.getGradeValue()); | ||||
|  | @ -1138,39 +1179,42 @@ public class BonusSettleRangeHandle extends BonusSettleHandle { | |||
|                 } | ||||
|             } | ||||
|         } | ||||
|         // 计算奖衔 | ||||
|         // 计算奖衔(荣誉级别) | ||||
|         while (true) { | ||||
|             int awardsValue = targetMemberRangeExt.getAwardsValue() + 5; | ||||
|             if (targetMemberRangeExt.getGradeValue().equals(EGrade.S_VIP.getValue()) && retailAwardsMap.containsKey(awardsValue)) { | ||||
|                 // 等级达到V5 并且 存在下个奖衔,判断是否能升奖衔 | ||||
|                 BdAwards bdAwards = retailAwardsMap.get(awardsValue); | ||||
|                 // 先验证累计业绩 | ||||
|                 // new 升级奖衔判断为当月累计业绩,累计业绩为团队业绩 + 个人消费业绩 | ||||
|                 if (ComputeUtil.compareValue(ComputeUtil.computeAdd(targetMemberRangeExt.getTeamMonthPv(), targetMemberRangeExt.getMonthConsumePv()), bdAwards.getTotalCheck())) { | ||||
|                     // 验证小区,计算小区业绩 | ||||
|                     List<CuMemberRetailRangeExt> cuMemberRangeExtList; | ||||
|                     if (secondRangeTableName != null) { | ||||
|                         cuMemberRangeExtList = iCuMemberRetailRangeService.queryCuMemberSecondRangeExtByParent(rangeTableName, secondRangeTableName, targetMemberRangeExt.getPkMember()); | ||||
|                     } else { | ||||
|                         cuMemberRangeExtList = iCuMemberRetailRangeService.queryCuMemberRetailRangeExtByParent(rangeTableName, targetMemberRangeExt.getPkMember()); | ||||
|                     } | ||||
|                     BigDecimal consumeBigPv = BigDecimal.ZERO; | ||||
|                     for (CuMemberRetailRangeExt cuMemberRetailRangeExt : cuMemberRangeExtList) { | ||||
|                         if (memberRangeExtMap.containsKey(cuMemberRetailRangeExt.getPkMember())) { | ||||
|                             cuMemberRetailRangeExt = memberRangeExtMap.get(cuMemberRetailRangeExt.getPkMember()); | ||||
|                         } | ||||
|                         BigDecimal consumePv = ComputeUtil.computeAdd(cuMemberRetailRangeExt.getMonthConsumePv(), cuMemberRetailRangeExt.getTeamMonthPv()); | ||||
|                         if (ComputeUtil.compareGreaterThan(consumePv, consumeBigPv)) { | ||||
|                             consumeBigPv = consumePv; | ||||
|                         } | ||||
|                     } | ||||
|                     BigDecimal smallAreaPv = ComputeUtil.computeSubtract(targetMemberRangeExt.getTeamMonthPv(), consumeBigPv); | ||||
|                     if (ComputeUtil.compareValue(smallAreaPv, bdAwards.getCommunityCheck())) { | ||||
|                         CuMemberAwards cuMemberRetailAwards = getCuMemberRetailAwards(targetMemberRangeExt, period, saOrderExt, bdAwards, EAwardsType.RANGE_TYPE.getValue()); | ||||
|                         cuMemberAwardsMap.put(cuMemberRetailAwards.getPkMember() + "_" + cuMemberRetailAwards.getNewLevel(), cuMemberRetailAwards); | ||||
|                         targetMemberRangeExt.setAwardsValue(bdAwards.getAwardsValue()); | ||||
|                         targetMemberRangeExt.setPkAwards(bdAwards.getPkId()); | ||||
|                         targetMemberRangeExt.setAwardsName(bdAwards.getAwardsName()); | ||||
|                         continue; | ||||
|                     } | ||||
|                     // 累计业绩足够,即可升奖衔 | ||||
| //                    // 验证小区,计算小区业绩 | ||||
| //                    List<CuMemberRetailRangeExt> cuMemberRangeExtList; | ||||
| //                    if (secondRangeTableName != null) { | ||||
| //                        cuMemberRangeExtList = iCuMemberRetailRangeService.queryCuMemberSecondRangeExtByParent(rangeTableName, secondRangeTableName, targetMemberRangeExt.getPkMember()); | ||||
| //                    } else { | ||||
| //                        cuMemberRangeExtList = iCuMemberRetailRangeService.queryCuMemberRetailRangeExtByParent(rangeTableName, targetMemberRangeExt.getPkMember()); | ||||
| //                    } | ||||
| //                    BigDecimal consumeBigPv = BigDecimal.ZERO; | ||||
| //                    for (CuMemberRetailRangeExt cuMemberRetailRangeExt : cuMemberRangeExtList) { | ||||
| //                        if (memberRangeExtMap.containsKey(cuMemberRetailRangeExt.getPkMember())) { | ||||
| //                            cuMemberRetailRangeExt = memberRangeExtMap.get(cuMemberRetailRangeExt.getPkMember()); | ||||
| //                        } | ||||
| //                        BigDecimal consumePv = ComputeUtil.computeAdd(cuMemberRetailRangeExt.getMonthConsumePv(), cuMemberRetailRangeExt.getTeamMonthPv()); | ||||
| //                        if (ComputeUtil.compareGreaterThan(consumePv, consumeBigPv)) { | ||||
| //                            consumeBigPv = consumePv; | ||||
| //                        } | ||||
| //                    } | ||||
| //                    BigDecimal smallAreaPv = ComputeUtil.computeSubtract(targetMemberRangeExt.getTeamMonthPv(), consumeBigPv); | ||||
| //                    if (ComputeUtil.compareValue(smallAreaPv, bdAwards.getCommunityCheck())) { | ||||
|                     CuMemberAwards cuMemberRetailAwards = getCuMemberRetailAwards(targetMemberRangeExt, period, saOrderExt, bdAwards, EAwardsType.RANGE_TYPE.getValue()); | ||||
|                     cuMemberAwardsMap.put(cuMemberRetailAwards.getPkMember() + "_" + cuMemberRetailAwards.getNewLevel(), cuMemberRetailAwards); | ||||
|                     targetMemberRangeExt.setPkAwards(bdAwards.getPkId()); | ||||
|                     targetMemberRangeExt.setAwardsValue(bdAwards.getAwardsValue()); | ||||
|                     targetMemberRangeExt.setAwardsName(bdAwards.getAwardsName()); | ||||
|                     continue; | ||||
| //                    } | ||||
|                 } | ||||
|             } | ||||
|             break; | ||||
|  | @ -1268,8 +1312,9 @@ public class BonusSettleRangeHandle extends BonusSettleHandle { | |||
|     /** | ||||
|      * 计算极差收益,根据极差收益计算平级收益 | ||||
|      */ | ||||
|     List<CuMemberBonusRange> calculateRetailRangeBonus(Map<Long, CuMemberRetailRangeExt> memberRangeExtMap, Map<Long, CuMemberBonus> cuMemberBonusMap, Map<Integer, BdGrade> gradeMap, BonusConfigDTO bonusConfigDTO, | ||||
|                                                        Integer period, SaOrderWaresExt saOrderItems, SaOrderExt saOrderExt) { | ||||
|     List<CuMemberBonusRange> calculateRetailRangeBonus(Map<Long, CuMemberRetailRangeExt> memberRangeExtMap, Map<Long, CuMemberBonus> cuMemberBonusMap, | ||||
|                                                        Map<Integer, BdGrade> gradeMap, BonusConfigDTO bonusConfigDTO, Integer period, | ||||
|                                                        SaOrderWaresExt saOrderItems, SaOrderExt saOrderExt) { | ||||
|         List<CuMemberBonusRange> memberBonusRangeList = new ArrayList<>(); | ||||
|         // 用等级计算,按照一级级算 | ||||
|         CuMemberRetailRangeExt sourceMemberRangeExt = memberRangeExtMap.get(saOrderExt.getPkMember()); | ||||
|  | @ -1422,30 +1467,57 @@ public class BonusSettleRangeHandle extends BonusSettleHandle { | |||
|         return memberBonusRangeList; | ||||
|     } | ||||
| 
 | ||||
|     CuMemberBonusDetail calculateRetailAreaBonus(Map<String, CuMemberRetailRangeExt> countyRangeExtMap, SaOrder saOrder, | ||||
|     /** | ||||
|      * 计算区域奖 | ||||
|      * | ||||
|      * @param countyRangeExtMap | ||||
|      * @param saOrder | ||||
|      * @param bonusConfigDTO | ||||
|      * @param period | ||||
|      * @param memberRangeExtMap | ||||
|      * @param cuMemberBonusMap | ||||
|      * @return | ||||
|      */ | ||||
|     CuMemberBonusDetail calculateRetailAreaBonus(Map<String, CuMemberRetailRangeExt> countyRangeExtMap, | ||||
|                                                  BonusConfigDTO bonusConfigDTO, Integer period, Map<Long, CuMemberRetailRangeExt> memberRangeExtMap, | ||||
|                                                  Map<Long, CuMemberBonus> cuMemberBonusMap) { | ||||
|         CuMemberRetailRangeExt sourceRetailRangeExt = memberRangeExtMap.get(saOrder.getPkMember()); | ||||
|         CuMemberRetailRangeExt cuMemberRetailRangeExt = countyRangeExtMap.get(sourceRetailRangeExt.getSystemType() + "_" + saOrder.getRecCounty()); | ||||
|         if (cuMemberRetailRangeExt == null) { | ||||
|                                                  Map<Long, CuMemberBonus> cuMemberBonusMap, SaOrder saOrder) { | ||||
|         // 重消订单没有区域分红 | ||||
|         if (saOrder.getOrderType().equals(EOrderType.RETAIL_CONSUME.getValue())) { | ||||
|             return null; | ||||
|         } | ||||
|         // 区域分红根据商品盒数来,如果没有盒数,直接返回为空 | ||||
|         if (saOrder.getBoxNum() == 0) { | ||||
|             return null; | ||||
|         } | ||||
| 
 | ||||
|         CuMemberRetailRangeExt sourceRetailRangeExt = memberRangeExtMap.get(saOrder.getPkMember()); | ||||
|         // 获取对应区域会员 | ||||
|         CuMemberRetailRangeExt cuMemberRetailRangeExt = countyRangeExtMap.get(sourceRetailRangeExt.getSystemType() + "_" + saOrder.getRecCounty()); | ||||
|         if (null == cuMemberRetailRangeExt) { | ||||
|             return null; | ||||
|         } | ||||
|         // 获取区域会员结算数据 | ||||
|         if (memberRangeExtMap.containsKey(cuMemberRetailRangeExt.getPkMember())) { | ||||
|             cuMemberRetailRangeExt = memberRangeExtMap.get(cuMemberRetailRangeExt.getPkMember()); | ||||
|         } | ||||
|         if (ECategory.NORMAL.getValue() != cuMemberRetailRangeExt.getCategory() || | ||||
|                 EAccountStatus.STOP_INCOME.getValue() == cuMemberRetailRangeExt.getAccountStatus() || | ||||
|                 cuMemberRetailRangeExt.getEnableStatus() == EYesNo.NO.getIntValue()) { | ||||
| 
 | ||||
|         // 非正常用户 或者 停止收益 或 未激活,不能获取区域收益 | ||||
|         if (ECategory.NORMAL.getValue() != cuMemberRetailRangeExt.getCategory() | ||||
|                 || EAccountStatus.STOP_INCOME.getValue() == cuMemberRetailRangeExt.getAccountStatus() | ||||
|                 || cuMemberRetailRangeExt.getEnableStatus() == EYesNo.NO.getIntValue()) { | ||||
|             return null; | ||||
|         } | ||||
|         // 验证是否有奖金 | ||||
|         if (validatePkBonusItems(bonusConfigDTO, cuMemberRetailRangeExt.getPkSettleCountry(), EBonusItems.RETAIL_AREA_INCOME.getValue())) { | ||||
|             return null; | ||||
|         } | ||||
|         BigDecimal bonusRatio = BigDecimal.valueOf(0.4); | ||||
|         BigDecimal benefitIncome = ComputeUtil.computeBonusMultiply(saOrder.getOrderAchieve(), bonusRatio); | ||||
|         CuMemberBonusDetail cuMemberBonusDetail = packageBenefitIncome(bonusConfigDTO, period, cuMemberBonusMap, null, bonusRatio, benefitIncome, cuMemberRetailRangeExt, EBonusItems.RETAIL_AREA_INCOME.getValue(), BonusMsgConstants.RETAIL_AREA_INCOME); | ||||
|         cuMemberBonusDetail.setCalAchieve(saOrder.getOrderAchieve()); | ||||
| 
 | ||||
|         BigDecimal boxNumBig = new BigDecimal(saOrder.getBoxNum()); | ||||
|         // 处理区域收益(每盒2元) | ||||
|         BigDecimal benefitIncome = RetailProductConstants.AREA_BOX_BONUS.multiply(boxNumBig); | ||||
|         CuMemberBonusDetail cuMemberBonusDetail = packageBenefitIncome(bonusConfigDTO, period, cuMemberBonusMap, null, BigDecimal.ZERO, benefitIncome, | ||||
|                 cuMemberRetailRangeExt, EBonusItems.RETAIL_AREA_INCOME.getValue(), BonusMsgConstants.RETAIL_AREA_INCOME); | ||||
|         cuMemberBonusDetail.setCalAchieve(boxNumBig); | ||||
|         cuMemberBonusDetail.setPkOrder(saOrder.getPkId()); | ||||
|         String remark = String.format(BonusMsgConstants.RETAIL_AREA_INCOME, saOrder.getOrderCode(), | ||||
|                 memberRangeExtMap.get(saOrder.getPkMember()).getMemberCode() + memberRangeExtMap.get(saOrder.getPkMember()).getMemberName(), | ||||
|  | @ -1963,7 +2035,7 @@ public class BonusSettleRangeHandle extends BonusSettleHandle { | |||
|     } | ||||
| 
 | ||||
|     /** | ||||
|      * 奖金明细 报单服务费、分红、云代首购、云代复购、海豆收益 | ||||
|      * 奖金明细 | ||||
|      * | ||||
|      * @param saOrderExt    订单 | ||||
|      * @param cuMemberBonus 奖金主表 | ||||
|  |  | |||
|  | @ -214,7 +214,7 @@ public class BonusSettleServiceImpl implements IBonusSettleService { | |||
|                 // 订单下单处理(正向) | ||||
|                 // 会员奖金明细 | ||||
|                 List<CuMemberBonusDetail> cuMemberBonusDetailList = new ArrayList<>(); | ||||
|                 // 实时计算当月奖衔 | ||||
|                 // 实时计算秒结数据(业绩、盒数、等级、奖衔、日奖) | ||||
|                 List<CuMemberBonusRange> cuMemberBonusRangeList = bonusSettleRangeHandle.calculateCuMemberRetailRangeBonusBySecond(settleDate, saOrderExt, bonusConfigDTO, | ||||
|                         secondRangeTableName, beforePeriod, currentPeriod, cuMemberBonusMap, cuMemberBonusDetailList); | ||||
|                 saveCuMemberBonus(currentPeriod, settleDate, cuMemberBonusMap); | ||||
|  | @ -236,6 +236,7 @@ public class BonusSettleServiceImpl implements IBonusSettleService { | |||
|                     settleDate = DateUtils.parseDateToFormat(DateUtils.YYYY_MM_DD, DateUtils.beforeDate(1, ChronoUnit.DAYS)); | ||||
|                     currentPeriod = cuMemberSettlePeriodService.getCuMemberSettlePeriodByDate(settleDate).getPkId(); | ||||
|                 } | ||||
|                 // 实时计算撤单数据(业绩、盒数、等级、奖衔、日奖) | ||||
|                 bonusSettleRangeHandle.calculateCuMemberBackRetailIncome(saOrderExt, bonusConfigDTO, | ||||
|                         secondRangeTableName, beforePeriod, currentPeriod); | ||||
|                 // 处理收益 | ||||
|  |  | |||
|  | @ -683,7 +683,7 @@ public class CuMemberBonusServiceImpl extends ServiceImpl<CuMemberBonusMapper, C | |||
|     public void mergeBackMemberBonusIncome(Long pkOrder) { | ||||
|         baseMapper.mergeBackRangeBonusIncome(pkOrder, EBonusItems.RETAIL_RANGE_INCOME.getValue()); | ||||
|         baseMapper.mergeBackRangeBonusIncome(pkOrder, EBonusItems.RETAIL_SAME_LEVEL_INCOME.getValue()); | ||||
| //        baseMapper.mergeBackRangeBonusIncome(pkOrder, EBonusItems.RETAIL_AREA_INCOME.getValue()); | ||||
|         baseMapper.mergeBackRangeBonusIncome(pkOrder, EBonusItems.RETAIL_AREA_INCOME.getValue()); | ||||
|     } | ||||
| 
 | ||||
|     @Override | ||||
|  |  | |||
|  | @ -206,12 +206,12 @@ | |||
|         merge into ${rangeTableName} a | ||||
|             using ( | ||||
|                 select pk_id pk_member, pk_parent, pk_settle_grade, pk_awards | ||||
|                 from cu_member start with pk_id=#{pkMember} | ||||
|                 connect by prior pk_parent=pk_id | ||||
|                 from cu_member start with pk_id = #{pkMember} | ||||
|                 connect by prior pk_parent = pk_id | ||||
|             ) b | ||||
|             on (a.pk_member = b.pk_member) | ||||
|             when matched then | ||||
|                 update set a.pk_grade = b.pk_settle_grade,a.pk_awards = b.pk_awards | ||||
|                 update set a.pk_grade = b.pk_settle_grade, a.pk_awards = b.pk_awards | ||||
|     </update> | ||||
| 
 | ||||
|     <update id="mergeMemberRetailRegion"> | ||||
|  |  | |||
|  | @ -56,21 +56,22 @@ | |||
|     <insert id="batchInsertCuMemberBonusDetail"> | ||||
|         insert ALL | ||||
|         <foreach item="item" index="index" collection="cuMemberBonusDetailList" separator=" "> | ||||
|             into cu_member_bonus_detail(pk_bonus,pk_order,pk_bonus_items,income_status, | ||||
|             cal_type,cal_achieve,cal_value,pretax_income, | ||||
|             income_tax,real_income,remark, | ||||
|             income_ratio,income_dial_ratio,order_dial_ratio,pk_country,pk_creator) | ||||
|             values | ||||
|             ( | ||||
|             #{item.pkBonus},nvl(#{item.pkOrder,jdbcType=BIGINT},0),#{item.pkBonusItems},#{item.incomeStatus}, | ||||
|             #{item.calType},#{item.calAchieve,jdbcType=NUMERIC},#{item.calValue,jdbcType=NUMERIC},#{item.pretaxIncome,jdbcType=NUMERIC}, | ||||
|             #{item.incomeTax,jdbcType=NUMERIC},#{item.realIncome,jdbcType=NUMERIC}, | ||||
|             #{item.remark},#{item.incomeRatio,jdbcType=NUMERIC},#{item.incomeDialRatio,jdbcType=NUMERIC},#{item.orderDialRatio,jdbcType=NUMERIC}, | ||||
|             #{item.pkCountry},#{item.pkCreator} | ||||
|             ) | ||||
|             into cu_member_bonus_detail ( | ||||
|             pk_bonus, pk_order, pk_bonus_items, income_status, | ||||
|             cal_type, cal_achieve, cal_value, pretax_income, | ||||
|             income_tax, real_income, remark, | ||||
|             income_ratio, income_dial_ratio, order_dial_ratio, | ||||
|             pk_country, pk_creator) | ||||
|             values ( | ||||
|             #{item.pkBonus}, nvl(#{item.pkOrder, jdbcType=BIGINT},0), #{item.pkBonusItems}, #{item.incomeStatus}, | ||||
|             #{item.calType}, #{item.calAchieve, jdbcType=NUMERIC}, #{item.calValue, jdbcType=NUMERIC}, #{item.pretaxIncome, jdbcType=NUMERIC}, | ||||
|             #{item.incomeTax, jdbcType=NUMERIC}, #{item.realIncome, jdbcType=NUMERIC}, #{item.remark}, | ||||
|             #{item.incomeRatio, jdbcType=NUMERIC}, #{item.incomeDialRatio, jdbcType=NUMERIC}, #{item.orderDialRatio, jdbcType=NUMERIC}, | ||||
|             #{item.pkCountry},#{item.pkCreator}) | ||||
|         </foreach> | ||||
|         SELECT 1 FROM dual | ||||
|     </insert> | ||||
| 
 | ||||
|     <insert id="insertCuMemberBonusDetail"> | ||||
|         insert into cu_member_bonus_detail(pk_bonus, pk_order, pk_bonus_items, income_status, | ||||
|                                            cal_type, cal_achieve, cal_value, pretax_income, | ||||
|  |  | |||
|  | @ -74,36 +74,38 @@ | |||
|             and pk_country = #{pkCountry} | ||||
|         </if> | ||||
|     </update> | ||||
| 
 | ||||
|     <update id="mergeBackRangeBonusIncome"> | ||||
|         merge into cu_member_bonus a | ||||
|             using( | ||||
|                 select b.* from bd_bonus_items bt | ||||
|                                     inner join( | ||||
|                     select pk_bonus,pk_bonus_items,sum(pretax_income) pretax_income, | ||||
|                            sum(income_tax) income_tax,sum(real_income) real_income from | ||||
|                     select pk_bonus,pk_bonus_items, sum(pretax_income) pretax_income, | ||||
|                            sum(income_tax) income_tax, sum(real_income) real_income from | ||||
|                     <choose> | ||||
|                         <when test="bonusValue == 27"> cu_member_bonus_detail </when> | ||||
|                         <otherwise> cu_member_bonus_range </otherwise> | ||||
|                     </choose> | ||||
|                     where del_flag=0 and pk_order= #{pkOrder} | ||||
|                     group by pk_bonus,pk_bonus_items) b | ||||
|                                               on bt.pk_id=b.pk_bonus_items | ||||
|                 where bt.bonus_value=#{bonusValue}) b | ||||
|             on (a.pk_id=b.pk_bonus) | ||||
|                     group by pk_bonus, pk_bonus_items) b | ||||
|                                               on bt.pk_id = b.pk_bonus_items | ||||
|                 where bt.bonus_value = #{bonusValue}) b | ||||
|             on (a.pk_id = b.pk_bonus) | ||||
|             when matched then | ||||
|                 update set a.retail_real_subtotal=a.retail_real_subtotal-b.real_income, | ||||
|                 a.back_points=a.back_points-b.income_tax, | ||||
|                 a.real_income_total=a.real_income_total-b.real_income | ||||
|                 <if test="bonusValue == 25"> | ||||
|                     ,a.retail_range_income=a.retail_range_income-b.pretax_income | ||||
|                     ,a.retail_range_income = a.retail_range_income - b.pretax_income | ||||
|                 </if> | ||||
|                 <if test="bonusValue == 26"> | ||||
|                     ,a.retail_same_level_income=a.retail_same_level_income-b.pretax_income | ||||
|                     ,a.retail_same_level_income = a.retail_same_level_income - b.pretax_income | ||||
|                 </if> | ||||
|                 <if test="bonusValue == 27"> | ||||
|                     ,a.retail_area_income=a.retail_area_income-b.pretax_income | ||||
|                     ,a.retail_area_income = a.retail_area_income - b.pretax_income | ||||
|                 </if> | ||||
|     </update> | ||||
| 
 | ||||
|     <delete id="deleteCuMemberBonus"> | ||||
|         delete | ||||
|         from cu_member_bonus | ||||
|  |  | |||
|  | @ -48,7 +48,6 @@ | |||
|         <result column="SETTLE_COUNTRY" property="settleCountry"/> | ||||
|         <result column="PERIOD" property="period"/> | ||||
|         <result column="OUT_EXCHANGE_RATE" property="outExchangeRate"/> | ||||
| 
 | ||||
|         <result column="service_code" property="serviceCode"/> | ||||
|         <result column="pk_vertex" property="pkVertex"/> | ||||
|         <result column="nick_name" property="nickName"/> | ||||
|  | @ -57,18 +56,20 @@ | |||
|     <insert id="batchInsertCuMemberBonusRange"> | ||||
|         insert ALL | ||||
|         <foreach item="item" index="index" collection="cuMemberBonusRangeList" separator=" "> | ||||
|             into cu_member_bonus_range(pk_bonus,pk_order,pk_order_items,pk_bonus_items,income_status, | ||||
|             cal_type,cal_achieve,cal_value,pk_range,pk_before_range,pretax_income, | ||||
|             income_tax,real_income,remark, | ||||
|             income_ratio,income_dial_ratio,order_dial_ratio,pk_country,pk_creator) | ||||
|             values | ||||
|             ( | ||||
|             #{item.pkBonus},#{item.pkOrder},#{item.pkOrderItems},#{item.pkBonusItems},#{item.incomeStatus}, | ||||
|             #{item.calType},#{item.calAchieve},#{item.calValue},#{item.pkRange},#{item.pkBeforeRange}, | ||||
|             #{item.pretaxIncome},#{item.incomeTax},#{item.realIncome}, | ||||
|             #{item.remark},#{item.incomeRatio},#{item.incomeDialRatio},#{item.orderDialRatio}, | ||||
|             #{item.pkCountry},#{item.pkCreator} | ||||
|             ) | ||||
|             into cu_member_bonus_range ( | ||||
|             pk_bonus, pk_order, pk_order_items, pk_bonus_items, | ||||
|             income_status, cal_type, cal_achieve, cal_value, | ||||
|             pk_range, pk_before_range, pretax_income, | ||||
|             income_tax, real_income, remark, | ||||
|             income_ratio, income_dial_ratio, order_dial_ratio, | ||||
|             pk_country, pk_creator) | ||||
|             values ( | ||||
|             #{item.pkBonus}, #{item.pkOrder}, #{item.pkOrderItems}, #{item.pkBonusItems}, | ||||
|             #{item.incomeStatus}, #{item.calType}, #{item.calAchieve}, #{item.calValue}, | ||||
|             #{item.pkRange}, #{item.pkBeforeRange}, #{item.pretaxIncome}, | ||||
|             #{item.incomeTax}, #{item.realIncome}, #{item.remark}, | ||||
|             #{item.incomeRatio}, #{item.incomeDialRatio}, #{item.orderDialRatio}, | ||||
|             #{item.pkCountry}, #{item.pkCreator}) | ||||
|         </foreach> | ||||
|         SELECT 1 FROM dual | ||||
|     </insert> | ||||
|  |  | |||
|  | @ -167,13 +167,13 @@ | |||
|                       and ca.pk_member in | ||||
|                           (select pk_id | ||||
|                            from cu_member start | ||||
|                     with pk_id=#{pkMember} | ||||
|                     connect by prior pk_parent=pk_id) | ||||
|                     with pk_id = #{pkMember} | ||||
|                     connect by prior pk_parent = pk_id) | ||||
|                 group by ca.pk_member) cx | ||||
|             on cw.pk_id = cx.pk_id ) b | ||||
|         on (a.pk_member=b.pk_member) | ||||
|         on (a.pk_member = b.pk_member) | ||||
|         when matched then | ||||
|         update set a.pk_awards=b.old_level | ||||
|         update set a.pk_awards = b.old_level | ||||
|     </update> | ||||
| 
 | ||||
|     <!-- 删除自动升级的奖衔升级记录 --> | ||||
|  |  | |||
|  | @ -156,7 +156,7 @@ | |||
|         nvl(st.wares_quantity,0) wares_quantity | ||||
|         from sa_order so | ||||
|         left join sa_order_wares st | ||||
|         on so.pk_id = st.pk_order and st.wares_price >0 | ||||
|         on so.pk_id = st.pk_order and st.wares_price > 0 | ||||
|         left join bd_wares bw | ||||
|         on bw.pk_id = st.pk_wares and bw.del_flag = 0 | ||||
|         where so.order_status = 1 | ||||
|  | @ -168,7 +168,7 @@ | |||
|         ) od | ||||
|         left join bd_currency bc | ||||
|         on od.pk_rate = bc.pk_id | ||||
|         order by pay_time,wares_price desc | ||||
|         order by pay_time, wares_price desc | ||||
|     </select> | ||||
| 
 | ||||
|     <select id="querySaOrderByTime" resultMap="saOrderExtResultMap"> | ||||
|  |  | |||
|  | @ -5,14 +5,10 @@ import cn.hutool.core.collection.CollUtil; | |||
| import cn.hutool.core.util.DesensitizedUtil; | ||||
| import cn.hutool.json.JSONUtil; | ||||
| import com.hzs.common.core.annotation.RepeatSubmitSimple; | ||||
| import com.hzs.common.core.config.HzsConfig; | ||||
| import com.hzs.common.core.constant.CountryConstants; | ||||
| import com.hzs.common.core.constant.MemberFieldConstants; | ||||
| import com.hzs.common.core.constant.SysConstants; | ||||
| import com.hzs.common.core.constant.msg.FinanceMsgConstants; | ||||
| import com.hzs.common.core.enums.*; | ||||
| import com.hzs.common.core.utils.CommonUtil; | ||||
| import com.hzs.common.core.utils.DateUtils; | ||||
| import com.hzs.common.core.utils.StringUtils; | ||||
| import com.hzs.common.core.utils.reflect.ReflectUtils; | ||||
| import com.hzs.common.core.web.controller.BaseController; | ||||
|  | @ -39,9 +35,7 @@ import com.hzs.member.base.vo.UpPolicyCurrencyVO; | |||
| import com.hzs.member.detail.service.ICuMemberServiceLogService; | ||||
| import com.hzs.system.base.dto.CurrencyDTO; | ||||
| import com.hzs.system.config.IAccountServiceApi; | ||||
| import com.hzs.system.config.IGradeServiceApi; | ||||
| import com.hzs.system.config.ITradeConfigServiceApi; | ||||
| import com.hzs.system.config.dto.GradeDTO; | ||||
| import org.apache.dubbo.config.annotation.DubboReference; | ||||
| import org.springframework.beans.factory.annotation.Autowired; | ||||
| import org.springframework.util.Assert; | ||||
|  | @ -49,16 +43,12 @@ import org.springframework.web.bind.annotation.*; | |||
| 
 | ||||
| import java.math.BigDecimal; | ||||
| import java.util.Arrays; | ||||
| import java.util.Date; | ||||
| import java.util.List; | ||||
| import java.util.Map; | ||||
| import java.util.stream.Collectors; | ||||
| 
 | ||||
| /** | ||||
|  * 会员提现表 前端控制器 | ||||
|  * | ||||
|  * @author hzs | ||||
|  * @since 2022-09-06 | ||||
|  */ | ||||
| @RestController | ||||
| @RequestMapping("/api/transfer") | ||||
|  | @ -85,9 +75,6 @@ public class ApiCuMemberTransferController extends BaseController { | |||
|     @DubboReference | ||||
|     IAccountServiceApi accountServiceApi; | ||||
| 
 | ||||
|     @DubboReference | ||||
|     IGradeServiceApi gradeServiceApi; | ||||
| 
 | ||||
|     @DubboReference | ||||
|     ITradeConfigServiceApi tradeConfigServiceApi; | ||||
| 
 | ||||
|  | @ -99,7 +86,7 @@ public class ApiCuMemberTransferController extends BaseController { | |||
|      */ | ||||
|     @GetMapping("/chinese-name") | ||||
|     public AjaxResult chineseDesensitization(String memberCode) { | ||||
|         if(StringUtils.isEmpty(memberCode)){ | ||||
|         if (StringUtils.isEmpty(memberCode)) { | ||||
|             return AjaxResult.error(TransactionUtils.getContent(FinanceMsgConstants.PARAMETER_NOT_EMPTY)); | ||||
|         } | ||||
|         CuMember member = cuMemberService.getMemberByCode(memberCode); | ||||
|  |  | |||
|  | @ -2,7 +2,7 @@ package com.hzs.member.sms.service.impl; | |||
| 
 | ||||
| import cn.hutool.core.date.DatePattern; | ||||
| import cn.hutool.core.date.DateUtil; | ||||
| import com.hzs.common.core.config.HzsConfig; | ||||
| import com.hzs.common.core.config.BdConfig; | ||||
| import com.hzs.common.core.constant.CacheConstants; | ||||
| import com.hzs.common.core.domain.R; | ||||
| import com.hzs.common.core.enums.EAliSmsTemplate; | ||||
|  | @ -20,11 +20,7 @@ import java.util.Date; | |||
| import java.util.concurrent.TimeUnit; | ||||
| 
 | ||||
| /** | ||||
|  * @Description: 阿里短信发送服务 | ||||
|  * @Author: jiang chao | ||||
|  * @Time: 2024/12/19 16:30 | ||||
|  * @Classname: ApiAliSmsServiceImpl | ||||
|  * @PackageName: com.hzs.member.sms.service.impl | ||||
|  * 阿里短信发送服务 | ||||
|  */ | ||||
| @Slf4j | ||||
| @Service | ||||
|  | @ -89,7 +85,7 @@ public class ApiAliSmsServiceImpl implements IApiAliSmsService { | |||
| 
 | ||||
|     @Override | ||||
|     public String checkCode(String phone, String smsCode, String checkKey) { | ||||
|         if (EEnv.TEST.getValue().equals(HzsConfig.getEnv()) && "ASDF".equals(smsCode)) { | ||||
|         if (EEnv.TEST.getValue().equals(BdConfig.getEnv()) && "ASDF".equals(smsCode)) { | ||||
|             // 测试环境暂时不发放短信 | ||||
|             return null; | ||||
|         } | ||||
|  |  | |||
|  | @ -1,23 +1,17 @@ | |||
| package com.hzs.member.sms.service.impl; | ||||
| 
 | ||||
| import com.hzs.common.core.config.HzsConfig; | ||||
| import com.hzs.common.core.config.BdConfig; | ||||
| import com.hzs.common.core.constant.msg.SystemMsgConstants; | ||||
| import com.hzs.common.core.enums.EEnv; | ||||
| import com.hzs.common.core.service.RedisService; | ||||
| import com.hzs.common.util.TransactionUtils; | ||||
| import com.hzs.member.sms.service.IApiSmsService; | ||||
| import com.hzs.third.sms.ISmsServiceApi; | ||||
| import lombok.extern.slf4j.Slf4j; | ||||
| import org.apache.dubbo.config.annotation.DubboReference; | ||||
| import org.springframework.beans.factory.annotation.Autowired; | ||||
| import org.springframework.stereotype.Service; | ||||
| 
 | ||||
| /** | ||||
|  * @Description: 短信处理服务 | ||||
|  * @Author: jiang chao | ||||
|  * @Time: 2023/3/8 15:56 | ||||
|  * @Classname: ApiSmsServiceImpjl | ||||
|  * @PackageName: com.hzs.member.sms.service.impl | ||||
|  * 短信处理服务 | ||||
|  */ | ||||
| @Slf4j | ||||
| @Service | ||||
|  | @ -28,7 +22,7 @@ public class ApiSmsServiceImpl implements IApiSmsService { | |||
| 
 | ||||
|     @Override | ||||
|     public String checkSms(String cacheKey, String code) { | ||||
|         if (EEnv.TEST.getValue().equals(HzsConfig.getEnv()) && "ASDF".equals(code)) { | ||||
|         if (EEnv.TEST.getValue().equals(BdConfig.getEnv()) && "ASDF".equals(code)) { | ||||
|             // 测试环境暂时不发放短信 | ||||
|             return null; | ||||
|         } | ||||
|  |  | |||
|  | @ -5,19 +5,16 @@ import cn.hutool.core.collection.CollectionUtil; | |||
| import cn.hutool.core.lang.tree.Tree; | ||||
| import cn.hutool.core.lang.tree.TreeNodeConfig; | ||||
| import cn.hutool.core.lang.tree.TreeUtil; | ||||
| import cn.hutool.json.JSONUtil; | ||||
| import com.baomidou.mybatisplus.core.toolkit.Wrappers; | ||||
| import com.hzs.bonus.settle.IMemberSettleBonusApi; | ||||
| import com.hzs.common.core.annotation.RepeatSubmitSimple; | ||||
| import com.hzs.common.core.config.HzsConfig; | ||||
| import com.hzs.common.core.constant.SysConstants; | ||||
| import com.hzs.common.core.config.BdConfig; | ||||
| import com.hzs.common.core.constant.msg.AreaConstants; | ||||
| import com.hzs.common.core.domain.R; | ||||
| import com.hzs.common.core.enums.*; | ||||
| import com.hzs.common.core.utils.BoxProductUtil; | ||||
| import com.hzs.common.core.web.controller.BaseController; | ||||
| import com.hzs.common.core.web.domain.AjaxResult; | ||||
| import com.hzs.common.core.web.page.TableDataInfo; | ||||
| import com.hzs.common.domain.member.bonus.CuMemberRetail; | ||||
| import com.hzs.common.domain.member.ext.CuMemberExt; | ||||
| import com.hzs.common.domain.retail.member.CuMemberRetailRegion; | ||||
| import com.hzs.common.domain.retail.member.ext.CuMemberRetailRegionExt; | ||||
|  | @ -33,6 +30,7 @@ import com.hzs.retail.member.vo.RecommendListVO; | |||
| import com.hzs.retail.member.vo.RetailMemberInfoVO; | ||||
| import com.hzs.retail.member.vo.RetailMemberRegionVO; | ||||
| import com.hzs.system.base.IAreaServiceApi; | ||||
| import lombok.extern.slf4j.Slf4j; | ||||
| import org.apache.dubbo.config.annotation.DubboReference; | ||||
| import org.springframework.beans.factory.annotation.Autowired; | ||||
| import org.springframework.web.bind.annotation.*; | ||||
|  | @ -47,6 +45,7 @@ import java.util.List; | |||
|  */ | ||||
| @RestController | ||||
| @RequestMapping("/api/retail-member") | ||||
| @Slf4j | ||||
| public class RetailMemberController extends BaseController { | ||||
| 
 | ||||
|     @Autowired | ||||
|  | @ -63,6 +62,8 @@ public class RetailMemberController extends BaseController { | |||
|     @DubboReference | ||||
|     IMemberSettleBonusApi iMemberSettleBonusApi; | ||||
| 
 | ||||
|     // 2025年6月11日 判断可选择收益区域的伞下+自身业绩阈值 (30万) | ||||
|     private static final BigDecimal REGIONAL_PERFORMANCE_THRESHOLD = new BigDecimal("300000"); | ||||
|     /** | ||||
|      * 获取登录会员信息 | ||||
|      * | ||||
|  | @ -86,9 +87,12 @@ public class RetailMemberController extends BaseController { | |||
|     public AjaxResult getRegion() { | ||||
|         Long userId = SecurityUtils.getUserId(); | ||||
|         Integer systemType = SecurityUtils.getSystemType(); | ||||
|         Integer pkCountry = SecurityUtils.getPkCountry(); | ||||
| 
 | ||||
|         CuMemberRetailRegionExt cuMemberRetailRegionExt = iCuMemberRetailRegionService.getRegionByMember(userId, EGrade.S_VIP.getValue(), systemType); | ||||
|         log.info("cuMemberRetailRegionExt -> {}", JSONUtil.toJsonStr(cuMemberRetailRegionExt)); | ||||
|         if (null != cuMemberRetailRegionExt) { | ||||
|             // 已自选区域或者已后台指定 | ||||
|             if (null != cuMemberRetailRegionExt.getPkId()) { | ||||
|                 // 达到条件,也选择区域,需要进行显示 | ||||
|                 return AjaxResult.success(RetailMemberRegionVO.builder() | ||||
|  | @ -101,14 +105,28 @@ public class RetailMemberController extends BaseController { | |||
|                         .countyVal(cuMemberRetailRegionExt.getCountyVal()) | ||||
|                         .build()); | ||||
|             } | ||||
|             // 未自选或未后台指定 验证是否激活 未激活不允许选 | ||||
|             // getIsRegion - 后台业务特殊标记,非后台办理过的为1, 后台办理过的为0,当为0时, 不设定任何条件,直接可选收益区域 | ||||
|             if (EYesNo.YES.getIntValue() == cuMemberRetailRegionExt.getIsRegion()) { | ||||
|                 // 2024.12.30 添加需求,指定会员可以进行区域选择 | ||||
|                 return AjaxResult.success(RetailMemberRegionVO.builder() | ||||
|                         .regionStatus(EYesNo.YES.getIntValue()) | ||||
|                         .build()); | ||||
|             } | ||||
|             if (null == cuMemberRetailRegionExt.getPkId()) { | ||||
|                 // 达到条件,但是没有选择区域,需要弹窗选择区域 | ||||
|             if(EYesNo.YES.getIntValue() == cuMemberRetailRegionExt.getIsActivate()){ | ||||
|                 CuMemberRetailAchieveVO retailAchieve = iCuMemberRetailAchieveService.selectMemberSumAchieve(userId, pkCountry, systemType); | ||||
|                 log.info("retailAchieve : {}", JSONUtil.toJsonStr(retailAchieve)); | ||||
|                 if(retailAchieve.getArealPv().compareTo(REGIONAL_PERFORMANCE_THRESHOLD) >= 0){ | ||||
|                     return AjaxResult.success(RetailMemberRegionVO.builder() | ||||
|                             .regionStatus(EYesNo.YES.getIntValue()) | ||||
|                             .build()); | ||||
|                 } | ||||
|             } | ||||
|             // 达到条件,但是没有选择区域,需要弹窗选择区域 | ||||
|             // 验证伞下业绩+自己是否累计30W | ||||
| 
 | ||||
|             /* | ||||
|                 2025年6月11日 取消其他验证 | ||||
|                 // 2025.01.11 调整需求,当前会员必须有效(至少下过一单) | ||||
|                 if (iCuMemberRetailRegionService.getOrderCount(userId, systemType, BoxProductUtil.getBoxProductListBySystemType(systemType)) == 0) { | ||||
|                     return AjaxResult.success(RetailMemberRegionVO.builder() | ||||
|  | @ -125,18 +143,7 @@ public class RetailMemberController extends BaseController { | |||
|                                 .build()); | ||||
|                     } | ||||
|                 } | ||||
|             } else { | ||||
|                 // 达到条件,也选择区域,需要进行显示并且可以修改 | ||||
|                 return AjaxResult.success(RetailMemberRegionVO.builder() | ||||
|                         .regionStatus(EYesNo.YES.getIntValue()) | ||||
|                         .province(cuMemberRetailRegionExt.getProvince()) | ||||
|                         .provinceVal(cuMemberRetailRegionExt.getProvinceVal()) | ||||
|                         .city(cuMemberRetailRegionExt.getCity()) | ||||
|                         .cityVal(cuMemberRetailRegionExt.getCityVal()) | ||||
|                         .county(cuMemberRetailRegionExt.getCounty()) | ||||
|                         .countyVal(cuMemberRetailRegionExt.getCountyVal()) | ||||
|                         .build()); | ||||
|             } | ||||
|              */ | ||||
|         } | ||||
|         // 没达到条件,不需要显示区域 | ||||
|         return AjaxResult.success(RetailMemberRegionVO.builder() | ||||
|  | @ -157,21 +164,24 @@ public class RetailMemberController extends BaseController { | |||
|         Integer systemType = SecurityUtils.getSystemType(); | ||||
|         Integer pkCountry = SecurityUtils.getPkCountry(); | ||||
| 
 | ||||
|         CuMemberRetailRegionExt cuMemberRetailRegionExt = iCuMemberRetailRegionService.getRegionByMember(userId, EGrade.S_VIP.getValue(), systemType); | ||||
|         if (null == cuMemberRetailRegionExt) { | ||||
|             return AjaxResult.error("还未达到选择收益区域条件"); | ||||
|         } else { | ||||
|             if (EYesNo.NO.getIntValue() == cuMemberRetailRegionExt.getIsRegion()) { | ||||
|                 // 2024.12.30 添加需求,会员可以指定可以进行区域选择,未指定权限才需要进行判断 | ||||
|         boolean canSet = false; | ||||
| 
 | ||||
|                 // 达到条件,但是没有选择区域,需要弹窗选择区域 | ||||
|         CuMemberRetailRegionExt cuMemberRetailRegionExt = iCuMemberRetailRegionService.getRegionByMember(userId, EGrade.S_VIP.getValue(), systemType); | ||||
|         log.info("cuMemberRetailRegionExt -> {}", JSONUtil.toJsonStr(cuMemberRetailRegionExt)); | ||||
|         if (null != cuMemberRetailRegionExt) { | ||||
|             if (EYesNo.YES.getIntValue() == cuMemberRetailRegionExt.getIsRegion()) { | ||||
|                 canSet = true; | ||||
|             } | ||||
|             if(EYesNo.YES.getIntValue() == cuMemberRetailRegionExt.getIsActivate()){ | ||||
|                 CuMemberRetailAchieveVO retailAchieve = iCuMemberRetailAchieveService.selectMemberSumAchieve(userId, pkCountry, systemType); | ||||
|                 // TODO 2025.06.09 新需求,选择区域判断等级达到合伙人,血缘累计业绩达到30万,可以选择 | ||||
|                 if (retailAchieve.getSmallAreaPv().add(retailAchieve.getBigArealPv()).compareTo(SysConstants.TOTAL_AREA_PV) < 0) { | ||||
|                     return AjaxResult.error("还未达到选择收益区域条件"); | ||||
|                 if(retailAchieve.getArealPv().compareTo(REGIONAL_PERFORMANCE_THRESHOLD) >= 0){ | ||||
|                     canSet = true; | ||||
|                 } | ||||
|             } | ||||
|         } | ||||
|         if(!canSet){ | ||||
|             return AjaxResult.error("还未达到选择收益区域条件"); | ||||
|         } | ||||
| 
 | ||||
|         if (param.getCounty().equals(0) || param.getCity().equals(0)) { | ||||
|             // 区为0 或 市为0,没有选择区或者没有选择市 | ||||
|  | @ -248,7 +258,7 @@ public class RetailMemberController extends BaseController { | |||
|      */ | ||||
|     @GetMapping("/region-tree") | ||||
|     public AjaxResult regionTree() { | ||||
|         if (EEnv.TEST.getValue().equals(HzsConfig.getEnv()) && SecurityUtils.getUserId().equals(615423L)) { | ||||
|         if (EEnv.TEST.getValue().equals(BdConfig.getEnv()) && SecurityUtils.getUserId().equals(615423L)) { | ||||
|             // 测试环境,指定账号,返回收益区域为空 | ||||
|             return AjaxResult.success(); | ||||
|         } | ||||
|  |  | |||
|  | @ -159,8 +159,8 @@ public interface CuMemberRetailRangeMapper extends BaseMapper<CuMemberRetailRang | |||
|     CuMemberRetailAchieveVO selectMemberOrderSumAchieveByPkMember(CuMemberRetailAchieveVO cuMemberAchieveVO); | ||||
| 
 | ||||
|     /** | ||||
|      * 查询会员直推业绩(累计) | ||||
|      * | ||||
|      * 查询会员直推业绩(日结+秒结) | ||||
|      *  orderType in (41,42,43,44) | ||||
|      * @param cuMemberAchieveVO 入参 | ||||
|      * @return List<CuMemberRetailAchieveVO> | ||||
|      */ | ||||
|  | @ -199,4 +199,5 @@ public interface CuMemberRetailRangeMapper extends BaseMapper<CuMemberRetailRang | |||
|      */ | ||||
|     List<CuMemberRetailAchieveVO> selectMemberSmallBoxList(CuMemberRetailAchieveVO param); | ||||
| 
 | ||||
|     List<Long> selectSubMemberIdByRootMember(@Param("pkMember") Long pkMember, @Param("systemType") Integer systemType); | ||||
| } | ||||
|  |  | |||
|  | @ -258,7 +258,13 @@ public class CuMemberRetailAchieveServiceImpl extends ServiceImpl<CuMemberRetail | |||
|         CuMemberRetailAchieveVO maxAchieveVO = memberAchieveList.stream().max(Comparator.comparing(CuMemberRetailAchieveVO::getArealPv)).get(); | ||||
|         //查询小区业绩 | ||||
|         BigDecimal smallAreaPv = memberAchieveList.stream().filter(achieveVO -> !achieveVO.getPkMember().equals(maxAchieveVO.getPkMember())).map(vo -> null == vo.getArealPv() ? BigDecimal.ZERO : vo.getArealPv()).reduce(BigDecimal.ZERO, BigDecimal::add); | ||||
|         return CuMemberRetailAchieveVO.builder().smallAreaPv(getBigDecimal(smallAreaPv, rate)).pkBigMember(maxAchieveVO.getPkMember()).bigArealPv(getBigDecimal(maxAchieveVO.getArealPv(), rate)).build(); | ||||
| //        return CuMemberRetailAchieveVO.builder().smallAreaPv(getBigDecimal(smallAreaPv, rate)).pkBigMember(maxAchieveVO.getPkMember()).bigArealPv(getBigDecimal(maxAchieveVO.getArealPv(), rate)).build(); | ||||
|         return CuMemberRetailAchieveVO.builder() | ||||
|                 .smallAreaPv(smallAreaPv) | ||||
|                 .pkBigMember(maxAchieveVO.getPkMember()) | ||||
|                 .bigArealPv(maxAchieveVO.getArealPv()) | ||||
|                 .arealPv(maxAchieveVO.getArealPv()) | ||||
|                 .build(); | ||||
|     } | ||||
| 
 | ||||
| 
 | ||||
|  | @ -295,6 +301,11 @@ public class CuMemberRetailAchieveServiceImpl extends ServiceImpl<CuMemberRetail | |||
|         int period = iCuMemberSettlePeriodService.getCuMemberSettlePeriodByDate(localDate).getPkId(); | ||||
|         return TableNameConstants.CU_MEMBER_RETAIL_RANGE + period; | ||||
|     } | ||||
|     private String getDayTableName() { | ||||
|         String localDate = LocalDate.now().format(DateTimeFormatter.ofPattern("yyyy-MM-dd")); | ||||
|         int period = iCuMemberSettlePeriodService.getCuMemberSettlePeriodByDate(localDate).getPkId(); | ||||
|         return TableNameConstants.CU_MEMBER_RETAIL_S + period; | ||||
|     } | ||||
| 
 | ||||
| 
 | ||||
|     /** | ||||
|  | @ -375,23 +386,26 @@ public class CuMemberRetailAchieveServiceImpl extends ServiceImpl<CuMemberRetail | |||
|     public CuMemberRetailAchieveVO selectMemberSumAchieve(Long pkMember, Integer pkCountry, Integer systemType) { | ||||
|         //查询会员昨日业绩 | ||||
|         String memberRetailTable = getTableName(); | ||||
|         String memberSecondTable = getDayTableName(); | ||||
|         //查询直推会员 | ||||
|         List<Long> pkMemberList = baseMapper.selectDirectPushByPkMember(pkMember, systemType); | ||||
| //        List<Long> pkMemberList = baseMapper.selectDirectPushByPkMember(pkMember, systemType); | ||||
|         // 2025年6月11日 取伞下 + 自己的ID | ||||
|         List<Long> pkMemberList = baseMapper.selectSubMemberIdByRootMember(pkMember, systemType); | ||||
|         //根据国家查汇率 | ||||
|         BigDecimal rate = iCuMemberBaseService.getCurrency(pkCountry).getInExchangeRate(); | ||||
|         //查询自己业绩 | ||||
|         List<CuMemberRetailAchieveVO> memberSelfAchieveList = new ArrayList<>(); | ||||
| 
 | ||||
|         //会员业绩 | ||||
|         CuMemberRetailAchieveVO memberAchieveVO = CuMemberRetailAchieveVO.builder().memberRetailTable(memberRetailTable).pkMember(pkMember).systemType(systemType).build(); | ||||
|         CuMemberRetailAchieveVO orderAchieveVO = baseMapper.selectMemberOrderSumAchieveByPkMember(memberAchieveVO); | ||||
|         if (null != orderAchieveVO && orderAchieveVO.getArealPv().compareTo(BigDecimal.ZERO) > 0) { | ||||
|             orderAchieveVO.setPkMember(pkMember); | ||||
|             memberSelfAchieveList.add(orderAchieveVO); | ||||
|         } | ||||
| //        CuMemberRetailAchieveVO memberAchieveVO = CuMemberRetailAchieveVO.builder().memberRetailTable(memberRetailTable).pkMember(pkMember).systemType(systemType).build(); | ||||
| //        CuMemberRetailAchieveVO orderAchieveVO = baseMapper.selectMemberOrderSumAchieveByPkMember(memberAchieveVO); | ||||
| //        if (null != orderAchieveVO && orderAchieveVO.getArealPv().compareTo(BigDecimal.ZERO) > 0) { | ||||
| //            orderAchieveVO.setPkMember(pkMember); | ||||
| //            memberSelfAchieveList.add(orderAchieveVO); | ||||
| //        } | ||||
|         //查询伞下业绩 | ||||
|         if (CollUtil.isNotEmpty(pkMemberList)) { | ||||
|             List<CuMemberRetailAchieveVO> memberPushAchieveList = getMemberPushSumAchieve(pkMemberList, memberRetailTable, systemType); | ||||
|             List<CuMemberRetailAchieveVO> memberPushAchieveList = getMemberPushSumAchieve(pkMemberList, memberRetailTable, memberSecondTable, systemType); | ||||
|             if (CollUtil.isNotEmpty(memberPushAchieveList)) { | ||||
|                 memberSelfAchieveList.addAll(memberPushAchieveList); | ||||
|             } | ||||
|  | @ -399,7 +413,7 @@ public class CuMemberRetailAchieveServiceImpl extends ServiceImpl<CuMemberRetail | |||
|         if (CollUtil.isEmpty(memberSelfAchieveList)) { | ||||
|             return CuMemberRetailAchieveVO.builder().smallAreaPv(BigDecimal.ZERO).bigArealPv(BigDecimal.ZERO).build(); | ||||
|         } | ||||
|         return getMemberBigAndSmallAchieve(memberSelfAchieveList, rate); | ||||
|             return getMemberBigAndSmallAchieve(memberSelfAchieveList, rate); | ||||
|     } | ||||
| 
 | ||||
| 
 | ||||
|  | @ -409,8 +423,11 @@ public class CuMemberRetailAchieveServiceImpl extends ServiceImpl<CuMemberRetail | |||
|      * @param pkMemberList 直推会员ID | ||||
|      * @return CuMemberAchieveVO | ||||
|      */ | ||||
|     private List<CuMemberRetailAchieveVO> getMemberPushSumAchieve(List<Long> pkMemberList, String memberRangeTable, Integer systemType) { | ||||
|         CuMemberRetailAchieveVO memberAchieveVO = CuMemberRetailAchieveVO.builder().memberRetailTable(memberRangeTable).pkMemberList(pkMemberList).systemType(systemType).build(); | ||||
|     private List<CuMemberRetailAchieveVO> getMemberPushSumAchieve(List<Long> pkMemberList, String memberRangeTable,String memberSecondTable, Integer systemType) { | ||||
|         CuMemberRetailAchieveVO memberAchieveVO = CuMemberRetailAchieveVO.builder() | ||||
|                 .memberRetailTable(memberRangeTable) | ||||
|                 .memberRetailSTable(memberSecondTable) | ||||
|                 .pkMemberList(pkMemberList).systemType(systemType).build(); | ||||
|         return baseMapper.selectMemberSumAchieve(memberAchieveVO); | ||||
|     } | ||||
| 
 | ||||
|  |  | |||
|  | @ -3,12 +3,10 @@ package com.hzs.retail.member.service.impl; | |||
| import cn.hutool.core.collection.CollectionUtil; | ||||
| import com.baomidou.mybatisplus.core.toolkit.Wrappers; | ||||
| import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; | ||||
| import com.hzs.common.core.config.HzsConfig; | ||||
| import com.hzs.common.core.constant.*; | ||||
| import com.hzs.common.core.enums.*; | ||||
| import com.hzs.common.core.exception.ServiceException; | ||||
| import com.hzs.common.core.service.RedisService; | ||||
| import com.hzs.common.core.utils.DateUtils; | ||||
| import com.hzs.common.domain.retail.member.CuMemberRetailRegion; | ||||
| import com.hzs.common.domain.retail.member.ext.CuMemberRetailRegionExt; | ||||
| import com.hzs.common.domain.system.base.BdArea; | ||||
|  | @ -16,14 +14,12 @@ import com.hzs.retail.member.mapper.CuMemberRetailRegionMapper; | |||
| import com.hzs.retail.member.param.RetailMemberRegionParam; | ||||
| import com.hzs.retail.member.service.ICuMemberRetailAchieveService; | ||||
| import com.hzs.retail.member.service.ICuMemberRetailRegionService; | ||||
| import com.hzs.retail.member.vo.CuMemberRetailAchieveVO; | ||||
| import com.hzs.retail.member.vo.UnboundAreaVO; | ||||
| import lombok.extern.slf4j.Slf4j; | ||||
| import org.springframework.beans.factory.annotation.Autowired; | ||||
| import org.springframework.stereotype.Service; | ||||
| import org.springframework.transaction.annotation.Transactional; | ||||
| 
 | ||||
| import java.math.BigDecimal; | ||||
| import java.util.Date; | ||||
| import java.util.List; | ||||
| 
 | ||||
|  |  | |||
|  | @ -461,7 +461,7 @@ | |||
|     </select> | ||||
| 
 | ||||
| 
 | ||||
|     <sql id="selectSmallAreaSumAchieve"> | ||||
|     <sql id="selectSmallAreaSumAchieveBak"> | ||||
|         <foreach collection="pkMemberList" item="pkMember" separator="union all"> | ||||
|             SELECT SUM(t1.arealPv) arealPv ,#{pkMember} pkMember | ||||
|             FROM ( | ||||
|  | @ -492,6 +492,23 @@ | |||
|             AND t0.category = 0)) t1 | ||||
|         </foreach> | ||||
|     </sql> | ||||
|     <sql id="selectSmallAreaSumAchieve"> | ||||
|         <foreach collection="pkMemberList" item="pkMember" separator="union all"> | ||||
|             SELECT SUM(t1.arealPv) arealPv ,#{pkMember} pkMember | ||||
|             FROM ( | ||||
|             SELECT NVL(mr.CONSUME_PV + mr.TEAM_CONSUME_PV,0) arealPv | ||||
|             FROM ${memberRetailTable} mr | ||||
|             WHERE mr.category = 0 | ||||
|             AND mr.pk_member = #{pkMember} | ||||
|             UNION ALL | ||||
|             SELECT | ||||
|             NVL( mrs.NEW_CONSUME_PV + mrs.TEAM_NEW_PV, 0 ) arealPv | ||||
|             FROM | ||||
|             ${memberRetailSTable} mrs | ||||
|             WHERE mrs.pk_member = #{pkMember} | ||||
|             ) t1 | ||||
|         </foreach> | ||||
|     </sql> | ||||
| 
 | ||||
| 
 | ||||
|     <select id="selectMemberSumAchieve" resultType="com.hzs.retail.member.vo.CuMemberRetailAchieveVO"> | ||||
|  | @ -809,4 +826,14 @@ | |||
|         ORDER BY t3.monthBox desc | ||||
|     </select> | ||||
|     <!--市场动态盒数 结束--> | ||||
| 
 | ||||
| 
 | ||||
|     <select id="selectSubMemberIdByRootMember" resultType="java.lang.Long"> | ||||
|         select cm.pk_id, cm.MEMBER_NAME | ||||
|         from cu_member cm | ||||
|         where cm.SYSTEM_TYPE = #{systemType} | ||||
|             start with cm.pk_id = #{pkMember} | ||||
|         connect by prior cm.pk_id = cm.pk_parent | ||||
|         order by level | ||||
|     </select> | ||||
| </mapper> | ||||
|  |  | |||
|  | @ -9,7 +9,8 @@ | |||
|                cmrr.*, | ||||
|                bap.name province_val, | ||||
|                bac.name city_val, | ||||
|                bax.name county_val | ||||
|                bax.name county_val, | ||||
|                cm.IS_ACTIVATE | ||||
|         from cu_member cm | ||||
|                  left join cu_member_retail_region cmrr | ||||
|                            on cmrr.pk_member = cm.pk_id | ||||
|  | @ -30,7 +31,7 @@ | |||
|                                and bax.del_flag = 0 | ||||
|         where cm.del_flag = 0 | ||||
|           and cm.pk_id = #{pkMember} | ||||
|           and cm.IS_ACTIVATE=0 | ||||
| --           and cm.IS_ACTIVATE=0 | ||||
|           and bg.grade_value >= #{gradeValue} | ||||
|     </select> | ||||
| 
 | ||||
|  |  | |||
|  | @ -3,17 +3,13 @@ package com.hzs.retail.sale.controller.api; | |||
| import cn.hutool.core.bean.BeanUtil; | ||||
| import cn.hutool.core.collection.CollectionUtil; | ||||
| import com.hzs.common.core.annotation.RepeatSubmit; | ||||
| import com.hzs.common.core.config.HzsConfig; | ||||
| import com.hzs.common.core.config.BdConfig; | ||||
| import com.hzs.common.core.constant.CacheConstants; | ||||
| import com.hzs.common.core.constant.SysConstants; | ||||
| import com.hzs.common.core.domain.R; | ||||
| import com.hzs.common.core.enums.EEnv; | ||||
| import com.hzs.common.core.enums.EGrade; | ||||
| import com.hzs.common.core.enums.ESpecialArea; | ||||
| import com.hzs.common.core.enums.EYesNo; | ||||
| import com.hzs.common.core.exception.ServiceException; | ||||
| import com.hzs.common.core.service.RedisService; | ||||
| import com.hzs.common.core.utils.DateUtils; | ||||
| import com.hzs.common.core.utils.StringUtils; | ||||
| import com.hzs.common.core.web.domain.AjaxResult; | ||||
| import com.hzs.common.domain.member.base.CuMember; | ||||
|  | @ -42,7 +38,6 @@ import org.springframework.web.bind.annotation.*; | |||
| import javax.validation.Valid; | ||||
| import java.math.BigDecimal; | ||||
| import java.util.ArrayList; | ||||
| import java.util.Date; | ||||
| import java.util.List; | ||||
| import java.util.Map; | ||||
| 
 | ||||
|  | @ -317,6 +312,7 @@ public class ApiRetailOrderController { | |||
|                 .phone(newMember.getPhone()) | ||||
|                 .loginPassword(newMember.getLoginPassword()) | ||||
|                 .payPassword(newMember.getPayPassword()) | ||||
|                 .urlAddress(BdConfig.getPc()) | ||||
|                 .build()); | ||||
|     } | ||||
| 
 | ||||
|  |  | |||
|  | @ -8,11 +8,7 @@ import lombok.NoArgsConstructor; | |||
| import java.io.Serializable; | ||||
| 
 | ||||
| /** | ||||
|  * @Description: 新零售订单返回VO | ||||
|  * @Author: jiang chao | ||||
|  * @Time: 2024/12/12 16:38 | ||||
|  * @Classname: RetailOrderVO | ||||
|  * @PackageName: com.hzs.retail.sale.vo | ||||
|  * 新零售订单返回VO | ||||
|  */ | ||||
| @Builder | ||||
| @AllArgsConstructor | ||||
|  | @ -47,4 +43,9 @@ public class RetailOrderVO implements Serializable { | |||
|      */ | ||||
|     private String payPassword; | ||||
| 
 | ||||
|     /** | ||||
|      * 登录网址 | ||||
|      */ | ||||
|     private String urlAddress; | ||||
| 
 | ||||
| } | ||||
|  |  | |||
|  | @ -2,7 +2,7 @@ package com.hzs.sale.order.controller; | |||
| 
 | ||||
| import cn.hutool.core.bean.BeanUtil; | ||||
| import cn.hutool.core.collection.CollectionUtil; | ||||
| import com.hzs.common.core.config.HzsConfig; | ||||
| import com.hzs.common.core.config.BdConfig; | ||||
| import com.hzs.common.core.constant.CacheConstants; | ||||
| import com.hzs.common.core.constant.CountryConstants; | ||||
| import com.hzs.common.core.constant.HttpStatus; | ||||
|  | @ -20,12 +20,9 @@ import com.hzs.common.domain.member.account.CuMemberAccount; | |||
| import com.hzs.common.domain.member.base.CuMember; | ||||
| import com.hzs.common.domain.member.ext.CuMemberAccountExt; | ||||
| import com.hzs.common.domain.member.ext.CuMemberExt; | ||||
| import com.hzs.common.domain.sale.ext.SaOrderExt; | ||||
| import com.hzs.common.domain.sale.order.SaOrder; | ||||
| import com.hzs.common.domain.sale.order.SaOrderItems; | ||||
| import com.hzs.common.domain.scm.ic.IcAvailableNum; | ||||
| import com.hzs.common.domain.scm.ic.ext.IcAvailableNumExt; | ||||
| import com.hzs.common.domain.scm.pub.ScmItemSpecs; | ||||
| import com.hzs.common.domain.system.base.BdStorehouse; | ||||
| import com.hzs.common.security.utils.SecurityUtils; | ||||
| import com.hzs.common.util.TransactionUtils; | ||||
|  | @ -52,13 +49,6 @@ import org.springframework.web.bind.annotation.RequestBody; | |||
| import java.math.BigDecimal; | ||||
| import java.util.*; | ||||
| 
 | ||||
| /** | ||||
|  * @Description: | ||||
|  * @Author: sui q | ||||
|  * @Time: 2022/8/30 8:42 | ||||
|  * @Classname: ParentOrderController | ||||
|  * @PackageName: com.hzs.sale.order.controller | ||||
|  */ | ||||
| @Slf4j | ||||
| public abstract class ParentOrderController extends BaseController { | ||||
| 
 | ||||
|  | @ -391,7 +381,7 @@ public abstract class ParentOrderController extends BaseController { | |||
|      **/ | ||||
|     protected String validateAvailableNum(OrderParam orderParam, String orderCode) { | ||||
|         // 验证是否控制进销存 | ||||
|         if (EYesNo.NO.getIntValue() == HzsConfig.getEnable()) { | ||||
|         if (EYesNo.NO.getIntValue() == BdConfig.getEnable()) { | ||||
|             return null; | ||||
|         } | ||||
|         BdStorehouse bdStorehouse; | ||||
|  |  | |||
|  | @ -11,7 +11,7 @@ import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; | |||
| import com.baomidou.mybatisplus.core.toolkit.Wrappers; | ||||
| import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; | ||||
| import com.hzs.activity.pick.service.IAcRetailPickService; | ||||
| import com.hzs.common.core.config.HzsConfig; | ||||
| import com.hzs.common.core.config.BdConfig; | ||||
| import com.hzs.common.core.constant.*; | ||||
| import com.hzs.common.core.constant.msg.ConfigMsgConstants; | ||||
| import com.hzs.common.core.constant.msg.MemberMsgConstants; | ||||
|  | @ -63,7 +63,6 @@ import com.hzs.sale.order.param.*; | |||
| import com.hzs.sale.order.service.*; | ||||
| import com.hzs.sale.order.vo.*; | ||||
| import com.hzs.sale.product.service.IBdProductExtendService; | ||||
| import com.hzs.sale.product.service.IBdProductService; | ||||
| import com.hzs.sale.wares.service.*; | ||||
| import com.hzs.scm.pub.IScmBillServiceApi; | ||||
| import com.hzs.system.base.IAreaServiceApi; | ||||
|  | @ -151,8 +150,6 @@ public class SaOrderServiceImpl extends ServiceImpl<SaOrderMapper, SaOrder> impl | |||
|     @Autowired | ||||
|     private UserTokenService userTokenService; | ||||
|     @Autowired | ||||
|     private IBdProductService iBdProductService; | ||||
|     @Autowired | ||||
|     private IBdProductExtendService iBdProductExtendService; | ||||
|     @Autowired | ||||
|     private RabbitTemplate rabbitTemplate; | ||||
|  | @ -173,17 +170,12 @@ public class SaOrderServiceImpl extends ServiceImpl<SaOrderMapper, SaOrder> impl | |||
|     private IOrderBusinessService orderBusinessService; | ||||
|     @Autowired | ||||
|     private ISaOrderChargeLogService saOrderChargeLogService; | ||||
| 
 | ||||
|     @Autowired | ||||
|     private RedisService redisService; | ||||
| 
 | ||||
|     @Autowired | ||||
|     private IBdWaresDetailService bdWaresDetailService; | ||||
| 
 | ||||
|     @Autowired | ||||
|     public void setRedisService(RedisService redisService) { | ||||
|         this.redisService = redisService; | ||||
|     } | ||||
| 
 | ||||
|     @Override | ||||
|     public List<CuMemberExt> queryMemberExtByCondition(CuMember cuMember) { | ||||
|         return memberServiceApi.getMemberInfo(cuMember).getData(); | ||||
|  | @ -820,7 +812,7 @@ public class SaOrderServiceImpl extends ServiceImpl<SaOrderMapper, SaOrder> impl | |||
| 
 | ||||
|     @Override | ||||
|     public void convertAvailableNumMsg(List<IcAvailableNumExt> availableNumList) { | ||||
|         if (EYesNo.NO.getIntValue() == HzsConfig.getEnable()) { | ||||
|         if (EYesNo.NO.getIntValue() == BdConfig.getEnable()) { | ||||
|             return; | ||||
|         } | ||||
|         log.info("生产活动消息,activity.exchange:{}", JSONUtil.toJsonStr(availableNumList)); | ||||
|  | @ -1838,7 +1830,7 @@ public class SaOrderServiceImpl extends ServiceImpl<SaOrderMapper, SaOrder> impl | |||
| 
 | ||||
|     @Override | ||||
|     public String validateAvailableNum(OrderParam orderParam, String orderCode) { | ||||
|         if (EYesNo.NO.getIntValue() == HzsConfig.getEnable()) { | ||||
|         if (EYesNo.NO.getIntValue() == BdConfig.getEnable()) { | ||||
|             return null; | ||||
|         } | ||||
|         BdStorehouse bdStorehouse; | ||||
|  | @ -2119,7 +2111,7 @@ public class SaOrderServiceImpl extends ServiceImpl<SaOrderMapper, SaOrder> impl | |||
|     @Override | ||||
|     public Boolean checkPreSalesQuantity(OrderParam orderParam) { | ||||
|         // 开关控制是否处理 | ||||
|         if (EYesNo.NO.getIntValue() == HzsConfig.getEnable()) { | ||||
|         if (EYesNo.NO.getIntValue() == BdConfig.getEnable()) { | ||||
|             return true; | ||||
|         } | ||||
| 
 | ||||
|  | @ -2158,7 +2150,7 @@ public class SaOrderServiceImpl extends ServiceImpl<SaOrderMapper, SaOrder> impl | |||
|     @Transactional(rollbackFor = Exception.class) | ||||
|     public Boolean reducePreSalesQuantity(String orderCode, Integer specialArea) { | ||||
|         // 开关控制是否处理 | ||||
|         if (EYesNo.NO.getIntValue() == HzsConfig.getEnable()) { | ||||
|         if (EYesNo.NO.getIntValue() == BdConfig.getEnable()) { | ||||
|             return true; | ||||
|         } | ||||
| 
 | ||||
|  | @ -2532,14 +2524,15 @@ public class SaOrderServiceImpl extends ServiceImpl<SaOrderMapper, SaOrder> impl | |||
|         } else if (EOrderType.RETAIL_REPURCHASE.getValue() == saOrderExt.getOrderType()) { | ||||
|             // 复购订单存在盒数商品撤单,需要处理降级操作 | ||||
|             if (saOrderExt.getBoxNum() > 0) { | ||||
|                 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 目前只有注册、升级才能激活,复购不进行处理 | ||||
| //                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 恢复升级专区,复购专区不需要处理等级问题 | ||||
| //                // 如果复购订单后面还有升级订单,不需要处理等级问题; 复购订单后面没有升级订单,走新逻辑校验 | ||||
|  | @ -2638,7 +2631,7 @@ public class SaOrderServiceImpl extends ServiceImpl<SaOrderMapper, SaOrder> impl | |||
|             // 注册专区直接算等级 | ||||
|             bdGrade = this.getGradeByBox(boxNum, gradeList, null, true); | ||||
|         } else if (ESpecialArea.RETAIL_UPGRADE.getValue() == specialArea) { | ||||
|             // 升级专区取消,一次性补差升级 | ||||
|             // 升级专区,一次性补差升级 | ||||
|             if (boxNum == 0) { | ||||
|                 // 不满足升级条件 | ||||
|                 throw new ServiceException("不满足升级条件"); | ||||
|  | @ -2651,8 +2644,10 @@ public class SaOrderServiceImpl extends ServiceImpl<SaOrderMapper, SaOrder> impl | |||
|                 throw new ServiceException("当前已经是可以购买的最高等级"); | ||||
|             } | ||||
| 
 | ||||
|             // 获取升级盒数基数 | ||||
|             int baseBoxNum = this.handleBaseBoxNum(updateGradeMember, memberGrade, gradeList, boxProductList, systemType); | ||||
|             // 计算等级 | ||||
|             bdGrade = this.getGradeByBox(boxNum, gradeList, memberGrade, true); | ||||
|             bdGrade = this.getGradeByBox(boxNum + baseBoxNum, gradeList, memberGrade, true); | ||||
| 
 | ||||
|             // 会员等级 大于等于 购买盒数等级,则不充足升级条件 | ||||
|             if (memberGrade.getGradeValue().compareTo(bdGrade.getGradeValue()) >= 0) { | ||||
|  | @ -2703,7 +2698,7 @@ public class SaOrderServiceImpl extends ServiceImpl<SaOrderMapper, SaOrder> impl | |||
|             Optional<BdGrade> gradeOptional = gradeList.stream().filter(tmpGrade -> tmpGrade.getGradeValue() > memberGrade.getGradeValue()) | ||||
|                     .sorted(Comparator.comparingInt(BdGrade::getGradeValue).reversed()) | ||||
|                     .filter(tmpGrade -> tmpGrade.getBoxNumber() != 0) | ||||
|                     .filter(tmpGrade -> tmpGrade.getBoxNumber() - memberGrade.getBoxNumber() <= boxTotal).findFirst(); | ||||
|                     .filter(tmpGrade -> tmpGrade.getBoxNumber() <= boxTotal).findFirst(); | ||||
|             return gradeOptional.orElse(memberGrade); | ||||
|         } | ||||
|     } | ||||
|  | @ -2715,7 +2710,7 @@ public class SaOrderServiceImpl extends ServiceImpl<SaOrderMapper, SaOrder> impl | |||
|      * @param cuMember       会员信息 | ||||
|      * @param memberGrade    会员等级信息 | ||||
|      * @param gradeList      等级列表 | ||||
|      * @param boxProductList 盒数商品商品 | ||||
|      * @param boxProductList 盒数商品列表 | ||||
|      * @param systemType     所属系统 | ||||
|      * @return | ||||
|      */ | ||||
|  | @ -2723,35 +2718,56 @@ public class SaOrderServiceImpl extends ServiceImpl<SaOrderMapper, SaOrder> impl | |||
|     public int handleBaseBoxNum(CuMember cuMember, BdGrade memberGrade, | ||||
|                                 List<BdGrade> gradeList, List<String> boxProductList, | ||||
|                                 Integer systemType) { | ||||
|         // 获取今天开始时间 | ||||
|         Date todayDate = DateUtils.getStartTime(new Date()); | ||||
|         // 2025.03.18 调整需求,升级走当天累计,当天买的所有都进行积累,24点之后则重新累积(手动升级前后的盒数都算累计) | ||||
|         // 升级盒数基数 | ||||
|         int baseBoxNum = 0; | ||||
| 
 | ||||
|         // 是否有升级记录 | ||||
|         // 会员所有升级记录 | ||||
|         List<CuMemberLevel> memberLevelList = iCuMemberDetailServiceApi.getUpgradeList(cuMember.getPkId()).getData(); | ||||
|         if (CollectionUtil.isNotEmpty(memberLevelList)) { | ||||
|             // 如果今天有手动升级记录,则以手动升级记录的盒数 + 今天购买的盒数做累计 | ||||
|             // 最新一次的手动升级记录 | ||||
|             Optional<CuMemberLevel> lastManualOptional = memberLevelList.stream().filter(tmpGrade -> tmpGrade.getUpType().equals(EUpgradeType.MANUAL_UPGRADE.getValue())).findFirst(); | ||||
|             if (lastManualOptional.isPresent() && lastManualOptional.get().getUpgradeTime().compareTo(todayDate) >= 0) { | ||||
|                 // 存在今天的手动升级记录 | ||||
|             if (lastManualOptional.isPresent()) { | ||||
|                 // 最新一次的手动升级 | ||||
|                 CuMemberLevel lastMemberLevel = lastManualOptional.get(); | ||||
|                 BdGrade lastUpdateGrade = gradeList.stream().filter(tmpGrade -> tmpGrade.getPkId().equals(lastMemberLevel.getNewLevel())).findFirst().get(); | ||||
|                 baseBoxNum = lastUpdateGrade.getBoxNumber(); | ||||
|                 // 盒数基数 = 手动升级盒数 + 手动升级之后的升级订单盒数 | ||||
|                 baseBoxNum = lastUpdateGrade.getBoxNumber() | ||||
|                         + saOrderItemsService.getRetailWaresQuantityNew(cuMember.getPkId(), boxProductList, lastMemberLevel.getUpgradeTime(), Collections.singletonList(EOrderType.RETAIL_UPGRADE.getValue()), systemType); | ||||
|             } else { | ||||
|                 // 如果今天没有手动升级记录,则以今天以前最后一条升级记录的盒数 + 今天购买的盒数做累计 | ||||
|                 memberLevelList = memberLevelList.stream().filter(tmp -> tmp.getUpgradeTime().compareTo(todayDate) < 0).collect(Collectors.toList()); | ||||
|                 if (CollectionUtil.isNotEmpty(memberLevelList)) { | ||||
|                     CuMemberLevel lastMemberLevel = memberLevelList.get(0); | ||||
|                     BdGrade lastUpdateGrade = gradeList.stream().filter(tmpGrade -> tmpGrade.getPkId().equals(lastMemberLevel.getNewLevel())).findFirst().get(); | ||||
|                     baseBoxNum = lastUpdateGrade.getBoxNumber(); | ||||
|                 } | ||||
|                 // 没有手动升级记录 | ||||
|                 saOrderItemsService.getRetailWaresQuantityNew(cuMember.getPkId(), boxProductList, null, Arrays.asList(EOrderType.RETAIL_REGISTER.getValue(), EOrderType.RETAIL_UPGRADE.getValue()), systemType); | ||||
|             } | ||||
|         } | ||||
|         return baseBoxNum; | ||||
| 
 | ||||
|         return baseBoxNum + saOrderItemsService.getRetailWaresQuantityNew(cuMember.getPkId(), boxProductList, todayDate, | ||||
|                 Arrays.asList(EOrderType.RETAIL_REGISTER.getValue(), EOrderType.RETAIL_UPGRADE.getValue(), EOrderType.RETAIL_REPURCHASE.getValue()), systemType); | ||||
| 
 | ||||
| //        // 获取今天开始时间 | ||||
| //        Date todayDate = DateUtils.getStartTime(new Date()); | ||||
| //        // 2025.03.18 调整需求,升级走当天累计,当天买的所有都进行积累,24点之后则重新累积(手动升级前后的盒数都算累计) | ||||
| //        int baseBoxNum = 0; | ||||
| // | ||||
| //        // 是否有升级记录 | ||||
| //        List<CuMemberLevel> memberLevelList = iCuMemberDetailServiceApi.getUpgradeList(cuMember.getPkId()).getData(); | ||||
| //        if (CollectionUtil.isNotEmpty(memberLevelList)) { | ||||
| //            // 如果今天有手动升级记录,则以手动升级记录的盒数 + 今天购买的盒数做累计 | ||||
| //            // 最新一次的手动升级记录 | ||||
| //            Optional<CuMemberLevel> lastManualOptional = memberLevelList.stream().filter(tmpGrade -> tmpGrade.getUpType().equals(EUpgradeType.MANUAL_UPGRADE.getValue())).findFirst(); | ||||
| //            if (lastManualOptional.isPresent() && lastManualOptional.get().getUpgradeTime().compareTo(todayDate) >= 0) { | ||||
| //                // 存在今天的手动升级记录 | ||||
| //                CuMemberLevel lastMemberLevel = lastManualOptional.get(); | ||||
| //                BdGrade lastUpdateGrade = gradeList.stream().filter(tmpGrade -> tmpGrade.getPkId().equals(lastMemberLevel.getNewLevel())).findFirst().get(); | ||||
| //                baseBoxNum = lastUpdateGrade.getBoxNumber(); | ||||
| //            } else { | ||||
| //                // 如果今天没有手动升级记录,则以今天以前最后一条升级记录的盒数 + 今天购买的盒数做累计 | ||||
| //                memberLevelList = memberLevelList.stream().filter(tmp -> tmp.getUpgradeTime().compareTo(todayDate) < 0).collect(Collectors.toList()); | ||||
| //                if (CollectionUtil.isNotEmpty(memberLevelList)) { | ||||
| //                    CuMemberLevel lastMemberLevel = memberLevelList.get(0); | ||||
| //                    BdGrade lastUpdateGrade = gradeList.stream().filter(tmpGrade -> tmpGrade.getPkId().equals(lastMemberLevel.getNewLevel())).findFirst().get(); | ||||
| //                    baseBoxNum = lastUpdateGrade.getBoxNumber(); | ||||
| //                } | ||||
| //            } | ||||
| //        } | ||||
| // | ||||
| //        return baseBoxNum + saOrderItemsService.getRetailWaresQuantityNew(cuMember.getPkId(), boxProductList, todayDate, | ||||
| //                Arrays.asList(EOrderType.RETAIL_REGISTER.getValue(), EOrderType.RETAIL_UPGRADE.getValue(), EOrderType.RETAIL_REPURCHASE.getValue()), systemType); | ||||
| 
 | ||||
| 
 | ||||
| //        // 是否当天购买(当天走累计升级,非当天走一次性补差) | ||||
|  |  | |||
|  | @ -36,9 +36,6 @@ import java.util.List; | |||
| 
 | ||||
| /** | ||||
|  * 门票主表 前端控制器 | ||||
|  * | ||||
|  * @author hzs | ||||
|  * @since 2025-01-09 | ||||
|  */ | ||||
| @RestController | ||||
| @RequestMapping("/api/ticket") | ||||
|  | @ -52,11 +49,9 @@ public class ApiSaTicketController extends ParentOrderController { | |||
|     private IAcTicketService acTicketService; | ||||
| 
 | ||||
|     /** | ||||
|      * 支付购买订单 | ||||
|      * | ||||
|      * @param orderParam 订单参数 | ||||
|      * @Description: 支付购买订单 | ||||
|      * @return: AjaxResult | ||||
|      * @Author: sui q | ||||
|      * @Date: 2022/8/27 16:47 | ||||
|      */ | ||||
|     @RepeatSubmitSimple | ||||
|     @PostMapping("/pay-ticket") | ||||
|  | @ -113,15 +108,13 @@ public class ApiSaTicketController extends ParentOrderController { | |||
|     } | ||||
| 
 | ||||
|     /** | ||||
|      * 支付购买订单 | ||||
|      * | ||||
|      * @param orderParam 订单参数 | ||||
|      * @Description: 支付购买订单 | ||||
|      * @return: AjaxResult | ||||
|      * @Author: sui q | ||||
|      * @Date: 2022/8/27 16:47 | ||||
|      */ | ||||
|     @PostMapping("/cancel-pay-ticket") | ||||
|     public AjaxResult cancelPaySaTicket(@RequestBody OrderParam orderParam) { | ||||
|         if(orderParam.getOrderCode() == null ) { | ||||
|         if (orderParam.getOrderCode() == null) { | ||||
|             return AjaxResult.error(TransactionUtils.getContent(MemberMsgConstants.REQUIRED_NOT_EMPTY)); | ||||
|         } | ||||
|         // 查询门票 | ||||
|  | @ -134,11 +127,9 @@ public class ApiSaTicketController extends ParentOrderController { | |||
|     } | ||||
| 
 | ||||
|     /** | ||||
|      * 支付购买订单 | ||||
|      * | ||||
|      * @param orderParam 订单参数 | ||||
|      * @Description: 支付购买订单 | ||||
|      * @return: AjaxResult | ||||
|      * @Author: sui q | ||||
|      * @Date: 2022/8/27 16:47 | ||||
|      */ | ||||
|     @PostMapping("/pay-online") | ||||
|     public AjaxResult paySaTicketOnline(@RequestBody OrderParam orderParam) { | ||||
|  | @ -174,11 +165,9 @@ public class ApiSaTicketController extends ParentOrderController { | |||
|     } | ||||
| 
 | ||||
|     /** | ||||
|      * 支付购买订单 | ||||
|      * | ||||
|      * @param orderParam 订单参数 | ||||
|      * @Description: 支付购买订单 | ||||
|      * @return: AjaxResult | ||||
|      * @Author: sui q | ||||
|      * @Date: 2022/8/27 16:47 | ||||
|      */ | ||||
|     @PostMapping("/pay-back") | ||||
|     public AjaxResult payBackSaTicketOnline(@RequestBody OrderParam orderParam) { | ||||
|  | @ -187,10 +176,8 @@ public class ApiSaTicketController extends ParentOrderController { | |||
|     } | ||||
| 
 | ||||
|     /** | ||||
|      * @description: 会员前台查询门票活动列表 | ||||
|      * @param: [acTicket] | ||||
|      * @return: com.hzs.common.core.web.page.TableDataInfo | ||||
|      **/ | ||||
|      * 会员前台查询门票活动列表 | ||||
|      */ | ||||
|     @GetMapping("/query") | ||||
|     public TableDataInfo querySaTick() { | ||||
|         SaTicketParam saTicketParam = SaTicketParam.builder() | ||||
|  | @ -225,11 +212,9 @@ public class ApiSaTicketController extends ParentOrderController { | |||
|     } | ||||
| 
 | ||||
|     /** | ||||
|      * 支付购买订单 | ||||
|      * | ||||
|      * @param ticketParam 订单参数 | ||||
|      * @Description: 支付购买订单 | ||||
|      * @return: AjaxResult | ||||
|      * @Author: sui q | ||||
|      * @Date: 2022/8/27 16:47 | ||||
|      */ | ||||
|     @PostMapping("/update-ticket") | ||||
|     public AjaxResult update(@RequestBody BuyTicketParam ticketParam) { | ||||
|  | @ -251,9 +236,7 @@ public class ApiSaTicketController extends ParentOrderController { | |||
|     } | ||||
| 
 | ||||
|     /** | ||||
|      * @description: 会员前台查询门票活动列表 | ||||
|      * @param: [acTicket] | ||||
|      * @return: com.hzs.common.core.web.page.TableDataInfo | ||||
|      * 会员前台查询门票活动列表 | ||||
|      **/ | ||||
|     @GetMapping("/query-ac") | ||||
|     public TableDataInfo queryAcTick() { | ||||
|  | @ -267,11 +250,7 @@ public class ApiSaTicketController extends ParentOrderController { | |||
|     } | ||||
| 
 | ||||
|     /** | ||||
|      * @param fieldList 需要验证的字段 | ||||
|      * @Description: 验证字段是否必输 | ||||
|      * @return: boolean | ||||
|      * @Author: sui q | ||||
|      * @Date: 2022/8/29 11:13 | ||||
|      * 验证字段是否必输 | ||||
|      */ | ||||
|     private boolean validateFieldNotNull(BuyTicketParam buyTicketParam, List<String> fieldList) { | ||||
|         return fieldList.stream().anyMatch(field -> { | ||||
|  |  | |||
|  | @ -1,7 +1,7 @@ | |||
| package com.hzs.sale.ticket.vo; | ||||
| 
 | ||||
| import com.baomidou.mybatisplus.annotation.TableField; | ||||
| import com.fasterxml.jackson.annotation.JsonFormat; | ||||
| import com.hzs.common.core.annotation.BigDecimalFormat; | ||||
| import com.hzs.common.core.annotation.Excel; | ||||
| import com.hzs.common.core.annotation.Transaction; | ||||
| import com.hzs.common.core.constant.EnumsPrefixConstants; | ||||
|  | @ -15,12 +15,7 @@ import java.math.BigDecimal; | |||
| import java.util.Date; | ||||
| 
 | ||||
| /** | ||||
|  * @description: 返回到前台页面 | ||||
|  * @author: sui q | ||||
|  * @time: 2025/1/10 13:36 | ||||
|  * @classname: SaTicketVO | ||||
|  * @package_name: com.hzs.sale.ticket.vo | ||||
|  * version 1.0.0 | ||||
|  * 返回到前台页面 | ||||
|  */ | ||||
| @Data | ||||
| @Builder | ||||
|  | @ -51,13 +46,13 @@ public class SaTicketVO implements Serializable { | |||
|      * 活动开始时间 | ||||
|      */ | ||||
|     @JsonFormat(pattern = "yyyy-MM-dd") | ||||
|     @Excel(name = "开始时间",dateFormat = "yyyy-MM-dd") | ||||
|     @Excel(name = "开始时间", dateFormat = "yyyy-MM-dd") | ||||
|     private Date actStartDate; | ||||
| 
 | ||||
|     /** | ||||
|      * 活动结束时间 | ||||
|      */ | ||||
|     @Excel(name = "结束时间",dateFormat = "yyyy-MM-dd") | ||||
|     @Excel(name = "结束时间", dateFormat = "yyyy-MM-dd") | ||||
|     @JsonFormat(pattern = "yyyy-MM-dd") | ||||
|     private Date actEndDate; | ||||
| 
 | ||||
|  | @ -70,12 +65,14 @@ public class SaTicketVO implements Serializable { | |||
|     /** | ||||
|      * 订单金额 | ||||
|      */ | ||||
|     @BigDecimalFormat | ||||
|     @Excel(name = "订单金额") | ||||
|     private BigDecimal orderAmount; | ||||
| 
 | ||||
|     /** | ||||
|      * 单价 | ||||
|      */ | ||||
|     @BigDecimalFormat | ||||
|     @Excel(name = "单价") | ||||
|     private BigDecimal price; | ||||
| 
 | ||||
|  | @ -144,7 +141,7 @@ public class SaTicketVO implements Serializable { | |||
|     /** | ||||
|      * 支付时间 | ||||
|      */ | ||||
|     @Excel(name = "支付时间",dateFormat = "yyyy-MM-dd HH:mm:ss") | ||||
|     @Excel(name = "支付时间", dateFormat = "yyyy-MM-dd HH:mm:ss") | ||||
|     @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") | ||||
|     private Date creationTime; | ||||
| 
 | ||||
|  |  | |||
|  | @ -1183,7 +1183,9 @@ | |||
|         <foreach collection="waresCodeList" item="items" open="(" close=")" separator=","> | ||||
|             #{items} | ||||
|         </foreach> | ||||
|         and to_char(so.pay_time, 'yyyy-mm-dd') = to_char(#{payTime}, 'yyyy-mm-dd') | ||||
|         <if test="payTime != null"> | ||||
|             and so.pay_time > #{payTime} | ||||
|         </if> | ||||
|     </select> | ||||
| 
 | ||||
|     <!-- 订单发货数量 --> | ||||
|  |  | |||
|  | @ -1543,7 +1543,7 @@ | |||
|         where so.del_flag = 0 | ||||
|           and so.order_status = 1 | ||||
|           and so.pk_member = #{pkMember} | ||||
|           and so.order_type in (41, 42, 43) | ||||
|           and so.order_type in (41, 42) | ||||
|           and so.box_num != 0 | ||||
|     </select> | ||||
| 
 | ||||
|  |  | |||
|  | @ -61,7 +61,9 @@ | |||
|             left join bd_product bp | ||||
|             on bd.pk_product=bp.pk_id and bp.del_flag=0 | ||||
|             left join ( | ||||
|             select pk_wares_specs_sku,wmsys.wm_concat(distinct(sc.specs_name)) specs_name,wmsys.wm_concat(distinct(sc.pk_id)) specs_name_id | ||||
|             select pk_wares_specs_sku, | ||||
|             to_char(wm_concat(distinct(sc.specs_name))) specs_name, | ||||
|             to_char(wm_concat(distinct(sc.pk_id))) specs_name_id | ||||
|             from bd_wares_specs_relation br | ||||
|             left join bd_wares_specs bp | ||||
|             on br.pk_wares_specs= bp.pk_id | ||||
|  |  | |||
|  | @ -1,7 +1,7 @@ | |||
| package com.hzs.common.core.aspect; | ||||
| 
 | ||||
| import com.hzs.common.core.annotation.RepeatSubmit; | ||||
| import com.hzs.common.core.config.HzsConfig; | ||||
| import com.hzs.common.core.config.BdConfig; | ||||
| import com.hzs.common.core.constant.CacheToolsConstants; | ||||
| import com.hzs.common.core.constant.HttpStatus; | ||||
| import com.hzs.common.core.constant.MemberFieldConstants; | ||||
|  | @ -53,7 +53,7 @@ public class RepeatSubmitAspectAdvice { | |||
|                 request.getHeader(MemberFieldConstants.TOKEN); | ||||
| 
 | ||||
|         try { | ||||
|             if (EEnv.DEV.getValue().equals(HzsConfig.getEnv())) { | ||||
|             if (EEnv.DEV.getValue().equals(BdConfig.getEnv())) { | ||||
|                 // 本地研发环境,不做拦截处理 | ||||
|                 return joinPoint.proceed(); | ||||
|             } | ||||
|  |  | |||
|  | @ -8,17 +8,17 @@ import org.springframework.stereotype.Component; | |||
|  */ | ||||
| @Component | ||||
| @ConfigurationProperties(prefix = "bd") | ||||
| public class HzsConfig { | ||||
| public class BdConfig { | ||||
| 
 | ||||
|     /** | ||||
|      * 当前环境 | ||||
|      */ | ||||
|     private static String env; | ||||
| 
 | ||||
| //    /** | ||||
| //     * PC地址 | ||||
| //     */ | ||||
| //    private static String pc; | ||||
|     /** | ||||
|      * PC地址 | ||||
|      */ | ||||
|     private static String pc; | ||||
| //    /** | ||||
| //     * 公众号地址 | ||||
| //     */ | ||||
|  | @ -39,17 +39,17 @@ public class HzsConfig { | |||
|     } | ||||
| 
 | ||||
|     public void setEnv(String env) { | ||||
|         HzsConfig.env = env; | ||||
|         BdConfig.env = env; | ||||
|     } | ||||
| 
 | ||||
|     public static String getPc() { | ||||
|         return pc; | ||||
|     } | ||||
| 
 | ||||
|     public void setPc(String pc) { | ||||
|         BdConfig.pc = pc; | ||||
|     } | ||||
| 
 | ||||
| //    public static String getPc() { | ||||
| //        return pc; | ||||
| //    } | ||||
| // | ||||
| //    public void setPc(String pc) { | ||||
| //        HzsConfig.pc = pc; | ||||
| //    } | ||||
| // | ||||
| //    public static String getGzh() { | ||||
| //        return gzh; | ||||
| //    } | ||||
|  | @ -79,6 +79,6 @@ public class HzsConfig { | |||
|     } | ||||
| 
 | ||||
|     public void setEnable(Integer enable) { | ||||
|         HzsConfig.enable = enable; | ||||
|         BdConfig.enable = enable; | ||||
|     } | ||||
| } | ||||
|  | @ -1,5 +1,6 @@ | |||
| package com.hzs.common.core.constant; | ||||
| 
 | ||||
| import java.math.BigDecimal; | ||||
| import java.util.Arrays; | ||||
| import java.util.List; | ||||
| 
 | ||||
|  | @ -8,6 +9,11 @@ import java.util.List; | |||
|  */ | ||||
| public class RetailProductConstants { | ||||
| 
 | ||||
|     /** | ||||
|      * 区域分红,每盒2元 | ||||
|      */ | ||||
|     public static final BigDecimal AREA_BOX_BONUS = new BigDecimal("2"); | ||||
| 
 | ||||
|     /** | ||||
|      * 盒数产品列表 | ||||
|      */ | ||||
|  |  | |||
|  | @ -19,6 +19,10 @@ public enum EBonusItems { | |||
|      * 启动卡直推 | ||||
|      */ | ||||
|     BOOT_CARD(2, "旧启动卡直推", 0, EnumsPrefixConstants.BONUS_ITEMS + 2), | ||||
|     /** | ||||
|      * 直推收益 | ||||
|      */ | ||||
|     DIRECT_INCOME(3, "旧直推收益", 0, EnumsPrefixConstants.BONUS_ITEMS + 3), | ||||
|     /** | ||||
|      * 拓展收益 | ||||
|      */ | ||||
|  | @ -83,9 +87,9 @@ public enum EBonusItems { | |||
|     ////////////////////////////////////////////////// 新奖项 ////////////////////////////////////////////////// | ||||
| 
 | ||||
|     /** | ||||
|      * 直推收益 -- 秒结,日奖 | ||||
|      * 直推收益(新零售直推级差收益) -- 秒结,日奖 | ||||
|      */ | ||||
|     DIRECT_INCOME(3, "直推收益", 0, EnumsPrefixConstants.BONUS_ITEMS + 3), | ||||
|     RETAIL_RANGE_INCOME(25, "直推收益", 0, EnumsPrefixConstants.BONUS_ITEMS + 25), | ||||
|     /** | ||||
|      * 平级收益(新零售平级收益) -- 秒结,日奖 | ||||
|      */ | ||||
|  | @ -94,14 +98,12 @@ public enum EBonusItems { | |||
|      * 区域分红(新零售区域收益) -- 秒结,日奖 | ||||
|      */ | ||||
|     RETAIL_AREA_INCOME(27, "区域分红", 0, EnumsPrefixConstants.BONUS_ITEMS + 27), | ||||
|     /** | ||||
|      * 月度级差收益(新零售极差收益) -- 月结,月奖 | ||||
|      */ | ||||
|     RETAIL_RANGE_INCOME(25, "月度级差收益", 0, EnumsPrefixConstants.BONUS_ITEMS + 25), | ||||
| 
 | ||||
|     /** | ||||
|      * 复购级差收益(新) -- 月结,月奖 | ||||
|      */ | ||||
|     RETAIL_MONTH_REPURCHASE_INCOME(31, "复购级差收益", 0, EnumsPrefixConstants.BONUS_ITEMS + 31), | ||||
| 
 | ||||
|     /** | ||||
|      * 月度分红 - 平均收益(新零售福利平均收益) -- 月结,月奖 | ||||
|      */ | ||||
|  | @ -110,6 +112,7 @@ public enum EBonusItems { | |||
|      * 月度分红 - 加权收益(新零售福利加权收益) -- 月结,月奖 | ||||
|      */ | ||||
|     RETAIL_BENEFIT_INCOME(29, "月度分红加权收益", 0, EnumsPrefixConstants.BONUS_ITEMS + 29), | ||||
| 
 | ||||
|     /** | ||||
|      * 培育津贴(新) -- 月结,月奖 | ||||
|      */ | ||||
|  |  | |||
|  | @ -98,4 +98,8 @@ public class CuMemberRetailRegionExt extends CuMemberRetailRegion { | |||
|      */ | ||||
|     private Integer pkCountry; | ||||
| 
 | ||||
|     /** | ||||
|      * 2025年6月11日 是否激活 (0-是, 1-否) | ||||
|      */ | ||||
|     private Integer isActivate; | ||||
| } | ||||
|  |  | |||
		Loading…
	
		Reference in New Issue