From 99a8b74ec0202b114c63c4195f924484c47dc57e Mon Sep 17 00:00:00 2001 From: cabbage <281119120@qq.com> Date: Tue, 1 Jul 2025 09:32:40 +0800 Subject: [PATCH] =?UTF-8?q?##=20=E5=95=86=E5=93=81=E7=9B=92=E6=95=B0?= =?UTF-8?q?=E6=94=AF=E6=8C=81=E5=B0=8F=E6=95=B0=E5=A4=84=E7=90=86=EF=BC=9B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/impl/BonusSettleRangeHandle.java | 101 +- .../bonus/vo/MemberBonusFirstPurchaseVO.java | 20 +- .../com/hzs/bonus/bonus/vo/MemberBonusVO.java | 12 +- .../bonus/achieve/CuMemberTreeMapper.xml | 20 +- .../mapper/bonus/order/BonusOrderMapper.xml | 4 +- .../member/mapper/MemberReportMapper.java | 179 +-- .../member/service/MemberReportService.java | 1 - .../service/impl/MemberReportServiceImpl.java | 29 +- .../member/vo/DirectPushAmountPvBoxVo.java | 37 +- .../report/member/MemberReportMapper.xml | 574 +++---- .../api/ApiRetailOrderController.java | 1 - .../service/impl/RetailOrderServiceImpl.java | 58 +- .../controller/ParentOrderController.java | 83 +- .../manager/SaOrderBusinessController.java | 20 +- .../sale/order/mapper/SaOrderItemsMapper.java | 11 +- .../hzs/sale/order/param/OrderItemsParam.java | 5 +- .../order/service/ISaOrderItemsService.java | 3 +- .../impl/OrderBusinessServiceImpl.java | 15 +- .../service/impl/SaOrderItemsServiceImpl.java | 3 +- .../service/impl/SaOrderServiceImpl.java | 1319 +++++++++-------- .../impl/BdWaresDetailServiceImpl.java | 1 - .../mapper/sale/order/SaOrderItemsMapper.xml | 2 +- .../mapper/sale/wares/BdWaresDetailMapper.xml | 5 +- .../mapper/sale/wares/BdWaresMapper.xml | 2 +- .../hzs/common/core/utils/BoxProductUtil.java | 2 +- .../member/achieve/CuMemberRetailRange.java | 16 +- .../member/achieve/CuMemberRetailS.java | 4 +- .../domain/sale/ext/BdWaresDetailExt.java | 10 + .../domain/sale/ext/SaOrderWaresExt.java | 5 + .../hzs/common/domain/sale/order/SaOrder.java | 2 +- .../common/domain/system/config/BdGrade.java | 6 +- 31 files changed, 1080 insertions(+), 1470 deletions(-) diff --git a/bd-business/bd-business-bonus/src/main/java/com/hzs/bonus/bonus/service/impl/BonusSettleRangeHandle.java b/bd-business/bd-business-bonus/src/main/java/com/hzs/bonus/bonus/service/impl/BonusSettleRangeHandle.java index f06c436f..aa7e974e 100644 --- a/bd-business/bd-business-bonus/src/main/java/com/hzs/bonus/bonus/service/impl/BonusSettleRangeHandle.java +++ b/bd-business/bd-business-bonus/src/main/java/com/hzs/bonus/bonus/service/impl/BonusSettleRangeHandle.java @@ -91,7 +91,7 @@ public class BonusSettleRangeHandle extends BonusSettleHandle { // 等级列表 List retaiGradeList = bonusConfigDTO.getRetaiGradeList(); for (BdGrade bdGrade : retaiGradeList) { - if (bdGrade.getBoxTotal() > 0) { + if (bdGrade.getBoxTotal().compareTo(BigDecimal.ZERO) > 0) { retailTeamGradeMap.put(bdGrade.getGradeValue(), bdGrade); } gradeMap.put(bdGrade.getGradeValue(), bdGrade); @@ -115,10 +115,10 @@ public class BonusSettleRangeHandle extends BonusSettleHandle { CuMemberRetailRangeExt sourceMemberRangeExt = memberRangeExtMap.get(saOrderExt.getPkMember()); // 先算等级 注册、升级计算等级 // 订单指定产品盒数 - int boxNum = 0; + BigDecimal boxNum = BigDecimal.ZERO; for (SaOrderWaresExt saOrderItems : saOrderExt.getOrderWaresExtList()) { if (RetailConstants.ALL_BOX_WARES_LIST.contains(saOrderItems.getWaresCode())) { - boxNum += saOrderItems.getWaresQuantity(); + boxNum = boxNum.add(saOrderItems.getBoxNum().multiply(new BigDecimal(saOrderItems.getWaresQuantity()))); } } saOrderExt.setBoxNum(boxNum); @@ -126,9 +126,9 @@ public class BonusSettleRangeHandle extends BonusSettleHandle { // 订单业绩 BigDecimal orderAchieve = saOrderExt.getOrderAchieve(); // 注册、升级、复购、重消,盒数、业绩算个人累计数据(盒数、业绩) - sourceMemberRangeExt.setNewBoxNum(sourceMemberRangeExt.getNewBoxNum() + boxNum); - sourceMemberRangeExt.setConsumeBoxNum(sourceMemberRangeExt.getConsumeBoxNum() + boxNum); - sourceMemberRangeExt.setMonthBoxNum(sourceMemberRangeExt.getMonthBoxNum() + boxNum); + sourceMemberRangeExt.setNewBoxNum(sourceMemberRangeExt.getNewBoxNum().add(boxNum)); + sourceMemberRangeExt.setConsumeBoxNum(sourceMemberRangeExt.getConsumeBoxNum().add(boxNum)); + sourceMemberRangeExt.setMonthBoxNum(sourceMemberRangeExt.getMonthBoxNum().add(boxNum)); sourceMemberRangeExt.setNewConsumePv(ComputeUtil.computeAdd(sourceMemberRangeExt.getNewConsumePv(), orderAchieve)); sourceMemberRangeExt.setConsumePv(ComputeUtil.computeAdd(sourceMemberRangeExt.getConsumePv(), orderAchieve)); sourceMemberRangeExt.setMonthConsumePv(ComputeUtil.computeAdd(sourceMemberRangeExt.getMonthConsumePv(), orderAchieve)); @@ -233,7 +233,7 @@ public class BonusSettleRangeHandle extends BonusSettleHandle { List retailGradeList = bonusConfigDTO.getRetaiGradeList(); // 等级 for (BdGrade bdGrade : retailGradeList) { - if (bdGrade.getBoxTotal() > 0) { + if (bdGrade.getBoxTotal().compareTo(BigDecimal.ZERO) > 0) { retailTeamGradeMap.put(bdGrade.getGradeValue(), bdGrade); } gradeIdMap.put(bdGrade.getPkId(), bdGrade); @@ -253,10 +253,10 @@ public class BonusSettleRangeHandle extends BonusSettleHandle { // 计算自消费奖衔 CuMemberRetailRangeExt sourceMemberRangeExt = memberRangeExtMap.get(saOrderExt.getPkMember()); // 先算等级 注册、升级计算等级 - int boxNum = 0; + BigDecimal boxNum = BigDecimal.ZERO; for (SaOrderWaresExt saOrderItems : saOrderExt.getOrderWaresExtList()) { if (RetailConstants.ALL_BOX_WARES_LIST.contains(saOrderItems.getWaresCode())) { - boxNum += saOrderItems.getWaresQuantity(); + boxNum = boxNum.add(saOrderItems.getBoxNum().multiply(new BigDecimal(saOrderItems.getWaresQuantity()))); } } saOrderExt.setBoxNum(boxNum); @@ -264,9 +264,9 @@ public class BonusSettleRangeHandle extends BonusSettleHandle { // 订单业绩 BigDecimal orderAchieve = saOrderExt.getOrderAchieve(); // 复购、重消,盒数、业绩算个人累计数据(盒数、业绩) - sourceMemberRangeExt.setNewBoxNum(sourceMemberRangeExt.getNewBoxNum() - boxNum); - sourceMemberRangeExt.setConsumeBoxNum(sourceMemberRangeExt.getConsumeBoxNum() - boxNum); - sourceMemberRangeExt.setMonthBoxNum(sourceMemberRangeExt.getMonthBoxNum() - boxNum); + sourceMemberRangeExt.setNewBoxNum(sourceMemberRangeExt.getNewBoxNum().add(boxNum)); + sourceMemberRangeExt.setConsumeBoxNum(sourceMemberRangeExt.getConsumeBoxNum().add(boxNum)); + sourceMemberRangeExt.setMonthBoxNum(sourceMemberRangeExt.getMonthBoxNum().add(boxNum)); sourceMemberRangeExt.setNewConsumePv(ComputeUtil.computeSubtract(sourceMemberRangeExt.getNewConsumePv(), orderAchieve)); sourceMemberRangeExt.setConsumePv(ComputeUtil.computeSubtract(sourceMemberRangeExt.getConsumePv(), orderAchieve)); sourceMemberRangeExt.setMonthConsumePv(ComputeUtil.computeSubtract(sourceMemberRangeExt.getMonthConsumePv(), orderAchieve)); @@ -461,7 +461,7 @@ public class BonusSettleRangeHandle extends BonusSettleHandle { // 等级列表 List retaiGradeList = bonusConfigDTO.getRetaiGradeList(); for (BdGrade bdGrade : retaiGradeList) { - if (bdGrade.getBoxTotal() > 0) { + if (bdGrade.getBoxTotal().compareTo(BigDecimal.ZERO) > 0) { retailTeamGradeMap.put(bdGrade.getGradeValue(), bdGrade); } gradeMap.put(bdGrade.getGradeValue(), bdGrade); @@ -510,18 +510,18 @@ public class BonusSettleRangeHandle extends BonusSettleHandle { CuMemberRetailRangeExt sourceMemberRangeExt = memberRangeExtMap.get(saOrderExt.getPkMember()); // 订单指定产品盒数(计算等级使用) - int boxNum = 0; + BigDecimal boxNum = BigDecimal.ZERO; for (SaOrderWaresExt saOrderItems : saOrderExt.getOrderWaresExtList()) { if (RetailConstants.ALL_BOX_WARES_LIST.contains(saOrderItems.getWaresCode())) { - boxNum += saOrderItems.getWaresQuantity(); + boxNum = boxNum.add(saOrderItems.getBoxNum().multiply(new BigDecimal(saOrderItems.getWaresQuantity()))); } } // 个人累计消费pv BigDecimal orderAchieve = saOrderExt.getOrderAchieve(); // 复购、重消,盒数、业绩算个人累计数据(盒数、业绩) - sourceMemberRangeExt.setNewBoxNum(sourceMemberRangeExt.getNewBoxNum() + boxNum); - sourceMemberRangeExt.setConsumeBoxNum(sourceMemberRangeExt.getConsumeBoxNum() + boxNum); - sourceMemberRangeExt.setMonthBoxNum(sourceMemberRangeExt.getMonthBoxNum() + boxNum); + sourceMemberRangeExt.setNewBoxNum(sourceMemberRangeExt.getNewBoxNum().add(boxNum)); + sourceMemberRangeExt.setConsumeBoxNum(sourceMemberRangeExt.getConsumeBoxNum().add(boxNum)); + sourceMemberRangeExt.setMonthBoxNum(sourceMemberRangeExt.getMonthBoxNum().add(boxNum)); sourceMemberRangeExt.setNewConsumePv(ComputeUtil.computeAdd(sourceMemberRangeExt.getNewConsumePv(), orderAchieve)); sourceMemberRangeExt.setConsumePv(ComputeUtil.computeAdd(sourceMemberRangeExt.getConsumePv(), orderAchieve)); sourceMemberRangeExt.setMonthConsumePv(ComputeUtil.computeAdd(sourceMemberRangeExt.getMonthConsumePv(), orderAchieve)); @@ -535,7 +535,7 @@ public class BonusSettleRangeHandle extends BonusSettleHandle { // 计算奖金 直推级差 + 平级收益 if ((EOrderType.RETAIL_REGISTER.getValue() == saOrderExt.getOrderType() || EOrderType.RETAIL_UPGRADE.getValue() == saOrderExt.getOrderType()) - && boxNum > 0 + && boxNum.compareTo(BigDecimal.ZERO) > 0 ) { // 注册或升级订单并且存在盒数产品,才有 直推级差收益 和 平级收益 for (SaOrderWaresExt saOrderItems : saOrderExt.getOrderWaresExtList()) { @@ -605,7 +605,7 @@ public class BonusSettleRangeHandle extends BonusSettleHandle { */ public List calculateRetailRangeGradeAwards(Integer period, Map memberRangeExtMap, String rangeTableName, SaOrderExt saOrderExt, Map retailTeamGradeMap, Map retailAwardsMap, String secondRangeTableName, - Integer boxNum, List cuMemberGradeList, Map activateMap) { + BigDecimal boxNum, List cuMemberGradeList, Map activateMap) { // 会员奖衔升级列表 List cuMemberAwardsList = new ArrayList<>(); // 订单会员 @@ -634,9 +634,9 @@ public class BonusSettleRangeHandle extends BonusSettleHandle { targetMemberRangeExt.setTeamConsumePv(ComputeUtil.computeAdd(targetMemberRangeExt.getTeamConsumePv(), orderAchieve)); targetMemberRangeExt.setTeamMonthPv(ComputeUtil.computeAdd(targetMemberRangeExt.getTeamMonthPv(), orderAchieve)); // 累计盒数 - targetMemberRangeExt.setTeamNewBoxNum(targetMemberRangeExt.getTeamNewBoxNum() + boxNum); - targetMemberRangeExt.setTeamBoxNum(targetMemberRangeExt.getTeamBoxNum() + boxNum); - targetMemberRangeExt.setTeamMonthBoxNum(targetMemberRangeExt.getTeamMonthBoxNum() + boxNum); + targetMemberRangeExt.setTeamNewBoxNum(targetMemberRangeExt.getTeamNewBoxNum().add(boxNum)); + targetMemberRangeExt.setTeamBoxNum(targetMemberRangeExt.getTeamBoxNum().add(boxNum)); + targetMemberRangeExt.setTeamMonthBoxNum(targetMemberRangeExt.getTeamMonthBoxNum().add(boxNum)); // 计算等级 calculateGradeAwards(period, memberRangeExtMap, rangeTableName, saOrderExt, retailTeamGradeMap, retailAwardsMap, secondRangeTableName, cuMemberGradeList, cuMemberAwardsList, targetMemberRangeExt, activateMap); @@ -665,10 +665,10 @@ public class BonusSettleRangeHandle extends BonusSettleHandle { // 如果等级值 大于 当前会员等级值 并且 等级要求累计盒数 小于等于 团队累计盒数 + 累计消费盒数,则可以进行升级 if (bdGrade.getGradeValue() > targetMemberRangeExt.getGradeValue() - && bdGrade.getBoxTotal() <= ( - targetMemberRangeExt.getTeamBoxNum() + targetMemberRangeExt.getConsumeBoxNum() - + targetMemberRangeExt.getBigBoxNum() + targetMemberRangeExt.getSmallBoxNum() - )) { + && bdGrade.getBoxTotal().compareTo( + targetMemberRangeExt.getTeamBoxNum().add(targetMemberRangeExt.getConsumeBoxNum()).add(targetMemberRangeExt.getBigBoxNum()).add(targetMemberRangeExt.getSmallBoxNum()) + ) <= 0 + ) { // 验证小区,计算小区累计盒数 查询伞下会员 List cuMemberRangeExtList; if (secondRangeTableName != null) { @@ -681,12 +681,12 @@ public class BonusSettleRangeHandle extends BonusSettleHandle { // new 新逻辑确认:注水 2 个虚拟区,自己消费 1 个虚拟区,伞下直推,所有的最大 // 大区盒数(默认为自己累计消费盒数) - int bigBoxNum = targetMemberRangeExt.getConsumeBoxNum(); - if (targetMemberRangeExt.getBigBoxNum() > bigBoxNum) { + BigDecimal bigBoxNum = targetMemberRangeExt.getConsumeBoxNum(); + if (targetMemberRangeExt.getBigBoxNum().compareTo(bigBoxNum) > 0) { // 注水大区如果大则使用注水盒数为大区 bigBoxNum = targetMemberRangeExt.getBigBoxNum(); } - if (targetMemberRangeExt.getSmallBoxNum() > bigBoxNum) { + if (targetMemberRangeExt.getSmallBoxNum().compareTo(bigBoxNum) > 0) { // 注水小区如果大则使用注水盒数为大区 bigBoxNum = targetMemberRangeExt.getSmallBoxNum(); } @@ -696,17 +696,16 @@ public class BonusSettleRangeHandle extends BonusSettleHandle { cuMemberRetailRangeExt = memberRangeExtMap.get(cuMemberRetailRangeExt.getPkMember()); } // 伞下团队累计盒数 + 自己消费盒数 - int areaBoxNum = cuMemberRetailRangeExt.getTeamBoxNum() + cuMemberRetailRangeExt.getConsumeBoxNum(); - if (areaBoxNum > bigBoxNum) { + BigDecimal areaBoxNum = cuMemberRetailRangeExt.getTeamBoxNum().add(cuMemberRetailRangeExt.getConsumeBoxNum()); + if (areaBoxNum.compareTo(bigBoxNum) > 0) { // 实际订单累计盒数 大于 累计消费盒数,实际订单累计盒数为大区 bigBoxNum = areaBoxNum; } } // 小区盒数(团队累计盒数 + 自消费累计盒数 + 两个注水虚拟盒数 - 大市场盒数) - int smallBoxNum = targetMemberRangeExt.getTeamBoxNum() + targetMemberRangeExt.getConsumeBoxNum() - + targetMemberRangeExt.getBigBoxNum() + targetMemberRangeExt.getSmallBoxNum() - bigBoxNum; - if (smallBoxNum >= bdGrade.getBoxSmallTotal()) { + BigDecimal smallBoxNum = targetMemberRangeExt.getTeamBoxNum().add(targetMemberRangeExt.getConsumeBoxNum()).add(targetMemberRangeExt.getBigBoxNum()).add(targetMemberRangeExt.getSmallBoxNum()).subtract(bigBoxNum); + if (smallBoxNum.compareTo(bdGrade.getBoxSmallTotal()) >= 0) { // 小区盒数 大于等于 升级小区盒数 CuMemberGrade cuMemberGrade = getCuMemberGrade(period, targetMemberRangeExt, bdGrade); cuMemberGradeList.add(cuMemberGrade); @@ -815,7 +814,7 @@ public class BonusSettleRangeHandle extends BonusSettleHandle { * 计算团队极差奖衔 */ public List calculateRetailBackRangeGradeAwards(Integer period, Map memberRangeExtMap, String rangeTableName, SaOrderExt saOrderExt, - Map retailTeamGradeMap, Map retailAwardsMap, String secondRangeTableName, Integer boxNum, + Map retailTeamGradeMap, Map retailAwardsMap, String secondRangeTableName, BigDecimal boxNum, Map cuMemberGradeMap, Map cuMemberAwardsMap, Map cuMemberShareAwardsMap) { List cuMemberRetailRangeExtList = new ArrayList<>(); // 订单会员 @@ -837,9 +836,9 @@ public class BonusSettleRangeHandle extends BonusSettleHandle { targetMemberRangeExt.setTeamConsumeAmount(ComputeUtil.computeSubtract(targetMemberRangeExt.getTeamConsumeAmount(), orderAmount)); targetMemberRangeExt.setTeamMonthAmount(ComputeUtil.computeSubtract(targetMemberRangeExt.getTeamMonthAmount(), orderAmount)); // 累计盒数 - targetMemberRangeExt.setTeamNewBoxNum(targetMemberRangeExt.getTeamNewBoxNum() - boxNum); - targetMemberRangeExt.setTeamBoxNum(targetMemberRangeExt.getTeamBoxNum() - boxNum); - targetMemberRangeExt.setTeamMonthBoxNum(targetMemberRangeExt.getTeamMonthBoxNum() - boxNum); + targetMemberRangeExt.setTeamNewBoxNum(targetMemberRangeExt.getTeamNewBoxNum().add(boxNum)); + targetMemberRangeExt.setTeamBoxNum(targetMemberRangeExt.getTeamBoxNum().add(boxNum)); + targetMemberRangeExt.setTeamMonthBoxNum(targetMemberRangeExt.getTeamMonthBoxNum().add(boxNum)); // 计算等级 calculateBackGrade(period, memberRangeExtMap, rangeTableName, saOrderExt, retailTeamGradeMap, retailAwardsMap, secondRangeTableName, cuMemberGradeMap, cuMemberAwardsMap, cuMemberShareAwardsMap, targetMemberRangeExt); @@ -859,10 +858,7 @@ public class BonusSettleRangeHandle extends BonusSettleHandle { for (Integer gradeValue : retailTeamGradeMap.keySet()) { BdGrade bdGrade = retailTeamGradeMap.get(gradeValue); - if (bdGrade.getBoxTotal() <= ( - targetMemberRangeExt.getTeamBoxNum() + targetMemberRangeExt.getConsumeBoxNum() - + targetMemberRangeExt.getBigBoxNum() + targetMemberRangeExt.getSmallBoxNum() - )) { + if (bdGrade.getBoxTotal().compareTo(targetMemberRangeExt.getTeamBoxNum().add(targetMemberRangeExt.getConsumeBoxNum()).add(targetMemberRangeExt.getBigBoxNum()).add(targetMemberRangeExt.getSmallBoxNum())) <= 0) { // 验证小区,计算小区累计盒数 查询伞下会员 List cuMemberRangeExtList; if (secondRangeTableName != null) { @@ -875,12 +871,12 @@ public class BonusSettleRangeHandle extends BonusSettleHandle { // new 新逻辑确认:注水 2 个虚拟区,自己消费 1 个虚拟区,伞下直推,所有的最大 // 大区盒数(默认为自己累计消费盒数) - int bigBoxNum = targetMemberRangeExt.getConsumeBoxNum(); - if (targetMemberRangeExt.getBigBoxNum() > bigBoxNum) { + BigDecimal bigBoxNum = targetMemberRangeExt.getConsumeBoxNum(); + if (targetMemberRangeExt.getBigBoxNum().compareTo(bigBoxNum) > 0) { // 注水大区如果大则使用注水盒数为大区 bigBoxNum = targetMemberRangeExt.getBigBoxNum(); } - if (targetMemberRangeExt.getSmallBoxNum() > bigBoxNum) { + if (targetMemberRangeExt.getSmallBoxNum().compareTo(bigBoxNum) > 0) { // 注水小区如果大则使用注水盒数为大区 bigBoxNum = targetMemberRangeExt.getSmallBoxNum(); } @@ -890,17 +886,16 @@ public class BonusSettleRangeHandle extends BonusSettleHandle { cuMemberRetailRangeExt = memberRangeExtMap.get(cuMemberRetailRangeExt.getPkMember()); } // 伞下团队累计盒数 + 自己消费盒数 - int areaBoxNum = cuMemberRetailRangeExt.getTeamBoxNum() + cuMemberRetailRangeExt.getConsumeBoxNum(); - if (areaBoxNum > bigBoxNum) { + BigDecimal areaBoxNum = cuMemberRetailRangeExt.getTeamBoxNum().add(cuMemberRetailRangeExt.getConsumeBoxNum()); + if (areaBoxNum.compareTo(bigBoxNum) > 0) { // 实际订单累计盒数 大于 累计消费盒数,实际订单累计盒数为大区 bigBoxNum = areaBoxNum; } } // 小区盒数(团队累计盒数 + 自消费累计盒数 + 两个注水虚拟盒数 - 大市场盒数) - int smallBoxNum = targetMemberRangeExt.getTeamBoxNum() + targetMemberRangeExt.getConsumeBoxNum() - + targetMemberRangeExt.getBigBoxNum() + targetMemberRangeExt.getSmallBoxNum() - bigBoxNum; - if (smallBoxNum >= bdGrade.getBoxSmallTotal()) { + BigDecimal smallBoxNum = targetMemberRangeExt.getTeamBoxNum().add(targetMemberRangeExt.getConsumeBoxNum()).add(targetMemberRangeExt.getBigBoxNum()).add(targetMemberRangeExt.getSmallBoxNum()).subtract(bigBoxNum); + if (smallBoxNum.compareTo(bdGrade.getBoxSmallTotal()) >= 0) { // 小区盒数 大于等于 升级小区盒数 CuMemberGrade cuMemberGrade = getCuMemberGrade(period, targetMemberRangeExt, bdGrade); cuMemberGradeMap.put(cuMemberGrade.getPkMember() + "_" + cuMemberGrade.getNewLevel(), cuMemberGrade); @@ -1316,7 +1311,7 @@ public class BonusSettleRangeHandle extends BonusSettleHandle { return null; } // 区域分红根据商品盒数来,如果没有盒数,直接返回为空 - if (saOrder.getBoxNum() == 0) { + if (saOrder.getBoxNum().compareTo(BigDecimal.ZERO) == 0) { return null; } @@ -1370,7 +1365,7 @@ public class BonusSettleRangeHandle extends BonusSettleHandle { CuMemberBonusDetail cuMemberBonusDetail = packageBenefitIncome(bonusConfigDTO, period, cuMemberBonusMap, null, RetailConstants.SAME_RATIO, benefitIncome, cuMemberRetailRangeExt, EBonusItems.RETAIL_AREA_INCOME.getValue(), BonusMsgConstants.RETAIL_AREA_INCOME); // 计算业绩以盒数做为基础 - cuMemberBonusDetail.setCalAchieve(new BigDecimal(saOrder.getBoxNum())); + cuMemberBonusDetail.setCalAchieve(saOrder.getBoxNum()); cuMemberBonusDetail.setPkOrder(saOrder.getPkId()); String remark = String.format(BonusMsgConstants.RETAIL_AREA_INCOME, saOrder.getOrderCode(), memberRangeExtMap.get(saOrder.getPkMember()).getMemberCode() + memberRangeExtMap.get(saOrder.getPkMember()).getMemberName(), diff --git a/bd-business/bd-business-bonus/src/main/java/com/hzs/bonus/bonus/vo/MemberBonusFirstPurchaseVO.java b/bd-business/bd-business-bonus/src/main/java/com/hzs/bonus/bonus/vo/MemberBonusFirstPurchaseVO.java index a9aec85e..65f51744 100644 --- a/bd-business/bd-business-bonus/src/main/java/com/hzs/bonus/bonus/vo/MemberBonusFirstPurchaseVO.java +++ b/bd-business/bd-business-bonus/src/main/java/com/hzs/bonus/bonus/vo/MemberBonusFirstPurchaseVO.java @@ -38,7 +38,7 @@ public class MemberBonusFirstPurchaseVO extends PubMemberBonusVO { /** * 商城重消 */ - @BigDecimalFormat + @BigDecimalFormat("#0.0000") private BigDecimal backPoints; // // /** @@ -75,55 +75,55 @@ public class MemberBonusFirstPurchaseVO extends PubMemberBonusVO { /** * 新零售直推收益 */ - @BigDecimalFormat + @BigDecimalFormat("#0.0000") private BigDecimal retailRangeIncome; /** * 新零售平级收益 */ - @BigDecimalFormat + @BigDecimalFormat("#0.0000") private BigDecimal retailSameLevelIncome; /** * 新零售区域分红 */ - @BigDecimalFormat + @BigDecimalFormat("#0.0000") private BigDecimal retailAreaIncome; /** * 福利级差收益 */ - @BigDecimalFormat + @BigDecimalFormat("#0.0000") private BigDecimal retailBenefitRangeIncome; /** * 复购级差收益 */ - @BigDecimalFormat + @BigDecimalFormat("#0.0000") private BigDecimal retailMonthRepurchaseIncome; /** * 培育津贴 */ - @BigDecimalFormat + @BigDecimalFormat("#0.0000") private BigDecimal coachIncome; /** * 福利分红收益总计 */ - @BigDecimalFormat + @BigDecimalFormat("#0.0000") private BigDecimal retailBenefitIncomeTotal; /** * 新零售收益小计 */ - @BigDecimalFormat + @BigDecimalFormat("#0.0000") private BigDecimal retailRealSubtotal; /** * 实发收益总计 */ - @BigDecimalFormat + @BigDecimalFormat("#0.0000") private BigDecimal realIncomeTotal; } diff --git a/bd-business/bd-business-bonus/src/main/java/com/hzs/bonus/bonus/vo/MemberBonusVO.java b/bd-business/bd-business-bonus/src/main/java/com/hzs/bonus/bonus/vo/MemberBonusVO.java index a58a007e..0d0e6fd3 100644 --- a/bd-business/bd-business-bonus/src/main/java/com/hzs/bonus/bonus/vo/MemberBonusVO.java +++ b/bd-business/bd-business-bonus/src/main/java/com/hzs/bonus/bonus/vo/MemberBonusVO.java @@ -93,7 +93,7 @@ public class MemberBonusVO implements Serializable { /** * 商城重消 */ - @BigDecimalFormat + @BigDecimalFormat("#0.0000") private BigDecimal backPoints; /** @@ -114,7 +114,7 @@ public class MemberBonusVO implements Serializable { /** * 实发收益总计 */ - @BigDecimalFormat + @BigDecimalFormat("#0.0000") private BigDecimal realIncomeTotal; /** @@ -130,19 +130,19 @@ public class MemberBonusVO implements Serializable { /** * 新零售直推级差收益 */ - @BigDecimalFormat + @BigDecimalFormat("#0.0000") private BigDecimal retailRangeIncome; /** * 新零售平级收益 */ - @BigDecimalFormat + @BigDecimalFormat("#0.0000") private BigDecimal retailSameLevelIncome; /** * 新零售区域收益 */ - @BigDecimalFormat + @BigDecimalFormat("#0.0000") private BigDecimal retailAreaIncome; /** @@ -163,7 +163,7 @@ public class MemberBonusVO implements Serializable { /** * 新零售收益小计 */ - @BigDecimalFormat + @BigDecimalFormat("#0.0000") private BigDecimal retailRealSubtotal; /** diff --git a/bd-business/bd-business-bonus/src/main/resources/mapper/bonus/achieve/CuMemberTreeMapper.xml b/bd-business/bd-business-bonus/src/main/resources/mapper/bonus/achieve/CuMemberTreeMapper.xml index 24a237c2..347976fd 100644 --- a/bd-business/bd-business-bonus/src/main/resources/mapper/bonus/achieve/CuMemberTreeMapper.xml +++ b/bd-business/bd-business-bonus/src/main/resources/mapper/bonus/achieve/CuMemberTreeMapper.xml @@ -470,9 +470,9 @@ pk_share_awards number(4) default 10 not null, enable_status number(2) default 1 not null, system_type NUMBER(2) default 2 not null, - new_box_num number(8) default 0 not null, + new_box_num number(10,2) default 0 not null, new_consume_pv number(17,6) default 0 not null, - team_new_box_num number(8) default 0 not null, + team_new_box_num number(10,2) default 0 not null, team_new_pv number(17,6) default 0 not null, team_new_amount number(17,6) default 0 not null ) @@ -505,15 +505,15 @@ pk_country number(4) default 1 not null, system_type NUMBER(2) default 2 not null, pk_rate NUMBER(6), - new_box_num number(8) default 0 not null, - consume_box_num number(8) default 0 not null, - month_box_num number(8) default 0 not null, + new_box_num number(10,2) default 0 not null, + consume_box_num number(10,2) default 0 not null, + month_box_num number(10,2) default 0 not null, new_consume_pv number(17,6) default 0 not null, consume_pv number(17,6) default 0 not null, month_consume_pv number(17,6) default 0 not null, - team_new_box_num number(8) default 0 not null, - team_box_num number(8) default 0 not null, - team_month_box_num number(8) default 0 not null, + team_new_box_num number(10,2) default 0 not null, + team_box_num number(10,2) default 0 not null, + team_month_box_num number(10,2) default 0 not null, team_new_pv number(17,6) default 0 not null, team_consume_pv number(17,6) default 0 not null, team_month_pv number(17,6) default 0 not null, @@ -523,8 +523,8 @@ recommend_num number(8) default 0 not null, team_num number(8) default 0 not null, region_address number(8) default 0 not null, - big_box_num number(8) default 0 not null, - small_box_num number(8) default 0 not null, + big_box_num number(10,2) default 0 not null, + small_box_num number(10,2) default 0 not null, big_team_pv number(17,6) default 0 not null, small_team_pv number(17,6) default 0 not null ) diff --git a/bd-business/bd-business-bonus/src/main/resources/mapper/bonus/order/BonusOrderMapper.xml b/bd-business/bd-business-bonus/src/main/resources/mapper/bonus/order/BonusOrderMapper.xml index 7a6db564..7511475a 100644 --- a/bd-business/bd-business-bonus/src/main/resources/mapper/bonus/order/BonusOrderMapper.xml +++ b/bd-business/bd-business-bonus/src/main/resources/mapper/bonus/order/BonusOrderMapper.xml @@ -61,6 +61,7 @@ + @@ -155,7 +156,8 @@ nvl(st.wares_price,0) wares_price, nvl(bw.wares_code,'~') wares_code, nvl(st.wares_quantity,0) wares_quantity, - nvl(bw.area_income, 0) area_income + nvl(bw.area_income, 0) area_income, + nvl(bw.box_num, 0) box_num from sa_order so left join sa_order_wares st on so.pk_id = st.pk_order and st.wares_price > 0 diff --git a/bd-business/bd-business-report/src/main/java/com/hzs/report/member/mapper/MemberReportMapper.java b/bd-business/bd-business-report/src/main/java/com/hzs/report/member/mapper/MemberReportMapper.java index 1c952399..e2b7df5a 100644 --- a/bd-business/bd-business-report/src/main/java/com/hzs/report/member/mapper/MemberReportMapper.java +++ b/bd-business/bd-business-report/src/main/java/com/hzs/report/member/mapper/MemberReportMapper.java @@ -7,15 +7,8 @@ import org.apache.ibatis.annotations.Param; import java.util.Date; import java.util.List; -/** - * @BelongsProject: hzs_cloud - * @BelongsPackage: com.hzs.report.member.mapper - * @Author: yh - * @CreateTime: 2023-08-26 09:53 - * @Description: TODO - * @Version: 1.0 - */ public interface MemberReportMapper { + /** * 查询伞下直推新增业绩-查询会员 * @@ -27,31 +20,22 @@ public interface MemberReportMapper { @Param("endPayTime") Date endPayTime); /** - * @description: 查询伞下直推新增业绩-业绩 - * @author: zhang jing - * @date: 2023/9/6 14:10 - * @param: [pkMember, memberName, pkAwards, pkTeamCode, pkCountry, startPayTime, endPayTime, pkVertex] - * @return: java.util.List + * 查询伞下直推新增业绩-业绩 + * **/ List directPushNewAchieList(@Param("dpo") DirectPushNewVo dpo, @Param("pkMemberList") List pkMemberList); /** - * @description: 查询会员总盒数 - * @author: zhang jing - * @date: 2025/2/14 15:02 - * @param: [dpb, pkMemberList] - * @return: java.util.List + * 查询会员总盒数 + * **/ List directPushNewBoxList(@Param("dpo") DirectPushBoxVo dpb, @Param("dpbList") List dpbList); /** - * @description: 查询伞下直推新增业绩-业绩 - * @author: zhang jing - * @date: 2024/3/18 15:41 - * @param: [pkMember, startPayTime, endPayTime, pkCountry, monthList] - * @return: java.util.List + * 查询伞下直推新增业绩-业绩 + * **/ List directPushNewAchieUpList(@Param("dpo") DirectPushNewVo dpo, @Param("pkMemberList") List pkMemberList); @@ -76,11 +60,8 @@ public interface MemberReportMapper { List memberResettleAchieve(@Param("pkMember") Long pkMember, @Param("memberName") String memberName, @Param("startPayTime") Date startPayTime, @Param("endPayTime") Date endPayTime, @Param("pkVertex") Integer pkVertex, @Param("pkTeamCode") Integer pkTeamCode, @Param("pkCountry") Integer pkCountry, @Param("pkAwards") Integer pkAwards, @Param("orderTypeList") List orderTypeList); /** - * @description: 伞下新增安置业绩 - * @author: zhang jing - * @date: 2024/3/12 16:57 - * @param: [pkMember, memberName, startPayTime, endPayTime, pkVertex, pkTeamCode, pkCountry, pkAwards, orderTypeList] - * @return: java.util.List + * 伞下新增安置业绩 + * **/ List selectBrollyNewABAchieve(@Param("pkMember") Long pkMember, @Param("memberName") String memberName, @@ -165,14 +146,6 @@ public interface MemberReportMapper { */ List reportSummaryList(ReportSummaryVo reportSummaryVo); - /** - * 查询会员伞下订单左右区业绩 - * - * @param pkMember - * @return - */ - List brollyBelowResettle(@Param("pkMember") Long pkMember, @Param("startPayTime") Date startPayTime, @Param("endPayTime") Date endPayTime, @Param("orderTypeList") List orderTypeList); - /** * 出货明细汇总统计详情 * @@ -244,76 +217,39 @@ public interface MemberReportMapper { Integer sumQuantity(@Param("productName") String productName, @Param("pkClassify") Integer pkClassify, @Param("startTime") Date startTime, @Param("endTime") Date endTime, @Param("pkCountry") Integer pkCountry, @Param("orderTypeList") List orderTypeList); /** - * @description: 查询表是否存在 - * @author: zhang jing - * @date: 2024/4/7 16:10 - * @param: [tableName] - * @return: java.lang.Integer + * 查询表是否存在 **/ Integer selectExistTable(String tableName); /** - * @description: 查询直推会员 - * @author: zhang jing - * @date: 2025/2/7 16:10 - * @param: [pkMember] - * @return: java.util.List + * 查询直推会员 **/ List selectDirectPushByPkMember(@Param("pkMember") Long pkMember); /** - * @description: 查询会员业绩 - * @author: zhang jing - * @date: 2025/2/7 16:08 - * @param: [directPushNewVo] - * @return: com.hzs.report.member.vo.DirectPushNewVo + * 查询会员业绩 **/ DirectPushNewVo selectMemberOrderAchieveByPkMember(DirectPushNewVo directPushNewVo); - /** - * @description: 查询会员个人业绩金额 - * @author: zhang jing - * @date: 2025/2/13 11:31 - * @param: [directPushNewVo] - * @return: com.hzs.report.member.vo.DirectPushNewVo - **/ - DirectPushNewVo querMemberAchieveAmount(DirectPushNewVo directPushNewVo); - List selectMemberAchieve(DirectPushNewVo directPushNewVo); /** - * @description: 查询会员直推伞下业绩金额 - * @author: zhang jing - * @date: 2025/2/13 13:34 - * @param: [directPushNewVo] - * @return: java.util.List + * 查询会员直推伞下业绩金额 **/ List querMemberAchieveAmountTeam(DirectPushNewVo directPushNewVo); /** - * @description: 添加新的表 - * @author: zhang jing - * @date: 2025/2/25 16:20 - * @param: [tableName] - * @return: void + * 添加新的表 **/ void createCuMemberAmountBoxTable(String tableName); /** - * @description: 创建表字段索引 - * @author: zhang jing - * @date: 2025/2/25 16:20 - * @param: [tableName] - * @return: void + * 创建表字段索引 **/ - void createPkMemberIndex (@Param("indexName")String indexName,@Param("tableName")String tableName); + void createPkMemberIndex(@Param("indexName") String indexName, @Param("tableName") String tableName); /** - * @description: 查询订单金额,业绩,盒数,批量添加会员个人操作 - * @author: zhang jing - * @date: 2025/2/12 11:35 - * @param: [staDate, endDate, tableName, beforeTabeName, rangeTabeName] - * @return: int + * 查询订单金额,业绩,盒数,批量添加会员个人操作 **/ int innertMemberAmountBoxTable(@Param("staDate") String staDate, @Param("endDate") String endDate, @@ -322,11 +258,7 @@ public interface MemberReportMapper { @Param("rangeTabeName") String rangeTabeName); /** - * @description: 查询订单金额,业绩,盒数,批量添加会员伞下操作 - * @author: zhang jing - * @date: 2025/2/12 11:36 - * @param: [staDate, endDate, tableName, beforeTabeName, rangeTabeName] - * @return: int + * 查询订单金额,业绩,盒数,批量添加会员伞下操作 **/ int innertTeamAmountBoxTable(@Param("apb") DirectPushAmountPvBoxVo apb, @Param("staDate") String staDate, @@ -336,92 +268,33 @@ public interface MemberReportMapper { @Param("rangeTabeName") String rangeTabeName); /** - * @description: 查询会员订单 - * @author: zhang jing - * @date: 2025/2/12 15:59 - * @param: [staDate, endDate] - * @return: java.util.List + * 查询会员订单 **/ List querMemberOrder(@Param("staDate") String staDate, @Param("endDate") String endDate); /** - * @description: 7天重算删除会员统计业绩金额盒数表数据 - * @author: zhang jing - * @date: 2025/2/12 15:58 - * @param: [tableName] - * @return: void + * 7天重算删除会员统计业绩金额盒数表数据 **/ void delMemberAmountBox(@Param("tableName") String tableName); /** - * @description: 初始化会员直推金额业绩盒数数据 - * @author: zhang jing - * @date: 2025/2/14 17:41 - * @param: [tableName, rangeTabeName] - * @return: void + * 初始化会员直推金额业绩盒数数据 **/ - void washMemberAmountBox(@Param("tableName") String tableName,@Param("rangeTabeName") String rangeTabeName); + void washMemberAmountBox(@Param("tableName") String tableName, @Param("rangeTabeName") String rangeTabeName); /** - * @description: 将未激活的会员盒数更新为0 - * @author: zhang jing - * @date: 2025/2/14 17:41 - * @param: [tableName, rangeTabeName] - * @return: void + * 将未激活的会员盒数更新为0 **/ - void updMemberBox (@Param("tableName") String tableName,@Param("rangeTabeName") String rangeTabeName); + void updMemberBox(@Param("tableName") String tableName, @Param("rangeTabeName") String rangeTabeName); /** - * @description: 秒结表查询会员是否激活 - * @author: zhang jing - * @date: 2025/2/14 10:25 - * @param: [directPushBoxVo] - * @return: java.lang.Integer + * 秒结表查询会员是否激活 **/ List selectMemberActiveState(@Param("dpb") DirectPushBoxVo dpb, @Param("pkMemberList") List pkMemberList); /** - * @description: 查询结束日期总盒数 - * @author: zhang jing - * @date: 2025/2/14 12:00 - * @param: [directPushBoxVo] - * @return: java.lang.Integer - **/ - Integer selectMemberTotalBox(DirectPushBoxVo directPushBoxVo); - - /** - * 根据会员编号查询注水 - * - * @param memberCode 会员编号 - * @return Integer - */ - Integer selectWaterInjection(@Param("memberCode") String memberCode); - - /** - * @description: 查询会员注水的大区盒数 - * @author: zhang jing - * @date: 2025/2/14 13:22 - * @param: [directPushBoxVo] - * @return: java.lang.Integer - **/ - Integer selectMemberBoxWaterInjection(DirectPushBoxVo directPushBoxVo); - - /** - * @description: 查询会员没有注水的大区盒数 - * @author: zhang jing - * @date: 2025/2/14 13:24 - * @param: [directPushBoxVo] - * @return: java.lang.Integer - **/ - Integer selectMemberBoxNoWaterInjection(DirectPushBoxVo directPushBoxVo); - - /** - * @description: 查询直推会员信息 - * @author: zhang jing - * @date: 2025/2/17 15:49 - * @param: [directPushNewVo] - * @return: java.util.List + * 查询直推会员信息 **/ List querDirectPushDetails(DirectPushNewVo directPushNewVo); diff --git a/bd-business/bd-business-report/src/main/java/com/hzs/report/member/service/MemberReportService.java b/bd-business/bd-business-report/src/main/java/com/hzs/report/member/service/MemberReportService.java index 98d5ab2c..c3807acb 100644 --- a/bd-business/bd-business-report/src/main/java/com/hzs/report/member/service/MemberReportService.java +++ b/bd-business/bd-business-report/src/main/java/com/hzs/report/member/service/MemberReportService.java @@ -107,7 +107,6 @@ public interface MemberReportService { */ List getByDistrictOrderDistribution(Date startTime, Date endTime, Integer pkCountry); - /** * 出货明细汇总 * diff --git a/bd-business/bd-business-report/src/main/java/com/hzs/report/member/service/impl/MemberReportServiceImpl.java b/bd-business/bd-business-report/src/main/java/com/hzs/report/member/service/impl/MemberReportServiceImpl.java index a258d9a5..ae4dfb3b 100644 --- a/bd-business/bd-business-report/src/main/java/com/hzs/report/member/service/impl/MemberReportServiceImpl.java +++ b/bd-business/bd-business-report/src/main/java/com/hzs/report/member/service/impl/MemberReportServiceImpl.java @@ -184,7 +184,7 @@ public class MemberReportServiceImpl implements MemberReportService { * @return List */ private List getAchieveMonthTable(String startDate, String endDate) { - MonthAchieveVO monthAchieveVO = null; + MonthAchieveVO monthAchieveVO; List monthAchieveVOList = new ArrayList<>(); LocalDate startLocalDate = DateUtils.getStringToLocalDate(startDate); LocalDate endLocalDate = DateUtils.getStringToLocalDate(endDate); @@ -347,11 +347,6 @@ public class MemberReportServiceImpl implements MemberReportService { /** * 查询伞下业绩金额 - * - * @author: zhang jing - * @date: 2025/2/25 15:40 - * @param: [dpo] - * @return: java.util.List **/ private List querMemberAchieveAmountTeam(DirectPushNewVo dpo) { return memberReportMapper.querMemberAchieveAmountTeam(dpo); @@ -359,11 +354,6 @@ public class MemberReportServiceImpl implements MemberReportService { /** * 获取直推大区业绩、小区业绩 - * - * @author: zhang jing - * @date: 2025/2/7 16:21 - * @param: [memberAchieveList, rate] - * @return: com.hzs.report.member.vo.DirectPushNewVo **/ private DirectPushNewVo getMemberBigAndSmallAchieve(List memberAchieveList, BigDecimal rate) { //查询最大业绩 @@ -384,14 +374,8 @@ public class MemberReportServiceImpl implements MemberReportService { /** * 根据大业绩查询大小区盒数 - * - * @author: zhang jing - * @date: 2025/2/25 16:36 - * @param: [memberAchieveList, rate] - * @return: com.hzs.report.member.vo.DirectPushNewVo **/ private DirectPushBoxVo getMemberBigAndSmallBox(List memberAchieveList) { - // 2. 找到 ArealPv 最大的对象 DirectPushBoxVo maxAchieveVO = memberAchieveList.stream() .max(Comparator.comparing(DirectPushBoxVo::getArealPv)) @@ -576,17 +560,6 @@ public class MemberReportServiceImpl implements MemberReportService { } } - /** - * 查询会员当日极差秒表名 - * - * @return String - */ - private String getTableSName() { - String localDate = LocalDate.now().format(DateTimeFormatter.ofPattern("yyyy-MM-dd")); - int period = iCuMemberSettlePeriodService.getCuMemberSettlePeriodByDate(localDate).getPkId(); - return TableNameConstants.CU_MEMBER_RETAIL_S + period; - } - @Override public List selectMemberActiveState(DirectPushBoxVo dpbVo, List pkMemberList) { return memberReportMapper.selectMemberActiveState(dpbVo, pkMemberList); diff --git a/bd-business/bd-business-report/src/main/java/com/hzs/report/member/vo/DirectPushAmountPvBoxVo.java b/bd-business/bd-business-report/src/main/java/com/hzs/report/member/vo/DirectPushAmountPvBoxVo.java index a45bf337..1ac70ca6 100644 --- a/bd-business/bd-business-report/src/main/java/com/hzs/report/member/vo/DirectPushAmountPvBoxVo.java +++ b/bd-business/bd-business-report/src/main/java/com/hzs/report/member/vo/DirectPushAmountPvBoxVo.java @@ -9,11 +9,7 @@ import lombok.NoArgsConstructor; import java.math.BigDecimal; /** - * @description: 伞下直推查询会员大小区金额业绩盒数 - * @author: zhang jing - * @date: 2025/2/10 18:00 - * @param: - * @return: + * 伞下直推查询会员大小区金额业绩盒数 **/ @AllArgsConstructor @NoArgsConstructor @@ -21,7 +17,6 @@ import java.math.BigDecimal; @Data public class DirectPushAmountPvBoxVo { - private Long pkMember; /** * 金额 @@ -42,65 +37,59 @@ public class DirectPushAmountPvBoxVo { * 金额 */ @BigDecimalFormat() - private BigDecimal orderAmountReg=BigDecimal.ZERO; + private BigDecimal orderAmountReg = BigDecimal.ZERO; /** * 金额 */ @BigDecimalFormat() - private BigDecimal orderAmountUpg=BigDecimal.ZERO; + private BigDecimal orderAmountUpg = BigDecimal.ZERO; /** * 金额 */ @BigDecimalFormat() - private BigDecimal orderAmountRep=BigDecimal.ZERO; + private BigDecimal orderAmountRep = BigDecimal.ZERO; /** * 金额 */ @BigDecimalFormat() - private BigDecimal orderAmountCon=BigDecimal.ZERO; + private BigDecimal orderAmountCon = BigDecimal.ZERO; /** * 业绩 */ @BigDecimalFormat() - private BigDecimal orderAchieveReg=BigDecimal.ZERO; + private BigDecimal orderAchieveReg = BigDecimal.ZERO; /** * 业绩 */ @BigDecimalFormat() - private BigDecimal orderAchieveUpg=BigDecimal.ZERO; + private BigDecimal orderAchieveUpg = BigDecimal.ZERO; /** * 业绩 */ @BigDecimalFormat() - private BigDecimal orderAchieveRep=BigDecimal.ZERO; + private BigDecimal orderAchieveRep = BigDecimal.ZERO; /** * 业绩 */ @BigDecimalFormat() - private BigDecimal orderAchieveCon=BigDecimal.ZERO; + private BigDecimal orderAchieveCon = BigDecimal.ZERO; /** * 盒数 */ - private int boxNumReg; + private BigDecimal boxNumReg; /** * 盒数 */ - private int boxNumUpg; + private BigDecimal boxNumUpg; /** * 盒数 */ - private int boxNumRep; + private BigDecimal boxNumRep; /** * 盒数 */ - private int boxNumCon; - - - - - - + private BigDecimal boxNumCon; } diff --git a/bd-business/bd-business-report/src/main/resources/mapper/report/member/MemberReportMapper.xml b/bd-business/bd-business-report/src/main/resources/mapper/report/member/MemberReportMapper.xml index e6074edc..4387e03a 100644 --- a/bd-business/bd-business-report/src/main/resources/mapper/report/member/MemberReportMapper.xml +++ b/bd-business/bd-business-report/src/main/resources/mapper/report/member/MemberReportMapper.xml @@ -38,23 +38,23 @@ TEAM_REP_AMOUNT NUMBER(17,6) default 0 not null, TEAM_CON_AMOUNT NUMBER(17,6) default 0 not null, - SUM_BOX NUMBER(8) default 0, - BIG_BOX NUMBER(8) default 0, - SMALL_BOX NUMBER(8) default 0, - REG_BOX NUMBER(8) default 0, - UPG_BOX NUMBER(8) default 0, - REP_BOX NUMBER(8) default 0, - CON_BOX NUMBER(8) default 0, - INFLATE_BIG_BOX NUMBER(8) default 0, - INFLATE_SMALL_BOX NUMBER(8) default 0, + SUM_BOX NUMBER(10,2) default 0, + BIG_BOX NUMBER(10,2) default 0, + SMALL_BOX NUMBER(10,2) default 0, + REG_BOX NUMBER(10,2) default 0, + UPG_BOX NUMBER(10,2) default 0, + REP_BOX NUMBER(10,2) default 0, + CON_BOX NUMBER(10,2) default 0, + INFLATE_BIG_BOX NUMBER(10,2) default 0, + INFLATE_SMALL_BOX NUMBER(10,2) default 0, - TEAM_SUM_BOX NUMBER(18) default 0, - TEAM_BIG_BOX NUMBER(18) default 0, - TEAM_SMALL_BOX NUMBER(8) default 0, - TEAM_REG_BOX NUMBER(18) default 0, - TEAM_UPG_BOX NUMBER(18) default 0, - TEAM_REP_BOX NUMBER(18) default 0, - TEAM_CON_BOX NUMBER(18) default 0, + TEAM_SUM_BOX NUMBER(18,2) default 0, + TEAM_BIG_BOX NUMBER(18,2) default 0, + TEAM_SMALL_BOX NUMBER(10,2) default 0, + TEAM_REG_BOX NUMBER(18,2) default 0, + TEAM_UPG_BOX NUMBER(18,2) default 0, + TEAM_REP_BOX NUMBER(18,2) default 0, + TEAM_CON_BOX NUMBER(18,2) default 0, SUM_PV NUMBER(17,6) default 0 not null, BIG_PV NUMBER(17,6) default 0 not null, @@ -74,6 +74,7 @@ PK_COUNTRY NUMBER(4) not null + - - - - - - - - @@ -1566,100 +1450,98 @@ ) + CREATE INDEX ${indexName} ON ${tableName} (pk_member) - - merge into ${tableName} cmab using ( - SELECT - nvl(t.SUM_AMOUNT+ nvl(cmr.SUM_AMOUNT,0),0) SUM_AMOUNT, - nvl(t.REG_AMOUNT+ nvl(cmr.REG_AMOUNT,0),0) REG_AMOUNT, - nvl(t.UPG_AMOUNT+ nvl(cmr.UPG_AMOUNT,0),0) UPG_AMOUNT, - nvl(t.REP_AMOUNT+ nvl(cmr.REP_AMOUNT,0),0) REP_AMOUNT, - nvl(t.CON_AMOUNT+ nvl(cmr.CON_AMOUNT,0),0) CON_AMOUNT, + SELECT nvl(t.SUM_AMOUNT + nvl(cmr.SUM_AMOUNT, 0), 0) SUM_AMOUNT, + nvl(t.REG_AMOUNT + nvl(cmr.REG_AMOUNT, 0), 0) REG_AMOUNT, + nvl(t.UPG_AMOUNT + nvl(cmr.UPG_AMOUNT, 0), 0) UPG_AMOUNT, + nvl(t.REP_AMOUNT + nvl(cmr.REP_AMOUNT, 0), 0) REP_AMOUNT, + nvl(t.CON_AMOUNT + nvl(cmr.CON_AMOUNT, 0), 0) CON_AMOUNT, - nvl(t.SUM_PV+ nvl(cmr.SUM_PV,0),0)SUM_PV, - nvl(t.REG_PV+ nvl(cmr.REG_PV,0),0)REG_PV, - nvl(t.UPG_PV+ nvl(cmr.UPG_PV,0),0)UPG_PV, - nvl(t.REP_PV+ nvl(cmr.REP_PV,0),0)REP_PV, - nvl(t.CON_PV+ nvl(cmr.CON_PV,0),0)CON_PV, + nvl(t.SUM_PV + nvl(cmr.SUM_PV, 0), 0) SUM_PV, + nvl(t.REG_PV + nvl(cmr.REG_PV, 0), 0) REG_PV, + nvl(t.UPG_PV + nvl(cmr.UPG_PV, 0), 0) UPG_PV, + nvl(t.REP_PV + nvl(cmr.REP_PV, 0), 0) REP_PV, + nvl(t.CON_PV + nvl(cmr.CON_PV, 0), 0) CON_PV, - nvl(t.SUM_BOX+ nvl(cmr.SUM_BOX,0),0) SUM_BOX, - nvl(t.REG_BOX+ nvl(cmr.REG_BOX,0),0) REG_BOX, - nvl(t.UPG_BOX+ nvl(cmr.UPG_BOX,0),0) UPG_BOX, - nvl(t.REP_BOX+ nvl(cmr.REP_BOX,0),0) REP_BOX, - nvl(t.CON_BOX+ nvl(cmr.CON_BOX,0),0) CON_BOX, + nvl(t.SUM_BOX + nvl(cmr.SUM_BOX, 0), 0) SUM_BOX, + nvl(t.REG_BOX + nvl(cmr.REG_BOX, 0), 0) REG_BOX, + nvl(t.UPG_BOX + nvl(cmr.UPG_BOX, 0), 0) UPG_BOX, + nvl(t.REP_BOX + nvl(cmr.REP_BOX, 0), 0) REP_BOX, + nvl(t.CON_BOX + nvl(cmr.CON_BOX, 0), 0) CON_BOX, - t.pk_member, - t.pk_parent, - t.BIG_BOX_NUM, - t.SMALL_BOX_NUM, - t.PK_COUNTRY, - nvl(cmr.team_sum_amount,0) team_sum_amount, - nvl(cmr.team_REG_amount,0) team_REG_amount, - nvl(cmr.team_UPG_amount,0) team_UPG_amount, - nvl(cmr.team_REP_amount,0) team_REP_amount, - nvl(cmr.team_CON_amount,0) team_CON_amount, + t.pk_member, + t.pk_parent, + t.BIG_BOX_NUM, + t.SMALL_BOX_NUM, + t.PK_COUNTRY, + nvl(cmr.team_sum_amount, 0) team_sum_amount, + nvl(cmr.team_REG_amount, 0) team_REG_amount, + nvl(cmr.team_UPG_amount, 0) team_UPG_amount, + nvl(cmr.team_REP_amount, 0) team_REP_amount, + nvl(cmr.team_CON_amount, 0) team_CON_amount, - nvl(cmr.team_sum_pv,0) team_sum_pv, - nvl(cmr.team_REG_pv,0) team_REG_pv, - nvl(cmr.team_UPG_pv,0) team_UPG_pv, - nvl(cmr.team_REP_pv,0) team_REP_pv, - nvl(cmr.team_CON_pv,0) team_CON_pv, + nvl(cmr.team_sum_pv, 0) team_sum_pv, + nvl(cmr.team_REG_pv, 0) team_REG_pv, + nvl(cmr.team_UPG_pv, 0) team_UPG_pv, + nvl(cmr.team_REP_pv, 0) team_REP_pv, + nvl(cmr.team_CON_pv, 0) team_CON_pv, - nvl(cmr.team_sum_box,0) team_sum_box, - nvl(cmr.team_REG_box,0) team_REG_box, - nvl(cmr.team_UPG_box,0) team_UPG_box, - nvl(cmr.team_REP_box,0) team_REP_box, - nvl(cmr.team_CON_box,0) team_CON_box - FROM ( - SELECT SUM(nvl(so.ORDER_AMOUNT,0)) SUM_AMOUNT, - SUM(CASE WHEN so.order_type = 41 THEN nvl(so.ORDER_AMOUNT, 0) ELSE 0 END) AS REG_AMOUNT, - SUM(CASE WHEN so.order_type = 42 THEN nvl(so.ORDER_AMOUNT, 0) ELSE 0 END) AS UPG_AMOUNT, - SUM(CASE WHEN so.order_type = 43 THEN nvl(so.ORDER_AMOUNT, 0) ELSE 0 END) AS REP_AMOUNT, - SUM(CASE WHEN so.order_type = 44 THEN nvl(so.ORDER_AMOUNT, 0) ELSE 0 END) AS CON_AMOUNT, + nvl(cmr.team_sum_box, 0) team_sum_box, + nvl(cmr.team_REG_box, 0) team_REG_box, + nvl(cmr.team_UPG_box, 0) team_UPG_box, + nvl(cmr.team_REP_box, 0) team_REP_box, + nvl(cmr.team_CON_box, 0) team_CON_box + FROM ( + SELECT SUM(nvl(so.ORDER_AMOUNT, 0)) SUM_AMOUNT, + SUM(CASE WHEN so.order_type = 41 THEN nvl(so.ORDER_AMOUNT, 0) ELSE 0 END) AS REG_AMOUNT, + SUM(CASE WHEN so.order_type = 42 THEN nvl(so.ORDER_AMOUNT, 0) ELSE 0 END) AS UPG_AMOUNT, + SUM(CASE WHEN so.order_type = 43 THEN nvl(so.ORDER_AMOUNT, 0) ELSE 0 END) AS REP_AMOUNT, + SUM(CASE WHEN so.order_type = 44 THEN nvl(so.ORDER_AMOUNT, 0) ELSE 0 END) AS CON_AMOUNT, - SUM(nvl(so.ORDER_ACHIEVE,0)) SUM_PV, - SUM(CASE WHEN so.order_type = 41 THEN nvl(so.ORDER_ACHIEVE, 0) ELSE 0 END) AS REG_PV, - SUM(CASE WHEN so.order_type = 42 THEN nvl(so.ORDER_ACHIEVE, 0) ELSE 0 END) AS UPG_PV, - SUM(CASE WHEN so.order_type = 43 THEN nvl(so.ORDER_ACHIEVE, 0) ELSE 0 END) AS REP_PV, - SUM(CASE WHEN so.order_type = 44 THEN nvl(so.ORDER_ACHIEVE, 0) ELSE 0 END) AS CON_PV, + SUM(nvl(so.ORDER_ACHIEVE, 0)) SUM_PV, + SUM(CASE WHEN so.order_type = 41 THEN nvl(so.ORDER_ACHIEVE, 0) ELSE 0 END) AS REG_PV, + SUM(CASE WHEN so.order_type = 42 THEN nvl(so.ORDER_ACHIEVE, 0) ELSE 0 END) AS UPG_PV, + SUM(CASE WHEN so.order_type = 43 THEN nvl(so.ORDER_ACHIEVE, 0) ELSE 0 END) AS REP_PV, + SUM(CASE WHEN so.order_type = 44 THEN nvl(so.ORDER_ACHIEVE, 0) ELSE 0 END) AS CON_PV, - SUM(nvl(so.BOX_NUM,0)) SUM_BOX, - SUM(CASE WHEN so.order_type = 41 THEN nvl(so.BOX_NUM, 0) ELSE 0 END) AS REG_BOX, - SUM(CASE WHEN so.order_type = 42 THEN nvl(so.BOX_NUM, 0) ELSE 0 END) AS UPG_BOX, - SUM(CASE WHEN so.order_type = 43 THEN nvl(so.BOX_NUM, 0) ELSE 0 END) AS REP_BOX, - SUM(CASE WHEN so.order_type = 44 THEN nvl(so.BOX_NUM, 0) ELSE 0 END) AS CON_BOX, - rag.pk_member, - rag.pk_parent, - SUM(nvl(rag.BIG_BOX_NUM,0)) BIG_BOX_NUM, - SUM(nvl(rag.SMALL_BOX_NUM,0)) SMALL_BOX_NUM, - rag.PK_COUNTRY - FROM ${rangeTabeName} rag - left join sa_order so on rag.pk_member=so.pk_member and so.del_flag=0 AND so.ORDER_STATUS=1 - AND so.PAY_TIME >= to_date(#{staDate}, 'yyyy-mm-dd') - AND so.PAY_TIME <= to_date(#{endDate} || ' 23:59:59', 'yyyy-mm-dd hh24:mi:ss') - GROUP BY rag.pk_member, rag.pk_parent,rag.PK_COUNTRY - ) t - left JOIN ${beforeTabeName} cmr ON cmr.pk_member=t.pk_member - ) tmp + SUM(nvl(so.BOX_NUM, 0)) SUM_BOX, + SUM(CASE WHEN so.order_type = 41 THEN nvl(so.BOX_NUM, 0) ELSE 0 END) AS REG_BOX, + SUM(CASE WHEN so.order_type = 42 THEN nvl(so.BOX_NUM, 0) ELSE 0 END) AS UPG_BOX, + SUM(CASE WHEN so.order_type = 43 THEN nvl(so.BOX_NUM, 0) ELSE 0 END) AS REP_BOX, + SUM(CASE WHEN so.order_type = 44 THEN nvl(so.BOX_NUM, 0) ELSE 0 END) AS CON_BOX, + rag.pk_member, + rag.pk_parent, + SUM(nvl(rag.BIG_BOX_NUM, 0)) BIG_BOX_NUM, + SUM(nvl(rag.SMALL_BOX_NUM, 0)) SMALL_BOX_NUM, + rag.PK_COUNTRY + FROM ${rangeTabeName} rag + left join sa_order so on rag.pk_member = so.pk_member and so.del_flag = 0 AND so.ORDER_STATUS = 1 + AND so.PAY_TIME >= to_date(#{staDate}, 'yyyy-mm-dd') + AND so.PAY_TIME <= to_date(#{endDate} || ' 23:59:59', 'yyyy-mm-dd hh24:mi:ss') + GROUP BY rag.pk_member, rag.pk_parent, rag.PK_COUNTRY + ) t + left JOIN ${beforeTabeName} cmr ON cmr.pk_member = t.pk_member + ) tmp on (cmab.pk_member = tmp.pk_member) when not matched then insert - (PK_MEMBER,PK_PARENT,SUM_AMOUNT,REG_AMOUNT,UPG_AMOUNT,REP_AMOUNT,CON_AMOUNT, - SUM_BOX,REG_BOX,UPG_BOX,REP_BOX,CON_BOX, - SUM_PV,REG_PV,UPG_PV,REP_PV,CON_PV, - PK_COUNTRY, - TEAM_SUM_AMOUNT,TEAM_REG_AMOUNT,TEAM_UPG_AMOUNT,TEAM_REP_AMOUNT,TEAM_CON_AMOUNT, - TEAM_SUM_BOX,TEAM_REG_BOX,TEAM_UPG_BOX,TEAM_REP_BOX,TEAM_CON_BOX, - TEAM_SUM_PV,TEAM_REG_PV,TEAM_UPG_PV,TEAM_REP_PV,TEAM_CON_PV,BIG_BOX,SMALL_BOX - ) + (PK_MEMBER, PK_PARENT, SUM_AMOUNT, REG_AMOUNT, UPG_AMOUNT, REP_AMOUNT, CON_AMOUNT, + SUM_BOX, REG_BOX, UPG_BOX, REP_BOX, CON_BOX, + SUM_PV, REG_PV, UPG_PV, REP_PV, CON_PV, + PK_COUNTRY, + TEAM_SUM_AMOUNT, TEAM_REG_AMOUNT, TEAM_UPG_AMOUNT, TEAM_REP_AMOUNT, TEAM_CON_AMOUNT, + TEAM_SUM_BOX, TEAM_REG_BOX, TEAM_UPG_BOX, TEAM_REP_BOX, TEAM_CON_BOX, + TEAM_SUM_PV, TEAM_REG_PV, TEAM_UPG_PV, TEAM_REP_PV, TEAM_CON_PV, BIG_BOX, SMALL_BOX + ) values (tmp.pk_member, tmp.PK_PARENT, tmp.SUM_AMOUNT, @@ -1667,13 +1549,11 @@ tmp.UPG_AMOUNT, tmp.REP_AMOUNT, tmp.CON_AMOUNT, - tmp.SUM_BOX, tmp.REG_BOX, tmp.UPG_BOX, tmp.REP_BOX, tmp.CON_BOX, - tmp.SUM_PV, tmp.REG_PV, tmp.UPG_PV, @@ -1685,64 +1565,59 @@ tmp.TEAM_UPG_AMOUNT, tmp.TEAM_REP_AMOUNT, tmp.TEAM_CON_AMOUNT, - tmp.TEAM_SUM_BOX, tmp.TEAM_REG_BOX, tmp.TEAM_UPG_BOX, tmp.TEAM_REP_BOX, tmp.TEAM_CON_BOX, - tmp.TEAM_SUM_PV, tmp.TEAM_REG_PV, tmp.TEAM_UPG_PV, tmp.TEAM_REP_PV, tmp.TEAM_CON_PV, tmp.BIG_BOX_NUM, - tmp.SMALL_BOX_NUM - ) + tmp.SMALL_BOX_NUM) when matched then update set - cmab.SUM_AMOUNT = tmp.SUM_AMOUNT, - cmab.REG_AMOUNT = tmp.REG_AMOUNT, - cmab.UPG_AMOUNT = tmp.UPG_AMOUNT, - cmab.REP_AMOUNT = tmp.REP_AMOUNT, - cmab.CON_AMOUNT = tmp.CON_AMOUNT, + cmab.SUM_AMOUNT = tmp.SUM_AMOUNT, + cmab.REG_AMOUNT = tmp.REG_AMOUNT, + cmab.UPG_AMOUNT = tmp.UPG_AMOUNT, + cmab.REP_AMOUNT = tmp.REP_AMOUNT, + cmab.CON_AMOUNT = tmp.CON_AMOUNT, - cmab.SUM_BOX = tmp.SUM_BOX, - cmab.REG_BOX = tmp.REG_BOX, - cmab.UPG_BOX = tmp.UPG_BOX, - cmab.REP_BOX = tmp.REP_BOX, - cmab.CON_BOX = tmp.CON_BOX, + cmab.SUM_BOX = tmp.SUM_BOX, + cmab.REG_BOX = tmp.REG_BOX, + cmab.UPG_BOX = tmp.UPG_BOX, + cmab.REP_BOX = tmp.REP_BOX, + cmab.CON_BOX = tmp.CON_BOX, - cmab.SUM_PV = tmp.SUM_PV, - cmab.REG_PV = tmp.REG_PV, - cmab.UPG_PV = tmp.UPG_PV, - cmab.REP_PV = tmp.REP_PV, - cmab.CON_PV = tmp.CON_PV, + cmab.SUM_PV = tmp.SUM_PV, + cmab.REG_PV = tmp.REG_PV, + cmab.UPG_PV = tmp.UPG_PV, + cmab.REP_PV = tmp.REP_PV, + cmab.CON_PV = tmp.CON_PV, - cmab.TEAM_SUM_AMOUNT = tmp.TEAM_SUM_AMOUNT, - cmab.TEAM_REG_AMOUNT = tmp.TEAM_REG_AMOUNT, - cmab.TEAM_UPG_AMOUNT = tmp.TEAM_UPG_AMOUNT, - cmab.TEAM_REP_AMOUNT = tmp.TEAM_REP_AMOUNT, - cmab.TEAM_CON_AMOUNT = tmp.TEAM_CON_AMOUNT, + cmab.TEAM_SUM_AMOUNT = tmp.TEAM_SUM_AMOUNT, + cmab.TEAM_REG_AMOUNT = tmp.TEAM_REG_AMOUNT, + cmab.TEAM_UPG_AMOUNT = tmp.TEAM_UPG_AMOUNT, + cmab.TEAM_REP_AMOUNT = tmp.TEAM_REP_AMOUNT, + cmab.TEAM_CON_AMOUNT = tmp.TEAM_CON_AMOUNT, - cmab.TEAM_SUM_BOX = tmp.TEAM_SUM_BOX, - cmab.TEAM_REG_BOX = tmp.TEAM_REG_BOX, - cmab.TEAM_UPG_BOX = tmp.TEAM_UPG_BOX, - cmab.TEAM_REP_BOX = tmp.TEAM_REP_BOX, - cmab.TEAM_CON_BOX = tmp.TEAM_CON_BOX, - - cmab.TEAM_SUM_PV = tmp.TEAM_SUM_PV, - cmab.TEAM_REG_PV = tmp.TEAM_REG_PV, - cmab.TEAM_UPG_PV = tmp.TEAM_UPG_PV, - cmab.TEAM_REP_PV = tmp.TEAM_REP_PV, - cmab.TEAM_CON_PV = tmp.TEAM_CON_PV, - cmab.BIG_BOX = tmp.BIG_BOX_NUM, - cmab.SMALL_BOX = tmp.SMALL_BOX_NUM + cmab.TEAM_SUM_BOX = tmp.TEAM_SUM_BOX, + cmab.TEAM_REG_BOX = tmp.TEAM_REG_BOX, + cmab.TEAM_UPG_BOX = tmp.TEAM_UPG_BOX, + cmab.TEAM_REP_BOX = tmp.TEAM_REP_BOX, + cmab.TEAM_CON_BOX = tmp.TEAM_CON_BOX, + cmab.TEAM_SUM_PV = tmp.TEAM_SUM_PV, + cmab.TEAM_REG_PV = tmp.TEAM_REG_PV, + cmab.TEAM_UPG_PV = tmp.TEAM_UPG_PV, + cmab.TEAM_REP_PV = tmp.TEAM_REP_PV, + cmab.TEAM_CON_PV = tmp.TEAM_CON_PV, + cmab.BIG_BOX = tmp.BIG_BOX_NUM, + cmab.SMALL_BOX = tmp.SMALL_BOX_NUM - merge into ${tableName} cmab @@ -1798,66 +1673,73 @@ cmab.TEAM_REP_PV = tmp.TEAM_REP_PV, cmab.TEAM_CON_PV = tmp.TEAM_CON_PV - - - + + + + + - delete from ${tableName} + delete + from ${tableName} - update ${tableName} set SUM_BOX=0,TEAM_SUM_BOX=0 where PK_MEMBER in( - select PK_MEMBER from ${rangeTabeName} rag where enable_status=1 + update ${tableName} + set SUM_BOX = 0, + TEAM_SUM_BOX = 0 + where PK_MEMBER in ( + select PK_MEMBER + from ${rangeTabeName} rag + where enable_status = 1 ) - + merge into ${tableName} cmab - using ( SELECT rag.pk_member, - rag.pk_parent, - rag.CONSUME_PV SUM_PV, - rag.CONSUME_BOX_NUM SUM_BOX, - rag.TEAM_CONSUME_PV TEAM_SUM_PV, - rag.TEAM_BOX_NUM TEAM_SUM_BOX, - rag.TEAM_CONSUME_AMOUNT TEAM_SUM_AMOUNT, - rag.BIG_BOX_NUM AS INFLATE_BIG_BOX, - rag.SMALL_BOX_NUM AS INFLATE_SMALL_BOX, - rag.PK_COUNTRY - FROM ${rangeTabeName} rag - ) tmp + using (SELECT rag.pk_member, + rag.pk_parent, + rag.CONSUME_PV SUM_PV, + rag.CONSUME_BOX_NUM SUM_BOX, + rag.TEAM_CONSUME_PV TEAM_SUM_PV, + rag.TEAM_BOX_NUM TEAM_SUM_BOX, + rag.TEAM_CONSUME_AMOUNT TEAM_SUM_AMOUNT, + rag.BIG_BOX_NUM AS INFLATE_BIG_BOX, + rag.SMALL_BOX_NUM AS INFLATE_SMALL_BOX, + rag.PK_COUNTRY + FROM ${rangeTabeName} rag + ) tmp on (cmab.pk_member = tmp.pk_member) when not matched then insert - (PK_MEMBER,PK_PARENT,SUM_PV,SUM_BOX,TEAM_SUM_PV,TEAM_SUM_BOX,TEAM_SUM_AMOUNT, - INFLATE_BIG_BOX, - INFLATE_SMALL_BOX, - PK_COUNTRY) + (PK_MEMBER, PK_PARENT, SUM_PV, SUM_BOX, TEAM_SUM_PV, TEAM_SUM_BOX, TEAM_SUM_AMOUNT, + INFLATE_BIG_BOX, + INFLATE_SMALL_BOX, + PK_COUNTRY) values (tmp.pk_member, tmp.PK_PARENT, tmp.SUM_PV, @@ -1867,92 +1749,34 @@ tmp.TEAM_SUM_AMOUNT, tmp.INFLATE_BIG_BOX, tmp.INFLATE_SMALL_BOX, - tmp.PK_COUNTRY - ) + tmp.PK_COUNTRY) when matched then update set cmab.SUM_BOX = tmp.SUM_BOX, - cmab.SUM_PV = tmp.SUM_PV, - cmab.TEAM_SUM_PV=tmp.TEAM_SUM_PV, - cmab.TEAM_SUM_BOX=tmp.TEAM_SUM_BOX, - cmab.TEAM_SUM_AMOUNT=tmp.TEAM_SUM_AMOUNT, - cmab.INFLATE_BIG_BOX=tmp.INFLATE_BIG_BOX, - cmab.INFLATE_SMALL_BOX=tmp.INFLATE_SMALL_BOX + cmab.SUM_PV = tmp.SUM_PV, + cmab.TEAM_SUM_PV = tmp.TEAM_SUM_PV, + cmab.TEAM_SUM_BOX = tmp.TEAM_SUM_BOX, + cmab.TEAM_SUM_AMOUNT = tmp.TEAM_SUM_AMOUNT, + cmab.INFLATE_BIG_BOX = tmp.INFLATE_BIG_BOX, + cmab.INFLATE_SMALL_BOX = tmp.INFLATE_SMALL_BOX - - - - + + SELECT min(t0.enable_status) enableStatus, + #{pkMember} pkMember + FROM (SELECT mr.enable_status + FROM ${dpb.memberRetailTable} mr + where mr.pk_member = #{pkMember} + union all - select NVL(rs.new_box_num + rs.team_new_box_num, 0) totalAreaBox - from ${memberRetailSTable} rs - where rs.pk_member = #{pkMember} + SELECT mrs.enable_status + FROM ${dpb.memberRetailSTable} mrs + where mrs.pk_member = #{pkMember} - ) - + ) t0 + - - - - - @@ -2003,6 +1827,4 @@ - - diff --git a/bd-business/bd-business-sale/src/main/java/com/hzs/retail/sale/controller/api/ApiRetailOrderController.java b/bd-business/bd-business-sale/src/main/java/com/hzs/retail/sale/controller/api/ApiRetailOrderController.java index cc89b47f..c4b592b2 100644 --- a/bd-business/bd-business-sale/src/main/java/com/hzs/retail/sale/controller/api/ApiRetailOrderController.java +++ b/bd-business/bd-business-sale/src/main/java/com/hzs/retail/sale/controller/api/ApiRetailOrderController.java @@ -599,7 +599,6 @@ public class ApiRetailOrderController { .channel(shoppingCartRedis.getSource()) .waresCode(shoppingCartRedis.getWaresCode()) .quantity(shoppingCartRedis.getNumber()) - .pkMakerSpace(shoppingCartRedis.getPkMakerSpace()) .build(); List waresItemsParamList = new ArrayList<>(shoppingCartRedis.getProductGroup().size()); for (ProductGroup productGroup : shoppingCartRedis.getProductGroup()) { diff --git a/bd-business/bd-business-sale/src/main/java/com/hzs/retail/sale/controller/service/impl/RetailOrderServiceImpl.java b/bd-business/bd-business-sale/src/main/java/com/hzs/retail/sale/controller/service/impl/RetailOrderServiceImpl.java index a1e5bfa2..49c612fd 100644 --- a/bd-business/bd-business-sale/src/main/java/com/hzs/retail/sale/controller/service/impl/RetailOrderServiceImpl.java +++ b/bd-business/bd-business-sale/src/main/java/com/hzs/retail/sale/controller/service/impl/RetailOrderServiceImpl.java @@ -226,37 +226,11 @@ public class RetailOrderServiceImpl implements IRetailOrderService { return saOrderExt; } - /** - * 获取升级价格 - * - * @param gradeList 等级列表 - * @param boxNum 购买盒数 - * @param baseBoxNum 基础盒数 - * @param updateGrade 升级等级 - * @return - */ - private BigDecimal getUpGradePrice(List gradeList, int boxNum, int baseBoxNum, BdGrade updateGrade) { - BigDecimal price; - if (null != updateGrade) { - // V4、V5直接给固定价格,不会因升级变动 - if (updateGrade.getGradeValue() == EGrade.S_VIP.getValue()) { - price = ERetailWaresPrice.V5.getPrice(); - } else if (updateGrade.getGradeValue() == EGrade.VIP.getValue()) { - price = ERetailWaresPrice.V4.getPrice(); - } else { - price = this.getWaresPrice(baseBoxNum + boxNum, gradeList); - } - } else { - price = this.getWaresPrice(baseBoxNum + boxNum, gradeList); - } - return price; - } - @Override public List createSaOrderItems(RetailOrderParam orderParam, List gradeList, CuMember cuMember, SaOrderExt saOrderExt, CurrencyDTO currency) { // 需要查询盒数商品 - List boxProductList = BoxProductUtil.getBoxProductListBySystemType(null); + List boxWaresList = BoxProductUtil.getBoxWaresListBySystemType(null); // 订单明细信息 List orderItemsList = new ArrayList<>(); @@ -291,7 +265,7 @@ public class RetailOrderServiceImpl implements IRetailOrderService { // } // 当前盒数 - int boxNum = 0; + BigDecimal boxNum = BigDecimal.ZERO; // // 2025.03.11 添加需求,复购专区、重消专区,指定盒数商品每用户每月限购50件 // this.checkWaresLimit(cuMember.getPkId(), orderParam.getSpecialArea(), waresDetailExtList, boxProductList); @@ -315,9 +289,9 @@ public class RetailOrderServiceImpl implements IRetailOrderService { saOrderHandle.setPostageTmpMap(orderParam.getTranType(), postageMap, waresDetailExt, orderItems); } - if (boxProductList.contains(waresDetailExt.getWaresCode())) { + if (boxWaresList.contains(waresDetailExt.getWaresCode())) { // 商品是盒数商品,需要累计数量 - boxNum += orderItems.getWaresQuantity(); + boxNum = boxNum.add(waresDetailExt.getBoxNum().multiply(new BigDecimal(orderItems.getWaresQuantity()))); } } @@ -478,26 +452,6 @@ public class RetailOrderServiceImpl implements IRetailOrderService { } } - /** - * 根据购买盒数,返回商品价格 - * - * @param boxNum 盒数 - * @param gradeList 等级列表(倒序排序) - * @return - */ - private BigDecimal getWaresPrice(int boxNum, List gradeList) { - // 去掉升级条件带有累计盒数的(V4,V5)并且升级购买合数小于等于订单商品盒数的,再进行等级值倒序排序 - gradeList = gradeList.stream().filter(tmpGrade -> tmpGrade.getBoxTotal() == 0 && tmpGrade.getBoxNumber() <= boxNum).sorted(Comparator.comparingInt(BdGrade::getGradeValue).reversed()).collect(Collectors.toList()); - - for (BdGrade bdGrade : gradeList) { - if (boxNum > bdGrade.getBoxNumber()) { - // 盒数大于等于购买盒数 - return ERetailWaresPrice.getEnumByValue(bdGrade.getGradeValue()).getPrice(); - } - } - return ERetailWaresPrice.V0.getPrice(); - } - /** * 封装订单信息 * @@ -807,7 +761,7 @@ public class RetailOrderServiceImpl implements IRetailOrderService { Map waresLimitMap = new HashMap<>(); // 盒数商品 - List boxProductList = BoxProductUtil.getBoxProductListBySystemType(saOrderExt.getSystemType()); + List boxProductList = BoxProductUtil.getBoxWaresListBySystemType(saOrderExt.getSystemType()); for (SaOrderItems saOrderItems : saOrderExt.getOrderItemsList()) { saOrderItems.setPkOrder(saOrderExt.getPkId()); @@ -933,7 +887,7 @@ public class RetailOrderServiceImpl implements IRetailOrderService { && (EOrderType.RETAIL_REGISTER.getValue() == saOrder.getOrderType() || EOrderType.RETAIL_UPGRADE.getValue() == saOrder.getOrderType()) ) { // 会员激活状态为空 或 未激活,并且是 注册、升级 订单,判断会员是否激活 - if (saOrder.getBoxNum() > 0) { + if (saOrder.getBoxNum().compareTo(BigDecimal.ZERO) > 0) { // 存在指定盒数商品 cuMember.setIsActivate(EYesNo.YES.getIntValue()); if (EPayStatus.UNPAID.getValue() == cuMember.getPayStatus()) { diff --git a/bd-business/bd-business-sale/src/main/java/com/hzs/sale/order/controller/ParentOrderController.java b/bd-business/bd-business-sale/src/main/java/com/hzs/sale/order/controller/ParentOrderController.java index 18753424..5820e39d 100644 --- a/bd-business/bd-business-sale/src/main/java/com/hzs/sale/order/controller/ParentOrderController.java +++ b/bd-business/bd-business-sale/src/main/java/com/hzs/sale/order/controller/ParentOrderController.java @@ -40,7 +40,6 @@ import com.hzs.sale.wares.service.IBdWaresDetailService; import com.hzs.scm.pub.IScmBillServiceApi; import com.hzs.system.base.IAreaServiceApi; import com.hzs.system.base.ICurrencyServiceApi; -import com.hzs.system.base.dto.CurrencyDTO; import lombok.extern.slf4j.Slf4j; import org.apache.dubbo.config.annotation.DubboReference; import org.springframework.beans.factory.annotation.Autowired; @@ -98,24 +97,19 @@ public abstract class ParentOrderController extends BaseController { return orderItemsService; } - /** + * 根据code、编码获取值 + * * @param code 查询的code - * @Description: 根据code、编码获取值 - * @return: CuMember - * @Author: sui q - * @Date: 2022/8/30 8:48 */ protected CuMember getCuMemberByCode(String code) { return orderService.getCuMemberByCode(code); } /** + * 验证字段是否必输 + * * @param fieldList 需要验证的字段 - * @Description: 验证字段是否必输 - * @return: boolean - * @Author: sui q - * @Date: 2022/8/29 11:13 */ protected boolean validateFieldNotNull(OrderParam orderParam, List fieldList) { return fieldList.stream().anyMatch(field -> { @@ -125,11 +119,9 @@ public abstract class ParentOrderController extends BaseController { } /** + * 验证手机号+姓名 + * * @param orderParam 手机号、姓名、安置人必输 - * @Description: 验证手机号+姓名 - * @return: AjaxResult - * @Author: sui q - * @Date: 2022/8/27 16:51 */ protected AjaxResult validatePhone(OrderParam orderParam) { if (StringUtils.isEmpty(orderParam.getPhone()) || StringUtils.isEmpty(orderParam.getMemberName())) { @@ -190,11 +182,9 @@ public abstract class ParentOrderController extends BaseController { } /** + * 验证推荐编号,成功后返回姓名,如果首单返回安置人、安置部门 + * * @param orderParam 必须推荐人 - * @Description: 验证推荐编号,成功后返回姓名,如果首单返回安置人、安置部门 - * @return: AjaxResult - * @Author: sui q - * @Date: 2022/8/27 16:53 */ protected AjaxResult validateReferenceRelation(OrderParam orderParam) { if (StringUtils.isEmpty(orderParam.getParent())) { @@ -264,11 +254,9 @@ public abstract class ParentOrderController extends BaseController { } /** + * 验证安置编号、安置部门,成功后返回姓名 + * * @param orderParam 必须安置人 - * @Description: 验证安置编号、安置部门,成功后返回姓名 - * @return: AjaxResult - * @Author: sui q - * @Date: 2022/8/27 16:53 */ protected AjaxResult validatePlaceParentMemberCode(OrderParam orderParam) { if (StringUtils.isEmpty(orderParam.getParent())) { @@ -341,11 +329,9 @@ public abstract class ParentOrderController extends BaseController { } /** + * 验证需要注册的信息, 订单保存时需要调用的验证 + * * @param orderParam 所有信息 - * @Description: 验证需要注册的信息, 订单保存时需要调用的验证 - * @return: AjaxResult - * @Author: sui q - * @Date: 2022/9/2 16:15 */ protected AjaxResult validateSaveMember(OrderParam orderParam) { // 安置编号 @@ -375,9 +361,6 @@ public abstract class ParentOrderController extends BaseController { /* * 验证可用量,可用量不足,不能下单 - * @author: sui q - * @date: 2023/12/14 17:49 - * @param: null null **/ protected String validateAvailableNum(OrderParam orderParam, String orderCode) { // 验证是否控制进销存 @@ -468,12 +451,10 @@ public abstract class ParentOrderController extends BaseController { } /** + * 对安置位置进行加锁预防位置重复 + * * @param placeParentId 安置人 * @param placeDept 安置位置 - * @Description: 对安置位置进行加锁预防位置重复 - * @return: void - * @Author: sui q - * @Date: 2022/9/5 9:20 */ protected boolean validatePlacePosition(Long placeParentId, Integer placeDept) { // 验证通过对安置人,安置部门加锁,防止同时安置引起错误,最后解锁 @@ -483,10 +464,6 @@ public abstract class ParentOrderController extends BaseController { /** * @param placeParentId 安置位置 * @param placeDept 安置部门 - * @Description: - * @return: String - * @Author: sui q - * @Date: 2022/9/5 10:35 */ private String getLockKey(Long placeParentId, Integer placeDept) { return CacheConstants.POSITION + @@ -495,11 +472,9 @@ public abstract class ParentOrderController extends BaseController { } /** + * 空单注册 验证权限,验证编号是否有报单权限 + * * @param centerCodeId 验证的权限 - * @Description: 空单注册 验证权限,验证编号是否有报单权限 - * @return: AjaxResult - * @Author: sui q - * @Date: 2022/8/27 16:53 */ protected AjaxResult validateRegisterAuthority(Long centerCodeId, Integer specialArea) { // 前台登录验证登录会员,后台空点验证输入的报单人 @@ -580,10 +555,6 @@ public abstract class ParentOrderController extends BaseController { * 验证手机号注册次数 * * @param cuMemberExtList 会员数量 - * @Description: - * @return: Boolean - * @Author: sui q - * @Date: 2022/8/29 11:38 */ private Boolean validatePhoneCount(List cuMemberExtList) { // 判断次数,获取系统参数,从redis中获取系统参数 @@ -621,11 +592,9 @@ public abstract class ParentOrderController extends BaseController { } /** + * 验证升级关系,只能给自己或者自己安置伞下升级 + * * @param orderParam 前台传递的参数 - * @Description: 验证升级关系,只能给自己或者自己安置伞下升级 - * @return: boolean - * @Author: sui q - * @Date: 2023/1/10 14:05 */ protected AjaxResult validateUpgradeRelation(OrderParam orderParam) { CuMember upgradeMember = orderService.getCuMemberByCode(orderParam.getUpgradeMemberCode()); @@ -659,27 +628,16 @@ public abstract class ParentOrderController extends BaseController { } /** + * 查询订单返回值,用于支付 + * * @param saOrder 订单 * @param orderParam 参数 - * @Description: 查询订单返回值,用于支付 - * @return: OrderReturn - * @Author: sui q - * @Date: 2023/2/2 11:11 */ protected OrderReturn getOrderReturn(SaOrder saOrder, OrderParam orderParam) { // 封装订单信息 long maxPayTime = getOrderService().getIsToBePayTime(orderParam.getPkSettleCountry(), saOrder.getOrderType()); - // 剩余支付秒数 //查询带关闭参数 - // 获取行政区划map - Integer pkLoginCountry = orderParam.getPkLoginSettleCountry(); BigDecimal orderAmount = saOrder.getOrderAmount(); - if (!Objects.equals(pkLoginCountry, saOrder.getPkCountry())) { - // 结算国当地币 转美金 美金登录当地币 - CurrencyDTO loginCountryCurrency = currencyServiceApi.getCurrency(pkLoginCountry).getData(); - CurrencyDTO settleCountryCurrency = currencyServiceApi.getCurrency(saOrder.getPkCountry()).getData(); - orderAmount = ComputeUtil.computeMultiply(ComputeUtil.computeDivide(orderAmount, settleCountryCurrency.getInExchangeRate()), loginCountryCurrency.getInExchangeRate()); - } Map areaMap = iAreaServiceApi.getAreaMap(orderParam.getPkSettleCountry()).getData(); OrderReturn orderReturn = OrderReturn.builder() .orderCode(saOrder.getOrderCode()) @@ -724,7 +682,6 @@ public abstract class ParentOrderController extends BaseController { .channel(shoppingCartRedis.getSource()) .waresCode(shoppingCartRedis.getWaresCode()) .quantity(shoppingCartRedis.getNumber()) - .pkMakerSpace(shoppingCartRedis.getPkMakerSpace()) .build(); List waresItemsParamList = new ArrayList<>(shoppingCartRedis.getProductGroup().size()); for (ProductGroup productGroup : shoppingCartRedis.getProductGroup()) { diff --git a/bd-business/bd-business-sale/src/main/java/com/hzs/sale/order/controller/manager/SaOrderBusinessController.java b/bd-business/bd-business-sale/src/main/java/com/hzs/sale/order/controller/manager/SaOrderBusinessController.java index 401f32db..7f33d91f 100644 --- a/bd-business/bd-business-sale/src/main/java/com/hzs/sale/order/controller/manager/SaOrderBusinessController.java +++ b/bd-business/bd-business-sale/src/main/java/com/hzs/sale/order/controller/manager/SaOrderBusinessController.java @@ -671,11 +671,11 @@ public class SaOrderBusinessController extends BaseController { return AjaxResult.error(checkStr); } - // 校验盒数商品与非盒数商品不能互换 - checkStr = iOrderBusinessService.checkOrderRetailProduct(param); - if (null != checkStr) { - return AjaxResult.error(checkStr); - } +// // 校验盒数商品与非盒数商品不能互换 +// checkStr = iOrderBusinessService.checkOrderRetailProduct(param); +// if (null != checkStr) { +// return AjaxResult.error(checkStr); +// } // 确认调换货物并发起审批 String str = iOrderBusinessService.changeProductApprovalSubmit(param, userTokenService.getLoginUser()); @@ -722,11 +722,11 @@ public class SaOrderBusinessController extends BaseController { return AjaxResult.error(checkStr); } - // 校验盒数商品与非盒数商品不能互换 - checkStr = iOrderBusinessService.checkOrderRetailProduct(param); - if (null != checkStr) { - return AjaxResult.error(checkStr); - } +// // 校验盒数商品与非盒数商品不能互换 +// checkStr = iOrderBusinessService.checkOrderRetailProduct(param); +// if (null != checkStr) { +// return AjaxResult.error(checkStr); +// } // 调换货物不走签呈 String str = iOrderBusinessService.changeProductApprovalFreeSign(param, userTokenService.getLoginUser()); diff --git a/bd-business/bd-business-sale/src/main/java/com/hzs/sale/order/mapper/SaOrderItemsMapper.java b/bd-business/bd-business-sale/src/main/java/com/hzs/sale/order/mapper/SaOrderItemsMapper.java index caa08a22..d45385d3 100644 --- a/bd-business/bd-business-sale/src/main/java/com/hzs/sale/order/mapper/SaOrderItemsMapper.java +++ b/bd-business/bd-business-sale/src/main/java/com/hzs/sale/order/mapper/SaOrderItemsMapper.java @@ -14,6 +14,7 @@ import com.hzs.sale.order.param.WaresOrderParam; import com.hzs.sale.order.vo.WaresOrderVo; import org.apache.ibatis.annotations.Param; +import java.math.BigDecimal; import java.util.Date; import java.util.List; @@ -285,11 +286,11 @@ public interface SaOrderItemsMapper extends BaseMapper { * @param systemType 系统类型(可为null) * @return */ - int getRetailWaresQuantityNew(@Param("pkMember") Long pkMember, - @Param("waresCodeList") List waresCodeList, - @Param("payTime") Date payTime, - @Param("orderTypeList") List orderTypeList, - @Param("systemType") Integer systemType); + BigDecimal getRetailWaresQuantityNew(@Param("pkMember") Long pkMember, + @Param("waresCodeList") List waresCodeList, + @Param("payTime") Date payTime, + @Param("orderTypeList") List orderTypeList, + @Param("systemType") Integer systemType); /** * 订单发货数量 diff --git a/bd-business/bd-business-sale/src/main/java/com/hzs/sale/order/param/OrderItemsParam.java b/bd-business/bd-business-sale/src/main/java/com/hzs/sale/order/param/OrderItemsParam.java index 1440a51a..9d0a68eb 100644 --- a/bd-business/bd-business-sale/src/main/java/com/hzs/sale/order/param/OrderItemsParam.java +++ b/bd-business/bd-business-sale/src/main/java/com/hzs/sale/order/param/OrderItemsParam.java @@ -6,6 +6,7 @@ import lombok.Data; import lombok.NoArgsConstructor; import java.io.Serializable; +import java.math.BigDecimal; import java.util.List; /** @@ -40,9 +41,9 @@ public class OrderItemsParam implements Serializable { private Integer quantity; /** - * 创客空间id + * 商品盒数 */ - private Long pkMakerSpace; + private BigDecimal boxNum; /** * 商品明细 diff --git a/bd-business/bd-business-sale/src/main/java/com/hzs/sale/order/service/ISaOrderItemsService.java b/bd-business/bd-business-sale/src/main/java/com/hzs/sale/order/service/ISaOrderItemsService.java index 63d71342..6d9782f2 100644 --- a/bd-business/bd-business-sale/src/main/java/com/hzs/sale/order/service/ISaOrderItemsService.java +++ b/bd-business/bd-business-sale/src/main/java/com/hzs/sale/order/service/ISaOrderItemsService.java @@ -14,6 +14,7 @@ import com.hzs.sale.order.param.WaresOrderParam; import com.hzs.sale.order.vo.WaresOrderVo; import org.apache.ibatis.annotations.Param; +import java.math.BigDecimal; import java.util.Date; import java.util.List; @@ -249,7 +250,7 @@ public interface ISaOrderItemsService extends IService { * @param systemType 系统类型(可为null) * @return */ - int getRetailWaresQuantityNew(Long pkMember, List waresCodeList, Date payTime, List orderTypeList, Integer systemType); + BigDecimal getRetailWaresQuantityNew(Long pkMember, List waresCodeList, Date payTime, List orderTypeList, Integer systemType); /** * 订单发货数量 diff --git a/bd-business/bd-business-sale/src/main/java/com/hzs/sale/order/service/impl/OrderBusinessServiceImpl.java b/bd-business/bd-business-sale/src/main/java/com/hzs/sale/order/service/impl/OrderBusinessServiceImpl.java index f1af7b88..bb316212 100644 --- a/bd-business/bd-business-sale/src/main/java/com/hzs/sale/order/service/impl/OrderBusinessServiceImpl.java +++ b/bd-business/bd-business-sale/src/main/java/com/hzs/sale/order/service/impl/OrderBusinessServiceImpl.java @@ -154,14 +154,14 @@ public class OrderBusinessServiceImpl implements IOrderBusinessService { @Override public String checkOrderRetailProduct(OrderProductParam param) { // 盒数商品对应的产品列表 - List pkProductList = iBdWaresService.listBoxProduct(BoxProductUtil.getBoxProductListBySystemType(null)); + List pkProductList = iBdWaresService.listBoxProduct(BoxProductUtil.getBoxWaresListBySystemType(null)); // 换货产品列表 List paramProductList = param.getItemList().stream().map(OrderProductDetailParam::getPkProduct).collect(Collectors.toList()); SaOrder saOrder = iSaOrderService.getOne(Wrappers.lambdaQuery() .eq(SaOrder::getOrderCode, param.getOrderCode()) ); - if (saOrder.getBoxNum() > 0) { + if (saOrder.getBoxNum().compareTo(BigDecimal.ZERO) > 0) { // 盒数商品订单,换货的产品是否都是盒数商品下的,如果是则可以进行更换,如果不是则不能更换 for (Integer pkProduct : paramProductList) { if (!pkProductList.contains(pkProduct)) { @@ -2288,7 +2288,7 @@ public class OrderBusinessServiceImpl implements IOrderBusinessService { saOrderItems.setPkWaresSpecsSku(0); // 2025.02.11 如果是盒数商品换货,需要更新成最新的盒数商品ID - List tmpList = iBdWaresService.listBoxProductAndWares(BoxProductUtil.getBoxProductListBySystemType(null), saOrderItems.getPkProduct(), ESpecialArea.getRetailSpecialAreaValue(saOrder.getOrderType())); + List tmpList = iBdWaresService.listBoxProductAndWares(BoxProductUtil.getBoxWaresListBySystemType(null), saOrderItems.getPkProduct(), ESpecialArea.getRetailSpecialAreaValue(saOrder.getOrderType())); if (CollectionUtil.isNotEmpty(tmpList)) { saOrderItems.setPkWares(tmpList.get(0).getPkWares()); } @@ -2312,10 +2312,11 @@ public class OrderBusinessServiceImpl implements IOrderBusinessService { // 不同产品,需要更新 // 调换货物选择不同产品,没有商品信息,此处先全部按默认值来处理 - // 2025.02.11 如果盒数商品,历史商品ID不变,非盒数商品进行处理 - if (saOrder.getBoxNum() == 0) { - saOrderItems.setPkWares(0); - } +// // 2025.02.11 如果盒数商品,历史商品ID不变,非盒数商品进行处理 +// if (saOrder.getBoxNum() == 0) { +// saOrderItems.setPkWares(0); +// } + saOrderItems.setPkWares(0); saOrderItems.setPkWaresDetail(0); saOrderItems.setPkWaresSpecsSku(0); updateOrderItemsList.add(saOrderItems); diff --git a/bd-business/bd-business-sale/src/main/java/com/hzs/sale/order/service/impl/SaOrderItemsServiceImpl.java b/bd-business/bd-business-sale/src/main/java/com/hzs/sale/order/service/impl/SaOrderItemsServiceImpl.java index ce3f48ec..cb083240 100644 --- a/bd-business/bd-business-sale/src/main/java/com/hzs/sale/order/service/impl/SaOrderItemsServiceImpl.java +++ b/bd-business/bd-business-sale/src/main/java/com/hzs/sale/order/service/impl/SaOrderItemsServiceImpl.java @@ -20,6 +20,7 @@ import com.hzs.sale.order.vo.WaresOrderVo; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; +import java.math.BigDecimal; import java.util.*; /** @@ -194,7 +195,7 @@ public class SaOrderItemsServiceImpl extends ServiceImpl waresCodeList, Date payTime, List orderTypeList, Integer systemType) { + public BigDecimal getRetailWaresQuantityNew(Long pkMember, List waresCodeList, Date payTime, List orderTypeList, Integer systemType) { return baseMapper.getRetailWaresQuantityNew(pkMember, waresCodeList, payTime, orderTypeList, systemType); } diff --git a/bd-business/bd-business-sale/src/main/java/com/hzs/sale/order/service/impl/SaOrderServiceImpl.java b/bd-business/bd-business-sale/src/main/java/com/hzs/sale/order/service/impl/SaOrderServiceImpl.java index 12a8c761..30573063 100644 --- a/bd-business/bd-business-sale/src/main/java/com/hzs/sale/order/service/impl/SaOrderServiceImpl.java +++ b/bd-business/bd-business-sale/src/main/java/com/hzs/sale/order/service/impl/SaOrderServiceImpl.java @@ -132,9 +132,9 @@ public class SaOrderServiceImpl extends ServiceImpl impl IGradeServiceApi iGradeServiceApi; @Autowired - private IBdWaresService waresService; + private IBdWaresService iBdWaresService; @Autowired - private IBdWaresExtendService waresExtendService; + private IBdWaresExtendService iBdWaresExtendService; @Autowired private SaOrderHandle saOrderHandle; @Autowired @@ -1284,7 +1284,7 @@ public class SaOrderServiceImpl extends ServiceImpl impl List orderItems = orderBlankRegParams.getOrderItems(); for (SaOrderItems orderItem : orderItems) { orderItem.setPkOrder(saOrder.getPkId()); - BdWares wares = waresService.getWares(orderItem.getPkWares()); + BdWares wares = iBdWaresService.getWares(orderItem.getPkWares()); BdProductExtendExt productExtend = iBdProductExtendService.queryExtendAndProduct(orderItem.getPkProduct()); orderItem.setPkWares(wares.getPkId()); orderItem.setPrice(wares.getWaresPrice().multiply(new BigDecimal(orderItem.getQuantity()))); @@ -1922,7 +1922,7 @@ public class SaOrderServiceImpl extends ServiceImpl impl @Override public void waresSalesAccrual(List waresNumberParamList) { try { - waresExtendService.updateWaresSalesAccrual(waresNumberParamList); + iBdWaresExtendService.updateWaresSalesAccrual(waresNumberParamList); } catch (Exception e) { e.printStackTrace(); } @@ -2011,7 +2011,7 @@ public class SaOrderServiceImpl extends ServiceImpl impl } } if (waresCodeList.size() > 0) { - List waresPreSaleVoList = waresExtendService.selectByWaresCodeList(waresCodeList, orderParam.getSpecialArea()); + List waresPreSaleVoList = iBdWaresExtendService.selectByWaresCodeList(waresCodeList, orderParam.getSpecialArea()); if (CollectionUtil.isNotEmpty(waresPreSaleVoList)) { Map waresPreSaleMap = waresPreSaleVoList.stream().collect(Collectors.toMap(WaresPreSaleVo::getWaresCode, Function.identity())); for (OrderItemsParam orderItemsParam : orderParam.getOrderItemsParams()) { @@ -2052,7 +2052,7 @@ public class SaOrderServiceImpl extends ServiceImpl impl } } if (waresCodeList.size() > 0) { - List waresPreSaleVoList = waresExtendService.selectByWaresCodeList(waresCodeList, specialArea); + List waresPreSaleVoList = iBdWaresExtendService.selectByWaresCodeList(waresCodeList, specialArea); if (CollectionUtil.isNotEmpty(waresPreSaleVoList)) { Map waresPreSaleMap = waresPreSaleVoList.stream().collect(Collectors.toMap(WaresPreSaleVo::getWaresCode, Function.identity())); for (OrderItemsParam orderItemsParam : orderItemsList) { @@ -2066,7 +2066,7 @@ public class SaOrderServiceImpl extends ServiceImpl impl // 预售数量不足 return false; } else { - waresService.updatePreSaleQuantityByWaresCode(waresCode, orderItemsParam.getQuantity()); + iBdWaresService.updatePreSaleQuantityByWaresCode(waresCode, orderItemsParam.getQuantity()); return true; } } @@ -2412,7 +2412,7 @@ public class SaOrderServiceImpl extends ServiceImpl impl saOrderExt.setUpdateFlag(EYesNo.YES.getIntValue()); } else if (EOrderType.RETAIL_REPURCHASE.getValue() == saOrderExt.getOrderType()) { // 复购订单存在盒数商品撤单,需要处理降级操作 - if (saOrderExt.getBoxNum() > 0) { + if (saOrderExt.getBoxNum().compareTo(BigDecimal.ZERO) > 0) { // TODO 目前只有注册、升级才能激活,复购不进行处理 // Date firstDate = baseMapper.getFirstPayTime(cuMember.getPkId()); // if (null == firstDate) { @@ -2462,7 +2462,7 @@ public class SaOrderServiceImpl extends ServiceImpl impl if (EOrderType.RETAIL_REPURCHASE.getValue() == saOrderExt.getOrderType() || EOrderType.RETAIL_CONSUME.getValue() == saOrderExt.getOrderType()) { // 需要查询盒数商品 - List boxProductList = BoxProductUtil.getBoxProductListBySystemType(saOrderExt.getSystemType()); + List boxProductList = BoxProductUtil.getBoxWaresListBySystemType(saOrderExt.getSystemType()); // 复购、重消订单处理限购 iSaOrderWaresLimitService.updateCancelOrder(saOrderExt.getPkId(), saOrderExt.getPkMember(), saOrderExt.getModifiedTime(), boxProductList); } @@ -2502,16 +2502,18 @@ public class SaOrderServiceImpl extends ServiceImpl impl gradeList = iGradeServiceApi.getRetailGradeList().getData(); } - // 盒数产品 - List boxProductList = BoxProductUtil.getBoxProductListBySystemType(systemType); + // 盒数商品 + List boxWaresList = BoxProductUtil.getBoxWaresListBySystemType(systemType); // 当前产品盒数 - int boxNum = 0; + BigDecimal boxNum = BigDecimal.ZERO; + // 处理商品盒数 + this.handleWaresBoxNum(specialArea, orderItemsParams); // 判断订单明细中指定产品数量,校验等级 for (OrderItemsParam orderItemsParam : orderItemsParams) { - if (boxProductList.contains(orderItemsParam.getWaresCode())) { + if (boxWaresList.contains(orderItemsParam.getWaresCode())) { // 存在指定商品,需要累计盒数 - boxNum += orderItemsParam.getQuantity(); + boxNum = boxNum.add(orderItemsParam.getBoxNum().multiply(new BigDecimal(orderItemsParam.getQuantity()))); } } @@ -2528,7 +2530,7 @@ public class SaOrderServiceImpl extends ServiceImpl impl } } else if (ESpecialArea.RETAIL_UPGRADE.getValue() == specialArea) { // 升级专区,一次性补差升级 - if (boxNum == 0) { + if (boxNum.compareTo(BigDecimal.ZERO) == 0) { // 不满足升级条件 throw new ServiceException("不满足升级条件"); } @@ -2545,9 +2547,9 @@ public class SaOrderServiceImpl extends ServiceImpl impl } // 获取升级盒数基数 - int baseBoxNum = this.handleBaseBoxNum(updateGradeMember, memberGrade, gradeList, boxProductList, systemType); + BigDecimal baseBoxNum = this.handleBaseBoxNum(updateGradeMember, memberGrade, gradeList, boxWaresList, systemType); // 计算等级 - bdGrade = this.getGradeByBox(boxNum + baseBoxNum, gradeList, memberGrade, true); + bdGrade = this.getGradeByBox(boxNum.add(baseBoxNum), gradeList, memberGrade, true); if (bdGrade.getGradeValue().equals(memberGrade.getGradeValue()) && (EGrade.HAI_FAN.getValue() == bdGrade.getGradeValue() || EGrade.YOU_KE.getValue() == bdGrade.getGradeValue()) @@ -2580,7 +2582,7 @@ public class SaOrderServiceImpl extends ServiceImpl impl * @param checkUpgrade 校验升级 * @return */ - private BdGrade getGradeByBox(final Integer boxTotal, List gradeList, BdGrade memberGrade, boolean checkUpgrade) { + private BdGrade getGradeByBox(final BigDecimal boxTotal, List gradeList, BdGrade memberGrade, boolean checkUpgrade) { if (CollectionUtil.isEmpty(gradeList)) { gradeList = iGradeServiceApi.getRetailGradeList().getData(); } @@ -2589,7 +2591,7 @@ public class SaOrderServiceImpl extends ServiceImpl impl // 注册处理 // 去掉 V4,V5 升级盒数小于购买盒数的最大一个等级为注册等级 return gradeList.stream() - .filter(tmpGrade -> tmpGrade.getGradeValue() != EGrade.VIP.getValue() && tmpGrade.getGradeValue() != EGrade.S_VIP.getValue() && tmpGrade.getBoxNumber() <= boxTotal) + .filter(tmpGrade -> tmpGrade.getGradeValue() != EGrade.VIP.getValue() && tmpGrade.getGradeValue() != EGrade.S_VIP.getValue() && tmpGrade.getBoxNumber().compareTo(boxTotal) <= 0) .max(Comparator.comparingInt(BdGrade::getGradeValue)).get(); } else { // 非注册处理 @@ -2612,8 +2614,8 @@ public class SaOrderServiceImpl extends ServiceImpl impl // new 2025.06.25 V1-V3升级多送两级,需要支持送完还能买,此处暂时注释掉 // .filter(tmpGrade -> tmpGrade.getGradeValue() > memberGrade.getGradeValue()) .sorted(Comparator.comparingInt(BdGrade::getGradeValue).reversed()) - .filter(tmpGrade -> tmpGrade.getBoxNumber() != 0) - .filter(tmpGrade -> tmpGrade.getBoxNumber() <= boxTotal).findFirst(); + .filter(tmpGrade -> tmpGrade.getBoxNumber().compareTo(BigDecimal.ZERO) > 0) + .filter(tmpGrade -> tmpGrade.getBoxNumber().compareTo(boxTotal) <= 0).findFirst(); return gradeOptional.orElse(memberGrade); } } @@ -2622,17 +2624,17 @@ public class SaOrderServiceImpl extends ServiceImpl impl /** * 处理升级盒数基数 * - * @param cuMember 会员信息 - * @param memberGrade 会员等级信息 - * @param gradeList 等级列表 - * @param boxProductList 盒数商品列表 - * @param systemType 所属系统 + * @param cuMember 会员信息 + * @param memberGrade 会员等级信息 + * @param gradeList 等级列表 + * @param boxWaresList 盒数商品列表 + * @param systemType 所属系统 * @return */ - private int handleBaseBoxNum(CuMember cuMember, BdGrade memberGrade, List gradeList, List boxProductList, + private BigDecimal handleBaseBoxNum(CuMember cuMember, BdGrade memberGrade, List gradeList, List boxWaresList, Integer systemType) { // 升级盒数基数 - int baseBoxNum = 0; + BigDecimal baseBoxNum = BigDecimal.ZERO; // 会员所有升级记录 List memberLevelList = iCuMemberDetailServiceApi.getUpgradeList(cuMember.getPkId()).getData(); if (CollectionUtil.isNotEmpty(memberLevelList)) { @@ -2646,11 +2648,10 @@ public class SaOrderServiceImpl extends ServiceImpl impl throw new ServiceException("当前已经是可以购买的最高等级"); } // 盒数基数 = 手动升级盒数 + 手动升级之后的升级订单盒数 - baseBoxNum = lastUpdateGrade.getBoxNumber() - + saOrderItemsService.getRetailWaresQuantityNew(cuMember.getPkId(), boxProductList, lastMemberLevel.getUpgradeTime(), Collections.singletonList(EOrderType.RETAIL_UPGRADE.getValue()), systemType); + baseBoxNum = lastUpdateGrade.getBoxNumber().add(saOrderItemsService.getRetailWaresQuantityNew(cuMember.getPkId(), boxWaresList, lastMemberLevel.getUpgradeTime(), Collections.singletonList(EOrderType.RETAIL_UPGRADE.getValue()), systemType)); } else { // 没有手动升级记录 - baseBoxNum = saOrderItemsService.getRetailWaresQuantityNew(cuMember.getPkId(), boxProductList, null, Arrays.asList(EOrderType.RETAIL_REGISTER.getValue(), EOrderType.RETAIL_UPGRADE.getValue()), systemType); + baseBoxNum = saOrderItemsService.getRetailWaresQuantityNew(cuMember.getPkId(), boxWaresList, null, Arrays.asList(EOrderType.RETAIL_REGISTER.getValue(), EOrderType.RETAIL_UPGRADE.getValue()), systemType); } } return baseBoxNum; @@ -2722,626 +2723,626 @@ public class SaOrderServiceImpl extends ServiceImpl impl // return 0; } - /** - * 处理日升级新 - * - * @param cuMember 会员信息 - * @param oldLevel 旧等级 - * @param lastLevel 新等级(可为null) - * @param manualUpgradeLevel 手动升级等级(可为null) - * @param queryStartTime 查询开始时间 - * @param queryEndTime 查询结束时间 - * @param gradeList 等级列表 - * @param createLevelList 创建升级记录列表 - * @return - */ - private BdGrade handleTodayGrade(CuMember cuMember, Integer oldLevel, Integer lastLevel, Integer manualUpgradeLevel, Date queryStartTime, Date queryEndTime, - List gradeList, List createLevelList) { - // 升级之前对应的等级(如果有值则是等级值,如果没有默认V0) - Optional tmpGradeOptional = gradeList.stream().filter(tmp -> tmp.getPkId().equals(oldLevel)).findFirst(); - BdGrade oldGrade = tmpGradeOptional.orElseGet(() -> this.getGrade(EGrade.START_UP, gradeList)); - // 最终计算等级(如果没有默认为V3) - BdGrade endGrade = null != lastLevel ? this.getGrade(lastLevel, gradeList) : this.getGrade(EGrade.MAKER, gradeList); - // 获取需要处理的等级(大于升级记录的旧等级,小于等于升级记录的新等级) - List lowGradeList = gradeList.stream() - .filter(tmp -> (tmp.getGradeValue() > oldGrade.getGradeValue() && tmp.getGradeValue() <= endGrade.getGradeValue())) - .collect(Collectors.toList()); +// /** +// * 处理日升级新 +// * +// * @param cuMember 会员信息 +// * @param oldLevel 旧等级 +// * @param lastLevel 新等级(可为null) +// * @param manualUpgradeLevel 手动升级等级(可为null) +// * @param queryStartTime 查询开始时间 +// * @param queryEndTime 查询结束时间 +// * @param gradeList 等级列表 +// * @param createLevelList 创建升级记录列表 +// * @return +// */ +// private BdGrade handleTodayGrade(CuMember cuMember, Integer oldLevel, Integer lastLevel, Integer manualUpgradeLevel, Date queryStartTime, Date queryEndTime, +// List gradeList, List createLevelList) { +// // 升级之前对应的等级(如果有值则是等级值,如果没有默认V0) +// Optional tmpGradeOptional = gradeList.stream().filter(tmp -> tmp.getPkId().equals(oldLevel)).findFirst(); +// BdGrade oldGrade = tmpGradeOptional.orElseGet(() -> this.getGrade(EGrade.START_UP, gradeList)); +// // 最终计算等级(如果没有默认为V3) +// BdGrade endGrade = null != lastLevel ? this.getGrade(lastLevel, gradeList) : this.getGrade(EGrade.MAKER, gradeList); +// // 获取需要处理的等级(大于升级记录的旧等级,小于等于升级记录的新等级) +// List lowGradeList = gradeList.stream() +// .filter(tmp -> (tmp.getGradeValue() > oldGrade.getGradeValue() && tmp.getGradeValue() <= endGrade.getGradeValue())) +// .collect(Collectors.toList()); +// +// BdGrade newGrade = oldGrade; +// +// if (CollectionUtil.isNotEmpty(lowGradeList)) { +// // 查询撤单当天的注册、复购订单 +// List orderList = this.list(Wrappers.lambdaQuery() +// .eq(SaOrder::getPkMember, cuMember.getPkId()) +// .eq(SaOrder::getOrderStatus, EPayStatus.PAID.getValue()) +// .in(SaOrder::getOrderType, EOrderType.RETAIL_REGISTER.getValue(), EOrderType.RETAIL_REPURCHASE.getValue()) +// .ge(SaOrder::getPayTime, queryStartTime) +// .le(SaOrder::getPayTime, queryEndTime) +// .orderByAsc(SaOrder::getPayTime) +// ); +// +// if (CollectionUtil.isNotEmpty(orderList)) { +// // 订单购买时间和手动升级记录之间有订单,需要重算中间的等级 +// // 取倒序(V3,V2,V1) +// lowGradeList.sort(Comparator.comparing(BdGrade::getGradeValue).reversed()); +// +// SaOrder orderV1 = null; +// SaOrder orderV2 = null; +// SaOrder orderV3 = null; +// // 旧等级盒数 +// int oldGradeBox = oldGrade.getBoxNumber(); +// // 如果存在手动升级,则以手动升级为基数 +// if (null != manualUpgradeLevel) { +// int tmpBox = this.getGrade(manualUpgradeLevel, gradeList).getBoxNumber(); +// if (tmpBox != 0) { +// oldGradeBox = tmpBox; +// } +// } +// +// orderFor: +// for (SaOrder saOrder : orderList) { +// // 累积盒数,校验等级 +// oldGradeBox += saOrder.getBoxNum(); +// +// for (BdGrade tmpGrade : lowGradeList) { +// if (oldGradeBox >= tmpGrade.getBoxNumber()) { +// if (EGrade.MAKER.getValue() == tmpGrade.getGradeValue()) { +// // V3订单 +// orderV3 = saOrder; +// // 达到V3等级,直接结束 +// break orderFor; +// } else if (null == orderV2 && EGrade.YOU_KE.getValue() == tmpGrade.getGradeValue()) { +// // V2订单 +// orderV2 = saOrder; +// // 达到V2等级,V1就不需要处理了,直接处理下次订单 +// break; +// } else if (null == orderV1 && EGrade.HAI_FAN.getValue() == tmpGrade.getGradeValue()) { +// // V1订单 +// orderV1 = saOrder; +// } +// } +// } +// } +// +// BdGrade gradeV1 = this.getGrade(EGrade.HAI_FAN, gradeList); +// BdGrade gradeV2 = this.getGrade(EGrade.YOU_KE, gradeList); +// BdGrade gradeV3 = this.getGrade(EGrade.MAKER, gradeList); +// if (null != orderV1) { +// // V1等级订单 +// createLevelList.add(this.packageMemberLevel(cuMember, orderV1, oldGrade.getPkId(), gradeV1.getPkId())); +// newGrade = gradeV1; +// if (null != orderV2) { +// // V2等级订单 +// createLevelList.add(this.packageMemberLevel(cuMember, orderV2, gradeV1.getPkId(), gradeV2.getPkId())); +// newGrade = gradeV2; +// if (null != orderV3) { +// // V3等级订单 +// createLevelList.add(this.packageMemberLevel(cuMember, orderV3, gradeV2.getPkId(), gradeV3.getPkId())); +// newGrade = gradeV3; +// } +// } else { +// // 没有V2等级订单 +// if (null != orderV3) { +// // V3等级订单 +// createLevelList.add(this.packageMemberLevel(cuMember, orderV3, gradeV1.getPkId(), gradeV3.getPkId())); +// newGrade = gradeV3; +// } +// } +// } else if (null != orderV2) { +// // V2等级订单 +// createLevelList.add(this.packageMemberLevel(cuMember, orderV2, oldGrade.getPkId(), gradeV2.getPkId())); +// newGrade = gradeV2; +// if (null != orderV3) { +// // V3等级订单 +// createLevelList.add(this.packageMemberLevel(cuMember, orderV3, gradeV2.getPkId(), gradeV3.getPkId())); +// newGrade = gradeV3; +// } +// } else if (null != orderV3) { +// // V3等级订单 +// createLevelList.add(this.packageMemberLevel(cuMember, orderV3, oldGrade.getPkId(), gradeV3.getPkId())); +// newGrade = gradeV3; +// } +// } +// } +// +// return newGrade; +// } - BdGrade newGrade = oldGrade; +// /** +// * 处理日升级后每天升级 +// * +// * @param cuMember +// * @param oldGrade +// * @param queryStartTime +// * @param queryEndTime +// * @param memberLevelList +// * @param gradeList +// * @param createLevelList +// * @param deleteLevelList +// * @return +// */ +// private BdGrade handleTodayNextNew(CuMember cuMember, BdGrade oldGrade, Date queryStartTime, Date queryEndTime, +// List memberLevelList, List gradeList, +// List createLevelList, List deleteLevelList) { +// if (queryStartTime.compareTo(new Date()) >= 0) { +// // 查询时间大于等于当前时间了,则结束处理 +// return oldGrade; +// } +// +// // 订单购买当天所有升级记录 +// List todayLevelList = memberLevelList.stream() +// .filter(tmp -> (tmp.getUpgradeTime().compareTo(queryStartTime) >= 0 && tmp.getUpgradeTime().compareTo(queryEndTime) <= 0)) +// .collect(Collectors.toList()); +// if (CollectionUtil.isNotEmpty(todayLevelList)) { +// // 处理当日等级 +// Integer oldLevel = oldGrade.getPkId(); +// Integer lastLevel = todayLevelList.get(todayLevelList.size() - 1).getNewLevel(); +// // 手动升级记录 +// Integer manualUpgradeLevel = null; +// +// // 当天最后一条手动升级记录 +// Optional manualUpgradeOptional = todayLevelList.stream() +// .filter(tmp -> EUpgradeType.MANUAL_UPGRADE.getValue() == tmp.getUpType()) +// .max(Comparator.comparing(CuMemberLevel::getUpgradeTime)); +// if (manualUpgradeOptional.isPresent()) { +// // 存在手动升级记录(计算等级为手动升级盒数为基数 + 当天购买的订单盒数) +// // 删除升级记录时,只删除非手动升级的 +// deleteLevelList.addAll(todayLevelList.stream() +// .filter(tmp -> EUpgradeType.MANUAL_UPGRADE.getValue() != tmp.getUpType()) +// .collect(Collectors.toList())); +// // 重算订单当天升级记录(存在手动升级) +// manualUpgradeLevel = manualUpgradeOptional.get().getNewLevel(); +// } else { +// // 不存在手动升级记录(当天购买的订单盒数) +// deleteLevelList.addAll(todayLevelList); +// } +// +// // 今天重算等级 +// oldGrade = this.handleTodayGrade(cuMember, oldLevel, lastLevel, manualUpgradeLevel, +// queryStartTime, queryEndTime, gradeList, createLevelList); +// if (lastLevel.equals(oldGrade.getPkId())) { +// // 重算之后和重算之前等级一致,直接返回当前会员等级 +// return oldGrade; +// } +// } +// +// return this.handleTodayNextNew(cuMember, oldGrade, DateUtils.addDays(queryStartTime, 1), DateUtils.addDays(queryEndTime, 1), +// memberLevelList, gradeList, createLevelList, deleteLevelList); +// } - if (CollectionUtil.isNotEmpty(lowGradeList)) { - // 查询撤单当天的注册、复购订单 - List orderList = this.list(Wrappers.lambdaQuery() - .eq(SaOrder::getPkMember, cuMember.getPkId()) - .eq(SaOrder::getOrderStatus, EPayStatus.PAID.getValue()) - .in(SaOrder::getOrderType, EOrderType.RETAIL_REGISTER.getValue(), EOrderType.RETAIL_REPURCHASE.getValue()) - .ge(SaOrder::getPayTime, queryStartTime) - .le(SaOrder::getPayTime, queryEndTime) - .orderByAsc(SaOrder::getPayTime) - ); +// /** +// * 处理首日升级 +// * +// * @param cuMember 会员信息 +// * @param oldLevel 旧等级 +// * @param lastLevel 最大等级 +// * @param queryTime 查询开始时间 +// * @param queryEndTime 查询结束时间 +// * @param gradeList 等级列表 +// * @param createLevelList 创建升级记录 +// * @return +// */ +// private BdGrade handleToday(CuMember cuMember, Integer oldLevel, Integer lastLevel, Date queryTime, Date queryEndTime, +// List gradeList, List createLevelList) { +// // 存在手动升级,只需要重算手动升级之前的 +// // 升级之前对应的等级(如果有值则是等级值,如果没有默认V0) +// Optional tmpGradeOptional = gradeList.stream().filter(tmp -> tmp.getPkId().equals(oldLevel)).findFirst(); +// BdGrade oldGrade = tmpGradeOptional.orElseGet(() -> this.getGrade(EGrade.START_UP, gradeList)); +// // 最终计算等级(如果没有默认为V3) +// BdGrade endGrade = null != lastLevel ? this.getGrade(lastLevel, gradeList) : this.getGrade(EGrade.MAKER, gradeList); +// // 获取需要处理的等级(大于升级记录的旧等级,小于等于升级记录的新等级) +// List lowGradeList = gradeList.stream() +// .filter(tmp -> (tmp.getGradeValue() > oldGrade.getGradeValue() && tmp.getGradeValue() <= endGrade.getGradeValue())) +// .collect(Collectors.toList()); +// +// BdGrade newGrade = oldGrade; +// +// if (CollectionUtil.isNotEmpty(lowGradeList)) { +// // 查询大于升级时间,小于当天手动升级时间,全部订单 +// List orderList = this.list(Wrappers.lambdaQuery() +// .eq(SaOrder::getPkMember, cuMember.getPkId()) +// .eq(SaOrder::getOrderStatus, EPayStatus.PAID.getValue()) +// .eq(SaOrder::getOrderType, EOrderType.RETAIL_REPURCHASE.getValue()) +// .ge(SaOrder::getPayTime, queryTime) +// .le(SaOrder::getPayTime, queryEndTime) +// .orderByAsc(SaOrder::getPayTime) +// ); +// +// if (CollectionUtil.isNotEmpty(orderList)) { +// // 订单购买时间和手动升级记录之间有订单,需要重算中间的等级 +// // 取倒序(V3,V2,V1) +// lowGradeList.sort(Comparator.comparing(BdGrade::getGradeValue).reversed()); +// +// SaOrder orderV1 = null; +// SaOrder orderV2 = null; +// SaOrder orderV3 = null; +// // 旧等级盒数 +// int oldGradeBox = oldGrade.getBoxNumber(); +// +// orderFor: +// for (SaOrder saOrder : orderList) { +// // 累积盒数,校验等级 +// oldGradeBox += saOrder.getBoxNum(); +// +// for (BdGrade tmpGrade : lowGradeList) { +// if (oldGradeBox >= tmpGrade.getBoxNumber()) { +// if (EGrade.MAKER.getValue() == tmpGrade.getGradeValue()) { +// // V3订单 +// orderV3 = saOrder; +// // 达到V3等级,直接结束 +// break orderFor; +// } else if (null == orderV2 && EGrade.YOU_KE.getValue() == tmpGrade.getGradeValue()) { +// // V2订单 +// orderV2 = saOrder; +// // 达到V2等级,V1就不需要处理了,直接处理下次订单 +// break; +// } else if (null == orderV1 && EGrade.HAI_FAN.getValue() == tmpGrade.getGradeValue()) { +// // V1订单 +// orderV1 = saOrder; +// } +// } +// +// } +// } +// +// BdGrade gradeV1 = this.getGrade(EGrade.HAI_FAN, gradeList); +// BdGrade gradeV2 = this.getGrade(EGrade.YOU_KE, gradeList); +// BdGrade gradeV3 = this.getGrade(EGrade.MAKER, gradeList); +// if (null != orderV1) { +// // V1等级订单 +// createLevelList.add(this.packageMemberLevel(cuMember, orderV1, oldGrade.getPkId(), gradeV1.getPkId())); +// newGrade = gradeV1; +// if (null != orderV2) { +// // V2等级订单 +// createLevelList.add(this.packageMemberLevel(cuMember, orderV2, gradeV1.getPkId(), gradeV2.getPkId())); +// newGrade = gradeV2; +// if (null != orderV3) { +// // V3等级订单 +// createLevelList.add(this.packageMemberLevel(cuMember, orderV3, gradeV2.getPkId(), gradeV3.getPkId())); +// newGrade = gradeV3; +// } +// } else { +// // 没有V2等级订单 +// if (null != orderV3) { +// // V3等级订单 +// createLevelList.add(this.packageMemberLevel(cuMember, orderV3, gradeV1.getPkId(), gradeV3.getPkId())); +// newGrade = gradeV3; +// } +// } +// } else if (null != orderV2) { +// // V2等级订单 +// createLevelList.add(this.packageMemberLevel(cuMember, orderV2, oldGrade.getPkId(), gradeV2.getPkId())); +// newGrade = gradeV2; +// if (null != orderV3) { +// // V3等级订单 +// createLevelList.add(this.packageMemberLevel(cuMember, orderV3, gradeV2.getPkId(), gradeV3.getPkId())); +// newGrade = gradeV3; +// } +// } else if (null != orderV3) { +// // V3等级订单 +// createLevelList.add(this.packageMemberLevel(cuMember, orderV3, oldGrade.getPkId(), gradeV3.getPkId())); +// newGrade = gradeV3; +// } +// } +// } +// return newGrade; +// } - if (CollectionUtil.isNotEmpty(orderList)) { - // 订单购买时间和手动升级记录之间有订单,需要重算中间的等级 - // 取倒序(V3,V2,V1) - lowGradeList.sort(Comparator.comparing(BdGrade::getGradeValue).reversed()); +// /** +// * 首日等级有变化,处理次日升级 +// * +// * @param cuMember 会员信息 +// * @param oldLevel 旧等级 +// * @param lastLevel 最大等级 +// * @param queryTime 查询开始时间 +// * @param queryEndTime 查询结束时间 +// * @param gradeList 等级列表 +// * @param createLevelList 创建升级记录 +// * @return +// */ +// private BdGrade handleTodayNext(CuMember cuMember, Integer oldLevel, Integer lastLevel, Date queryTime, Date queryEndTime, +// List gradeList, List createLevelList) { +// // 次日升级之前的等级 +// BdGrade oldGrade = this.getGrade(oldLevel, gradeList); +// // 最终计算等级(如果没有默认为V3) +// BdGrade endGrade = null != lastLevel ? this.getGrade(lastLevel, gradeList) : this.getGrade(EGrade.MAKER, gradeList); +// // 获取需要处理的等级(大于升级记录的旧等级,小于等于升级记录的新等级) +// List lowGradeList = gradeList.stream() +// .filter(tmp -> (tmp.getGradeValue() > oldGrade.getGradeValue() && tmp.getGradeValue() <= endGrade.getGradeValue())) +// .collect(Collectors.toList()); +// +// BdGrade newGrade = oldGrade; +// +// if (CollectionUtil.isNotEmpty(lowGradeList)) { +// // 查询大于升级时间,小于当天手动升级时间,全部订单 +// List orderList = this.list(Wrappers.lambdaQuery() +// .eq(SaOrder::getPkMember, cuMember.getPkId()) +// .eq(SaOrder::getOrderStatus, EPayStatus.PAID.getValue()) +// .eq(SaOrder::getOrderType, EOrderType.RETAIL_REPURCHASE.getValue()) +// .ge(SaOrder::getPayTime, queryTime) +// .le(SaOrder::getPayTime, null != queryEndTime ? queryEndTime : new Date()) +// .orderByAsc(SaOrder::getPayTime) +// ); +// +// if (CollectionUtil.isNotEmpty(orderList)) { +// // 升级记录以后有订单,才进行级别处理 +// // 取倒序(V3,V2,V1) +// lowGradeList.sort(Comparator.comparing(BdGrade::getGradeValue).reversed()); +// +// SaOrder orderV1 = null; +// SaOrder orderV2 = null; +// SaOrder orderV3 = null; +// // 旧等级盒数 +// int oldGradeBox = oldGrade.getBoxNumber(); +// +// orderFor: +// for (SaOrder saOrder : orderList) { +// for (BdGrade tmpGrade : lowGradeList) { +// if (saOrder.getBoxNum() >= (tmpGrade.getBoxNumber() - oldGradeBox)) { +// if (EGrade.MAKER.getValue() == tmpGrade.getGradeValue()) { +// // V3订单 +// orderV3 = saOrder; +// // 达到V3等级,直接结束 +// break orderFor; +// } else if (null == orderV2 && EGrade.YOU_KE.getValue() == tmpGrade.getGradeValue()) { +// // V2订单 +// orderV2 = saOrder; +// oldGradeBox = tmpGrade.getBoxNumber(); +// // 达到V2等级,V1就不需要处理了,直接处理下次订单 +// break; +// } else if (null == orderV1 && EGrade.HAI_FAN.getValue() == tmpGrade.getGradeValue()) { +// // V1订单 +// orderV1 = saOrder; +// oldGradeBox = tmpGrade.getBoxNumber(); +// } +// } +// } +// } +// +// BdGrade gradeV1 = this.getGrade(EGrade.HAI_FAN, gradeList); +// BdGrade gradeV2 = this.getGrade(EGrade.YOU_KE, gradeList); +// BdGrade gradeV3 = this.getGrade(EGrade.MAKER, gradeList); +// if (null != orderV1) { +// // 有V1等级订单 +// if (null != orderV2) { +// // 有V2等级订单 +// if (orderV1.getPkId().equals(orderV2.getPkId())) { +// // V1和V2订单相同,只处理V2 +// if (null != orderV3) { +// // 有V3等级订单 +// if (orderV2.getPkId().equals(orderV3.getPkId())) { +// // V2和V3订单相同,只处理V3 +// createLevelList.add(this.packageMemberLevel(cuMember, orderV3, oldGrade.getPkId(), gradeV3.getPkId())); +// newGrade = gradeV3; +// } else { +// // V2和V3订单不相同,先处理V2,再处理V3 +// createLevelList.add(this.packageMemberLevel(cuMember, orderV2, oldGrade.getPkId(), gradeV2.getPkId())); +// createLevelList.add(this.packageMemberLevel(cuMember, orderV3, gradeV2.getPkId(), gradeV3.getPkId())); +// newGrade = gradeV3; +// } +// } else { +// // 没有V3等级订单,只处理V2 +// createLevelList.add(this.packageMemberLevel(cuMember, orderV2, oldGrade.getPkId(), gradeV2.getPkId())); +// newGrade = gradeV2; +// } +// } else { +// // V1和V2订单不相同 +// if (null != orderV3) { +// // 有V3等级订单 +// if (orderV2.getPkId().equals(orderV3.getPkId())) { +// // V2和V3等级相同,先处理V1,再处理V3 +// createLevelList.add(this.packageMemberLevel(cuMember, orderV1, oldGrade.getPkId(), gradeV1.getPkId())); +// createLevelList.add(this.packageMemberLevel(cuMember, orderV3, gradeV1.getPkId(), gradeV3.getPkId())); +// newGrade = gradeV3; +// } else { +// // V2和V3等级不相同,先处理V1,再处理V2,最后处理V3 +// createLevelList.add(this.packageMemberLevel(cuMember, orderV1, oldGrade.getPkId(), gradeV1.getPkId())); +// createLevelList.add(this.packageMemberLevel(cuMember, orderV2, gradeV1.getPkId(), gradeV2.getPkId())); +// createLevelList.add(this.packageMemberLevel(cuMember, orderV3, gradeV2.getPkId(), gradeV3.getPkId())); +// newGrade = gradeV3; +// } +// } else { +// // 没有V3等级订单,处理V1 V2 +// createLevelList.add(this.packageMemberLevel(cuMember, orderV1, oldGrade.getPkId(), gradeV1.getPkId())); +// createLevelList.add(this.packageMemberLevel(cuMember, orderV2, gradeV1.getPkId(), gradeV2.getPkId())); +// newGrade = gradeV2; +// } +// } +// } else { +// // 没有V2等级订单,只处理V1 +// createLevelList.add(this.packageMemberLevel(cuMember, orderV1, oldGrade.getPkId(), gradeV1.getPkId())); +// newGrade = gradeV1; +// } +// } else if (null != orderV2) { +// // 有V2等级订单,V1没有 +// if (null != orderV3) { +// // 有V3等级订单 +// if (orderV2.getPkId().equals(orderV3.getPkId())) { +// // V2和V3订单相同,只处理V3 +// createLevelList.add(this.packageMemberLevel(cuMember, orderV3, oldGrade.getPkId(), gradeV3.getPkId())); +// newGrade = gradeV3; +// } else { +// // V2和V3订单不相同,先处理V2,再处理V3 +// createLevelList.add(this.packageMemberLevel(cuMember, orderV2, oldGrade.getPkId(), gradeV2.getPkId())); +// createLevelList.add(this.packageMemberLevel(cuMember, orderV3, gradeV2.getPkId(), gradeV3.getPkId())); +// newGrade = gradeV3; +// } +// } else { +// // 没有V3,只处理V2 +// createLevelList.add(this.packageMemberLevel(cuMember, orderV2, oldGrade.getPkId(), gradeV2.getPkId())); +// newGrade = gradeV2; +// } +// } else if (null != orderV3) { +// // 有V3等级订单,V1、V2没有 +// createLevelList.add(this.packageMemberLevel(cuMember, orderV3, oldGrade.getPkId(), gradeV3.getPkId())); +// newGrade = gradeV3; +// } +// } +// } +// +// return newGrade; +// } - SaOrder orderV1 = null; - SaOrder orderV2 = null; - SaOrder orderV3 = null; - // 旧等级盒数 - int oldGradeBox = oldGrade.getBoxNumber(); - // 如果存在手动升级,则以手动升级为基数 - if (null != manualUpgradeLevel) { - int tmpBox = this.getGrade(manualUpgradeLevel, gradeList).getBoxNumber(); - if (tmpBox != 0) { - oldGradeBox = tmpBox; - } - } - - orderFor: - for (SaOrder saOrder : orderList) { - // 累积盒数,校验等级 - oldGradeBox += saOrder.getBoxNum(); - - for (BdGrade tmpGrade : lowGradeList) { - if (oldGradeBox >= tmpGrade.getBoxNumber()) { - if (EGrade.MAKER.getValue() == tmpGrade.getGradeValue()) { - // V3订单 - orderV3 = saOrder; - // 达到V3等级,直接结束 - break orderFor; - } else if (null == orderV2 && EGrade.YOU_KE.getValue() == tmpGrade.getGradeValue()) { - // V2订单 - orderV2 = saOrder; - // 达到V2等级,V1就不需要处理了,直接处理下次订单 - break; - } else if (null == orderV1 && EGrade.HAI_FAN.getValue() == tmpGrade.getGradeValue()) { - // V1订单 - orderV1 = saOrder; - } - } - } - } - - BdGrade gradeV1 = this.getGrade(EGrade.HAI_FAN, gradeList); - BdGrade gradeV2 = this.getGrade(EGrade.YOU_KE, gradeList); - BdGrade gradeV3 = this.getGrade(EGrade.MAKER, gradeList); - if (null != orderV1) { - // V1等级订单 - createLevelList.add(this.packageMemberLevel(cuMember, orderV1, oldGrade.getPkId(), gradeV1.getPkId())); - newGrade = gradeV1; - if (null != orderV2) { - // V2等级订单 - createLevelList.add(this.packageMemberLevel(cuMember, orderV2, gradeV1.getPkId(), gradeV2.getPkId())); - newGrade = gradeV2; - if (null != orderV3) { - // V3等级订单 - createLevelList.add(this.packageMemberLevel(cuMember, orderV3, gradeV2.getPkId(), gradeV3.getPkId())); - newGrade = gradeV3; - } - } else { - // 没有V2等级订单 - if (null != orderV3) { - // V3等级订单 - createLevelList.add(this.packageMemberLevel(cuMember, orderV3, gradeV1.getPkId(), gradeV3.getPkId())); - newGrade = gradeV3; - } - } - } else if (null != orderV2) { - // V2等级订单 - createLevelList.add(this.packageMemberLevel(cuMember, orderV2, oldGrade.getPkId(), gradeV2.getPkId())); - newGrade = gradeV2; - if (null != orderV3) { - // V3等级订单 - createLevelList.add(this.packageMemberLevel(cuMember, orderV3, gradeV2.getPkId(), gradeV3.getPkId())); - newGrade = gradeV3; - } - } else if (null != orderV3) { - // V3等级订单 - createLevelList.add(this.packageMemberLevel(cuMember, orderV3, oldGrade.getPkId(), gradeV3.getPkId())); - newGrade = gradeV3; - } - } - } - - return newGrade; - } - - /** - * 处理日升级后每天升级 - * - * @param cuMember - * @param oldGrade - * @param queryStartTime - * @param queryEndTime - * @param memberLevelList - * @param gradeList - * @param createLevelList - * @param deleteLevelList - * @return - */ - private BdGrade handleTodayNextNew(CuMember cuMember, BdGrade oldGrade, Date queryStartTime, Date queryEndTime, - List memberLevelList, List gradeList, - List createLevelList, List deleteLevelList) { - if (queryStartTime.compareTo(new Date()) >= 0) { - // 查询时间大于等于当前时间了,则结束处理 - return oldGrade; - } - - // 订单购买当天所有升级记录 - List todayLevelList = memberLevelList.stream() - .filter(tmp -> (tmp.getUpgradeTime().compareTo(queryStartTime) >= 0 && tmp.getUpgradeTime().compareTo(queryEndTime) <= 0)) - .collect(Collectors.toList()); - if (CollectionUtil.isNotEmpty(todayLevelList)) { - // 处理当日等级 - Integer oldLevel = oldGrade.getPkId(); - Integer lastLevel = todayLevelList.get(todayLevelList.size() - 1).getNewLevel(); - // 手动升级记录 - Integer manualUpgradeLevel = null; - - // 当天最后一条手动升级记录 - Optional manualUpgradeOptional = todayLevelList.stream() - .filter(tmp -> EUpgradeType.MANUAL_UPGRADE.getValue() == tmp.getUpType()) - .max(Comparator.comparing(CuMemberLevel::getUpgradeTime)); - if (manualUpgradeOptional.isPresent()) { - // 存在手动升级记录(计算等级为手动升级盒数为基数 + 当天购买的订单盒数) - // 删除升级记录时,只删除非手动升级的 - deleteLevelList.addAll(todayLevelList.stream() - .filter(tmp -> EUpgradeType.MANUAL_UPGRADE.getValue() != tmp.getUpType()) - .collect(Collectors.toList())); - // 重算订单当天升级记录(存在手动升级) - manualUpgradeLevel = manualUpgradeOptional.get().getNewLevel(); - } else { - // 不存在手动升级记录(当天购买的订单盒数) - deleteLevelList.addAll(todayLevelList); - } - - // 今天重算等级 - oldGrade = this.handleTodayGrade(cuMember, oldLevel, lastLevel, manualUpgradeLevel, - queryStartTime, queryEndTime, gradeList, createLevelList); - if (lastLevel.equals(oldGrade.getPkId())) { - // 重算之后和重算之前等级一致,直接返回当前会员等级 - return oldGrade; - } - } - - return this.handleTodayNextNew(cuMember, oldGrade, DateUtils.addDays(queryStartTime, 1), DateUtils.addDays(queryEndTime, 1), - memberLevelList, gradeList, createLevelList, deleteLevelList); - } - - /** - * 处理首日升级 - * - * @param cuMember 会员信息 - * @param oldLevel 旧等级 - * @param lastLevel 最大等级 - * @param queryTime 查询开始时间 - * @param queryEndTime 查询结束时间 - * @param gradeList 等级列表 - * @param createLevelList 创建升级记录 - * @return - */ - private BdGrade handleToday(CuMember cuMember, Integer oldLevel, Integer lastLevel, Date queryTime, Date queryEndTime, - List gradeList, List createLevelList) { - // 存在手动升级,只需要重算手动升级之前的 - // 升级之前对应的等级(如果有值则是等级值,如果没有默认V0) - Optional tmpGradeOptional = gradeList.stream().filter(tmp -> tmp.getPkId().equals(oldLevel)).findFirst(); - BdGrade oldGrade = tmpGradeOptional.orElseGet(() -> this.getGrade(EGrade.START_UP, gradeList)); - // 最终计算等级(如果没有默认为V3) - BdGrade endGrade = null != lastLevel ? this.getGrade(lastLevel, gradeList) : this.getGrade(EGrade.MAKER, gradeList); - // 获取需要处理的等级(大于升级记录的旧等级,小于等于升级记录的新等级) - List lowGradeList = gradeList.stream() - .filter(tmp -> (tmp.getGradeValue() > oldGrade.getGradeValue() && tmp.getGradeValue() <= endGrade.getGradeValue())) - .collect(Collectors.toList()); - - BdGrade newGrade = oldGrade; - - if (CollectionUtil.isNotEmpty(lowGradeList)) { - // 查询大于升级时间,小于当天手动升级时间,全部订单 - List orderList = this.list(Wrappers.lambdaQuery() - .eq(SaOrder::getPkMember, cuMember.getPkId()) - .eq(SaOrder::getOrderStatus, EPayStatus.PAID.getValue()) - .eq(SaOrder::getOrderType, EOrderType.RETAIL_REPURCHASE.getValue()) - .ge(SaOrder::getPayTime, queryTime) - .le(SaOrder::getPayTime, queryEndTime) - .orderByAsc(SaOrder::getPayTime) - ); - - if (CollectionUtil.isNotEmpty(orderList)) { - // 订单购买时间和手动升级记录之间有订单,需要重算中间的等级 - // 取倒序(V3,V2,V1) - lowGradeList.sort(Comparator.comparing(BdGrade::getGradeValue).reversed()); - - SaOrder orderV1 = null; - SaOrder orderV2 = null; - SaOrder orderV3 = null; - // 旧等级盒数 - int oldGradeBox = oldGrade.getBoxNumber(); - - orderFor: - for (SaOrder saOrder : orderList) { - // 累积盒数,校验等级 - oldGradeBox += saOrder.getBoxNum(); - - for (BdGrade tmpGrade : lowGradeList) { - if (oldGradeBox >= tmpGrade.getBoxNumber()) { - if (EGrade.MAKER.getValue() == tmpGrade.getGradeValue()) { - // V3订单 - orderV3 = saOrder; - // 达到V3等级,直接结束 - break orderFor; - } else if (null == orderV2 && EGrade.YOU_KE.getValue() == tmpGrade.getGradeValue()) { - // V2订单 - orderV2 = saOrder; - // 达到V2等级,V1就不需要处理了,直接处理下次订单 - break; - } else if (null == orderV1 && EGrade.HAI_FAN.getValue() == tmpGrade.getGradeValue()) { - // V1订单 - orderV1 = saOrder; - } - } - - } - } - - BdGrade gradeV1 = this.getGrade(EGrade.HAI_FAN, gradeList); - BdGrade gradeV2 = this.getGrade(EGrade.YOU_KE, gradeList); - BdGrade gradeV3 = this.getGrade(EGrade.MAKER, gradeList); - if (null != orderV1) { - // V1等级订单 - createLevelList.add(this.packageMemberLevel(cuMember, orderV1, oldGrade.getPkId(), gradeV1.getPkId())); - newGrade = gradeV1; - if (null != orderV2) { - // V2等级订单 - createLevelList.add(this.packageMemberLevel(cuMember, orderV2, gradeV1.getPkId(), gradeV2.getPkId())); - newGrade = gradeV2; - if (null != orderV3) { - // V3等级订单 - createLevelList.add(this.packageMemberLevel(cuMember, orderV3, gradeV2.getPkId(), gradeV3.getPkId())); - newGrade = gradeV3; - } - } else { - // 没有V2等级订单 - if (null != orderV3) { - // V3等级订单 - createLevelList.add(this.packageMemberLevel(cuMember, orderV3, gradeV1.getPkId(), gradeV3.getPkId())); - newGrade = gradeV3; - } - } - } else if (null != orderV2) { - // V2等级订单 - createLevelList.add(this.packageMemberLevel(cuMember, orderV2, oldGrade.getPkId(), gradeV2.getPkId())); - newGrade = gradeV2; - if (null != orderV3) { - // V3等级订单 - createLevelList.add(this.packageMemberLevel(cuMember, orderV3, gradeV2.getPkId(), gradeV3.getPkId())); - newGrade = gradeV3; - } - } else if (null != orderV3) { - // V3等级订单 - createLevelList.add(this.packageMemberLevel(cuMember, orderV3, oldGrade.getPkId(), gradeV3.getPkId())); - newGrade = gradeV3; - } - } - } - return newGrade; - } - - /** - * 首日等级有变化,处理次日升级 - * - * @param cuMember 会员信息 - * @param oldLevel 旧等级 - * @param lastLevel 最大等级 - * @param queryTime 查询开始时间 - * @param queryEndTime 查询结束时间 - * @param gradeList 等级列表 - * @param createLevelList 创建升级记录 - * @return - */ - private BdGrade handleTodayNext(CuMember cuMember, Integer oldLevel, Integer lastLevel, Date queryTime, Date queryEndTime, - List gradeList, List createLevelList) { - // 次日升级之前的等级 - BdGrade oldGrade = this.getGrade(oldLevel, gradeList); - // 最终计算等级(如果没有默认为V3) - BdGrade endGrade = null != lastLevel ? this.getGrade(lastLevel, gradeList) : this.getGrade(EGrade.MAKER, gradeList); - // 获取需要处理的等级(大于升级记录的旧等级,小于等于升级记录的新等级) - List lowGradeList = gradeList.stream() - .filter(tmp -> (tmp.getGradeValue() > oldGrade.getGradeValue() && tmp.getGradeValue() <= endGrade.getGradeValue())) - .collect(Collectors.toList()); - - BdGrade newGrade = oldGrade; - - if (CollectionUtil.isNotEmpty(lowGradeList)) { - // 查询大于升级时间,小于当天手动升级时间,全部订单 - List orderList = this.list(Wrappers.lambdaQuery() - .eq(SaOrder::getPkMember, cuMember.getPkId()) - .eq(SaOrder::getOrderStatus, EPayStatus.PAID.getValue()) - .eq(SaOrder::getOrderType, EOrderType.RETAIL_REPURCHASE.getValue()) - .ge(SaOrder::getPayTime, queryTime) - .le(SaOrder::getPayTime, null != queryEndTime ? queryEndTime : new Date()) - .orderByAsc(SaOrder::getPayTime) - ); - - if (CollectionUtil.isNotEmpty(orderList)) { - // 升级记录以后有订单,才进行级别处理 - // 取倒序(V3,V2,V1) - lowGradeList.sort(Comparator.comparing(BdGrade::getGradeValue).reversed()); - - SaOrder orderV1 = null; - SaOrder orderV2 = null; - SaOrder orderV3 = null; - // 旧等级盒数 - int oldGradeBox = oldGrade.getBoxNumber(); - - orderFor: - for (SaOrder saOrder : orderList) { - for (BdGrade tmpGrade : lowGradeList) { - if (saOrder.getBoxNum() >= (tmpGrade.getBoxNumber() - oldGradeBox)) { - if (EGrade.MAKER.getValue() == tmpGrade.getGradeValue()) { - // V3订单 - orderV3 = saOrder; - // 达到V3等级,直接结束 - break orderFor; - } else if (null == orderV2 && EGrade.YOU_KE.getValue() == tmpGrade.getGradeValue()) { - // V2订单 - orderV2 = saOrder; - oldGradeBox = tmpGrade.getBoxNumber(); - // 达到V2等级,V1就不需要处理了,直接处理下次订单 - break; - } else if (null == orderV1 && EGrade.HAI_FAN.getValue() == tmpGrade.getGradeValue()) { - // V1订单 - orderV1 = saOrder; - oldGradeBox = tmpGrade.getBoxNumber(); - } - } - } - } - - BdGrade gradeV1 = this.getGrade(EGrade.HAI_FAN, gradeList); - BdGrade gradeV2 = this.getGrade(EGrade.YOU_KE, gradeList); - BdGrade gradeV3 = this.getGrade(EGrade.MAKER, gradeList); - if (null != orderV1) { - // 有V1等级订单 - if (null != orderV2) { - // 有V2等级订单 - if (orderV1.getPkId().equals(orderV2.getPkId())) { - // V1和V2订单相同,只处理V2 - if (null != orderV3) { - // 有V3等级订单 - if (orderV2.getPkId().equals(orderV3.getPkId())) { - // V2和V3订单相同,只处理V3 - createLevelList.add(this.packageMemberLevel(cuMember, orderV3, oldGrade.getPkId(), gradeV3.getPkId())); - newGrade = gradeV3; - } else { - // V2和V3订单不相同,先处理V2,再处理V3 - createLevelList.add(this.packageMemberLevel(cuMember, orderV2, oldGrade.getPkId(), gradeV2.getPkId())); - createLevelList.add(this.packageMemberLevel(cuMember, orderV3, gradeV2.getPkId(), gradeV3.getPkId())); - newGrade = gradeV3; - } - } else { - // 没有V3等级订单,只处理V2 - createLevelList.add(this.packageMemberLevel(cuMember, orderV2, oldGrade.getPkId(), gradeV2.getPkId())); - newGrade = gradeV2; - } - } else { - // V1和V2订单不相同 - if (null != orderV3) { - // 有V3等级订单 - if (orderV2.getPkId().equals(orderV3.getPkId())) { - // V2和V3等级相同,先处理V1,再处理V3 - createLevelList.add(this.packageMemberLevel(cuMember, orderV1, oldGrade.getPkId(), gradeV1.getPkId())); - createLevelList.add(this.packageMemberLevel(cuMember, orderV3, gradeV1.getPkId(), gradeV3.getPkId())); - newGrade = gradeV3; - } else { - // V2和V3等级不相同,先处理V1,再处理V2,最后处理V3 - createLevelList.add(this.packageMemberLevel(cuMember, orderV1, oldGrade.getPkId(), gradeV1.getPkId())); - createLevelList.add(this.packageMemberLevel(cuMember, orderV2, gradeV1.getPkId(), gradeV2.getPkId())); - createLevelList.add(this.packageMemberLevel(cuMember, orderV3, gradeV2.getPkId(), gradeV3.getPkId())); - newGrade = gradeV3; - } - } else { - // 没有V3等级订单,处理V1 V2 - createLevelList.add(this.packageMemberLevel(cuMember, orderV1, oldGrade.getPkId(), gradeV1.getPkId())); - createLevelList.add(this.packageMemberLevel(cuMember, orderV2, gradeV1.getPkId(), gradeV2.getPkId())); - newGrade = gradeV2; - } - } - } else { - // 没有V2等级订单,只处理V1 - createLevelList.add(this.packageMemberLevel(cuMember, orderV1, oldGrade.getPkId(), gradeV1.getPkId())); - newGrade = gradeV1; - } - } else if (null != orderV2) { - // 有V2等级订单,V1没有 - if (null != orderV3) { - // 有V3等级订单 - if (orderV2.getPkId().equals(orderV3.getPkId())) { - // V2和V3订单相同,只处理V3 - createLevelList.add(this.packageMemberLevel(cuMember, orderV3, oldGrade.getPkId(), gradeV3.getPkId())); - newGrade = gradeV3; - } else { - // V2和V3订单不相同,先处理V2,再处理V3 - createLevelList.add(this.packageMemberLevel(cuMember, orderV2, oldGrade.getPkId(), gradeV2.getPkId())); - createLevelList.add(this.packageMemberLevel(cuMember, orderV3, gradeV2.getPkId(), gradeV3.getPkId())); - newGrade = gradeV3; - } - } else { - // 没有V3,只处理V2 - createLevelList.add(this.packageMemberLevel(cuMember, orderV2, oldGrade.getPkId(), gradeV2.getPkId())); - newGrade = gradeV2; - } - } else if (null != orderV3) { - // 有V3等级订单,V1、V2没有 - createLevelList.add(this.packageMemberLevel(cuMember, orderV3, oldGrade.getPkId(), gradeV3.getPkId())); - newGrade = gradeV3; - } - } - } - - return newGrade; - } - - /** - * 处理次日一次性升级 - * - * @param cuMember 会员信息 - * @param queryStartTime 升级查询开始时间 - * @param queryEndTime 升级查询结束时间 - * @param oldGrade 升级旧等级 - * @param lowGradeList 需要处理的升级等级 - * @param gradeList 等级列表 - * @param createLevelList 需要新増的升级记录 - */ - private BdGrade handleNextDay(CuMember cuMember, Date queryStartTime, Date queryEndTime, BdGrade oldGrade, List lowGradeList, - List gradeList, List createLevelList) { - BdGrade newGrade = oldGrade; - - if (CollectionUtil.isNotEmpty(lowGradeList)) { - // 查询大于升级时间,订单盒数大于等于升级盒数的订单 - List orderList = this.list(Wrappers.lambdaQuery() - .eq(SaOrder::getPkMember, cuMember.getPkId()) - .eq(SaOrder::getOrderStatus, EPayStatus.PAID.getValue()) - .eq(SaOrder::getOrderType, EOrderType.RETAIL_REPURCHASE.getValue()) - .ge(SaOrder::getBoxNum, lowGradeList.get(0).getBoxNumber()) - .ge(SaOrder::getPayTime, queryStartTime) - .le(null != queryEndTime, SaOrder::getPayTime, queryEndTime) - .orderByAsc(SaOrder::getPayTime) - ); - - if (CollectionUtil.isNotEmpty(orderList)) { - // 升级记录以后有订单,才进行级别处理 - // 取倒序(V3,V2,V1) - lowGradeList.sort(Comparator.comparing(BdGrade::getGradeValue).reversed()); - - SaOrder orderV1 = null; - SaOrder orderV2 = null; - SaOrder orderV3 = null; - // 旧等级盒数 - int oldGradeBox = oldGrade.getBoxNumber(); - - orderFor: - for (SaOrder saOrder : orderList) { - for (BdGrade tmpGrade : lowGradeList) { - if (saOrder.getBoxNum() >= (tmpGrade.getBoxNumber() - oldGradeBox)) { - if (EGrade.MAKER.getValue() == tmpGrade.getGradeValue()) { - // V3订单 - orderV3 = saOrder; - // 达到V3等级,直接结束 - break orderFor; - } else if (null == orderV2 && EGrade.YOU_KE.getValue() == tmpGrade.getGradeValue()) { - // V2订单 - orderV2 = saOrder; - oldGradeBox = tmpGrade.getBoxNumber(); - // 达到V2等级,V1就不需要处理了,直接处理下次订单 - break; - } else if (null == orderV1 && EGrade.HAI_FAN.getValue() == tmpGrade.getGradeValue()) { - // V1订单 - orderV1 = saOrder; - oldGradeBox = tmpGrade.getBoxNumber(); - } - } - } - } - - BdGrade gradeV1 = this.getGrade(EGrade.HAI_FAN, gradeList); - BdGrade gradeV2 = this.getGrade(EGrade.YOU_KE, gradeList); - BdGrade gradeV3 = this.getGrade(EGrade.MAKER, gradeList); - if (null != orderV1) { - // 有V1等级订单 - if (null != orderV2) { - // 有V2等级订单 - if (orderV1.getPkId().equals(orderV2.getPkId())) { - // V1和V2订单相同,只处理V2 - if (null != orderV3) { - // 有V3等级订单 - if (orderV2.getPkId().equals(orderV3.getPkId())) { - // V2和V3订单相同,只处理V3 - createLevelList.add(this.packageMemberLevel(cuMember, orderV3, oldGrade.getPkId(), gradeV3.getPkId())); - newGrade = gradeV3; - } else { - // V2和V3订单不相同,先处理V2,再处理V3 - createLevelList.add(this.packageMemberLevel(cuMember, orderV2, oldGrade.getPkId(), gradeV2.getPkId())); - createLevelList.add(this.packageMemberLevel(cuMember, orderV3, gradeV2.getPkId(), gradeV3.getPkId())); - newGrade = gradeV3; - } - } else { - // 没有V3等级订单,只处理V2 - createLevelList.add(this.packageMemberLevel(cuMember, orderV2, oldGrade.getPkId(), gradeV2.getPkId())); - newGrade = gradeV2; - } - } else { - // V1和V2订单不相同 - if (null != orderV3) { - // 有V3等级订单 - if (orderV2.getPkId().equals(orderV3.getPkId())) { - // V2和V3等级相同,先处理V1,再处理V3 - createLevelList.add(this.packageMemberLevel(cuMember, orderV1, oldGrade.getPkId(), gradeV1.getPkId())); - createLevelList.add(this.packageMemberLevel(cuMember, orderV3, gradeV1.getPkId(), gradeV3.getPkId())); - newGrade = gradeV3; - } else { - // V2和V3等级不相同,先处理V1,再处理V2,最后处理V3 - createLevelList.add(this.packageMemberLevel(cuMember, orderV1, oldGrade.getPkId(), gradeV1.getPkId())); - createLevelList.add(this.packageMemberLevel(cuMember, orderV2, gradeV1.getPkId(), gradeV2.getPkId())); - createLevelList.add(this.packageMemberLevel(cuMember, orderV3, gradeV2.getPkId(), gradeV3.getPkId())); - newGrade = gradeV3; - } - } else { - // 没有V3等级订单,处理V1 V2 - createLevelList.add(this.packageMemberLevel(cuMember, orderV1, oldGrade.getPkId(), gradeV1.getPkId())); - createLevelList.add(this.packageMemberLevel(cuMember, orderV2, gradeV1.getPkId(), gradeV2.getPkId())); - newGrade = gradeV2; - } - } - } else { - // 没有V2等级订单 - if (null != orderV3) { - // 有V3等级订单 - if (orderV1.getPkId().equals(orderV3.getPkId())) { - // V1和V3相同,只处理V3 - createLevelList.add(this.packageMemberLevel(cuMember, orderV3, oldGrade.getPkId(), gradeV3.getPkId())); - newGrade = gradeV3; - } else { - // V1和V3不相同,先处理V1,再处理V3 - createLevelList.add(this.packageMemberLevel(cuMember, orderV1, oldGrade.getPkId(), gradeV1.getPkId())); - createLevelList.add(this.packageMemberLevel(cuMember, orderV3, gradeV1.getPkId(), gradeV3.getPkId())); - newGrade = gradeV3; - } - } else { - // 没有V3等级订单,只处理V1 - createLevelList.add(this.packageMemberLevel(cuMember, orderV1, oldGrade.getPkId(), gradeV1.getPkId())); - newGrade = gradeV1; - } - } - } else if (null != orderV2) { - // 有V2等级订单,V1没有 - if (null != orderV3) { - // 有V3等级订单 - if (orderV2.getPkId().equals(orderV3.getPkId())) { - // V2和V3订单相同,只处理V3 - createLevelList.add(this.packageMemberLevel(cuMember, orderV3, oldGrade.getPkId(), gradeV3.getPkId())); - newGrade = gradeV3; - } else { - // V2和V3订单不相同,先处理V2,再处理V3 - createLevelList.add(this.packageMemberLevel(cuMember, orderV2, oldGrade.getPkId(), gradeV2.getPkId())); - createLevelList.add(this.packageMemberLevel(cuMember, orderV3, gradeV2.getPkId(), gradeV3.getPkId())); - newGrade = gradeV3; - } - } else { - // 没有V3,只处理V2 - createLevelList.add(this.packageMemberLevel(cuMember, orderV2, oldGrade.getPkId(), gradeV2.getPkId())); - newGrade = gradeV2; - } - } else if (null != orderV3) { - // 有V3等级订单,V1、V2没有 - createLevelList.add(this.packageMemberLevel(cuMember, orderV3, oldGrade.getPkId(), gradeV3.getPkId())); - newGrade = gradeV3; - } - - } - } - return newGrade; - } +// /** +// * 处理次日一次性升级 +// * +// * @param cuMember 会员信息 +// * @param queryStartTime 升级查询开始时间 +// * @param queryEndTime 升级查询结束时间 +// * @param oldGrade 升级旧等级 +// * @param lowGradeList 需要处理的升级等级 +// * @param gradeList 等级列表 +// * @param createLevelList 需要新増的升级记录 +// */ +// private BdGrade handleNextDay(CuMember cuMember, Date queryStartTime, Date queryEndTime, BdGrade oldGrade, List lowGradeList, +// List gradeList, List createLevelList) { +// BdGrade newGrade = oldGrade; +// +// if (CollectionUtil.isNotEmpty(lowGradeList)) { +// // 查询大于升级时间,订单盒数大于等于升级盒数的订单 +// List orderList = this.list(Wrappers.lambdaQuery() +// .eq(SaOrder::getPkMember, cuMember.getPkId()) +// .eq(SaOrder::getOrderStatus, EPayStatus.PAID.getValue()) +// .eq(SaOrder::getOrderType, EOrderType.RETAIL_REPURCHASE.getValue()) +// .ge(SaOrder::getBoxNum, lowGradeList.get(0).getBoxNumber()) +// .ge(SaOrder::getPayTime, queryStartTime) +// .le(null != queryEndTime, SaOrder::getPayTime, queryEndTime) +// .orderByAsc(SaOrder::getPayTime) +// ); +// +// if (CollectionUtil.isNotEmpty(orderList)) { +// // 升级记录以后有订单,才进行级别处理 +// // 取倒序(V3,V2,V1) +// lowGradeList.sort(Comparator.comparing(BdGrade::getGradeValue).reversed()); +// +// SaOrder orderV1 = null; +// SaOrder orderV2 = null; +// SaOrder orderV3 = null; +// // 旧等级盒数 +// int oldGradeBox = oldGrade.getBoxNumber(); +// +// orderFor: +// for (SaOrder saOrder : orderList) { +// for (BdGrade tmpGrade : lowGradeList) { +// if (saOrder.getBoxNum() >= (tmpGrade.getBoxNumber() - oldGradeBox)) { +// if (EGrade.MAKER.getValue() == tmpGrade.getGradeValue()) { +// // V3订单 +// orderV3 = saOrder; +// // 达到V3等级,直接结束 +// break orderFor; +// } else if (null == orderV2 && EGrade.YOU_KE.getValue() == tmpGrade.getGradeValue()) { +// // V2订单 +// orderV2 = saOrder; +// oldGradeBox = tmpGrade.getBoxNumber(); +// // 达到V2等级,V1就不需要处理了,直接处理下次订单 +// break; +// } else if (null == orderV1 && EGrade.HAI_FAN.getValue() == tmpGrade.getGradeValue()) { +// // V1订单 +// orderV1 = saOrder; +// oldGradeBox = tmpGrade.getBoxNumber(); +// } +// } +// } +// } +// +// BdGrade gradeV1 = this.getGrade(EGrade.HAI_FAN, gradeList); +// BdGrade gradeV2 = this.getGrade(EGrade.YOU_KE, gradeList); +// BdGrade gradeV3 = this.getGrade(EGrade.MAKER, gradeList); +// if (null != orderV1) { +// // 有V1等级订单 +// if (null != orderV2) { +// // 有V2等级订单 +// if (orderV1.getPkId().equals(orderV2.getPkId())) { +// // V1和V2订单相同,只处理V2 +// if (null != orderV3) { +// // 有V3等级订单 +// if (orderV2.getPkId().equals(orderV3.getPkId())) { +// // V2和V3订单相同,只处理V3 +// createLevelList.add(this.packageMemberLevel(cuMember, orderV3, oldGrade.getPkId(), gradeV3.getPkId())); +// newGrade = gradeV3; +// } else { +// // V2和V3订单不相同,先处理V2,再处理V3 +// createLevelList.add(this.packageMemberLevel(cuMember, orderV2, oldGrade.getPkId(), gradeV2.getPkId())); +// createLevelList.add(this.packageMemberLevel(cuMember, orderV3, gradeV2.getPkId(), gradeV3.getPkId())); +// newGrade = gradeV3; +// } +// } else { +// // 没有V3等级订单,只处理V2 +// createLevelList.add(this.packageMemberLevel(cuMember, orderV2, oldGrade.getPkId(), gradeV2.getPkId())); +// newGrade = gradeV2; +// } +// } else { +// // V1和V2订单不相同 +// if (null != orderV3) { +// // 有V3等级订单 +// if (orderV2.getPkId().equals(orderV3.getPkId())) { +// // V2和V3等级相同,先处理V1,再处理V3 +// createLevelList.add(this.packageMemberLevel(cuMember, orderV1, oldGrade.getPkId(), gradeV1.getPkId())); +// createLevelList.add(this.packageMemberLevel(cuMember, orderV3, gradeV1.getPkId(), gradeV3.getPkId())); +// newGrade = gradeV3; +// } else { +// // V2和V3等级不相同,先处理V1,再处理V2,最后处理V3 +// createLevelList.add(this.packageMemberLevel(cuMember, orderV1, oldGrade.getPkId(), gradeV1.getPkId())); +// createLevelList.add(this.packageMemberLevel(cuMember, orderV2, gradeV1.getPkId(), gradeV2.getPkId())); +// createLevelList.add(this.packageMemberLevel(cuMember, orderV3, gradeV2.getPkId(), gradeV3.getPkId())); +// newGrade = gradeV3; +// } +// } else { +// // 没有V3等级订单,处理V1 V2 +// createLevelList.add(this.packageMemberLevel(cuMember, orderV1, oldGrade.getPkId(), gradeV1.getPkId())); +// createLevelList.add(this.packageMemberLevel(cuMember, orderV2, gradeV1.getPkId(), gradeV2.getPkId())); +// newGrade = gradeV2; +// } +// } +// } else { +// // 没有V2等级订单 +// if (null != orderV3) { +// // 有V3等级订单 +// if (orderV1.getPkId().equals(orderV3.getPkId())) { +// // V1和V3相同,只处理V3 +// createLevelList.add(this.packageMemberLevel(cuMember, orderV3, oldGrade.getPkId(), gradeV3.getPkId())); +// newGrade = gradeV3; +// } else { +// // V1和V3不相同,先处理V1,再处理V3 +// createLevelList.add(this.packageMemberLevel(cuMember, orderV1, oldGrade.getPkId(), gradeV1.getPkId())); +// createLevelList.add(this.packageMemberLevel(cuMember, orderV3, gradeV1.getPkId(), gradeV3.getPkId())); +// newGrade = gradeV3; +// } +// } else { +// // 没有V3等级订单,只处理V1 +// createLevelList.add(this.packageMemberLevel(cuMember, orderV1, oldGrade.getPkId(), gradeV1.getPkId())); +// newGrade = gradeV1; +// } +// } +// } else if (null != orderV2) { +// // 有V2等级订单,V1没有 +// if (null != orderV3) { +// // 有V3等级订单 +// if (orderV2.getPkId().equals(orderV3.getPkId())) { +// // V2和V3订单相同,只处理V3 +// createLevelList.add(this.packageMemberLevel(cuMember, orderV3, oldGrade.getPkId(), gradeV3.getPkId())); +// newGrade = gradeV3; +// } else { +// // V2和V3订单不相同,先处理V2,再处理V3 +// createLevelList.add(this.packageMemberLevel(cuMember, orderV2, oldGrade.getPkId(), gradeV2.getPkId())); +// createLevelList.add(this.packageMemberLevel(cuMember, orderV3, gradeV2.getPkId(), gradeV3.getPkId())); +// newGrade = gradeV3; +// } +// } else { +// // 没有V3,只处理V2 +// createLevelList.add(this.packageMemberLevel(cuMember, orderV2, oldGrade.getPkId(), gradeV2.getPkId())); +// newGrade = gradeV2; +// } +// } else if (null != orderV3) { +// // 有V3等级订单,V1、V2没有 +// createLevelList.add(this.packageMemberLevel(cuMember, orderV3, oldGrade.getPkId(), gradeV3.getPkId())); +// newGrade = gradeV3; +// } +// +// } +// } +// return newGrade; +// } /** * 获取等级(没有则返回V0) @@ -3418,4 +3419,28 @@ public class SaOrderServiceImpl extends ServiceImpl impl return tmpGrade; } + /** + * 处理商品盒数 + * + * @param orderItemsParams + */ + private void handleWaresBoxNum(Integer specialArea, List orderItemsParams) { + if (CollectionUtil.isNotEmpty(orderItemsParams)) { + List waresCodeList = orderItemsParams.stream().map(OrderItemsParam::getWaresCode).collect(Collectors.toList()); + List waresList = iBdWaresService.list(Wrappers.lambdaQuery() + .eq(BdWares::getSpecialArea, specialArea) + .in(BdWares::getWaresCode, waresCodeList) + ); + if (CollectionUtil.isNotEmpty(waresList)) { + for (OrderItemsParam orderItemsParam : orderItemsParams) { + for (BdWares bdWares : waresList) { + if (orderItemsParam.getWaresCode().equals(bdWares.getWaresCode())) { + orderItemsParam.setBoxNum(bdWares.getBoxNum()); + } + } + } + } + } + } + } diff --git a/bd-business/bd-business-sale/src/main/java/com/hzs/sale/wares/service/impl/BdWaresDetailServiceImpl.java b/bd-business/bd-business-sale/src/main/java/com/hzs/sale/wares/service/impl/BdWaresDetailServiceImpl.java index aa0f66bf..5b6ea58f 100644 --- a/bd-business/bd-business-sale/src/main/java/com/hzs/sale/wares/service/impl/BdWaresDetailServiceImpl.java +++ b/bd-business/bd-business-sale/src/main/java/com/hzs/sale/wares/service/impl/BdWaresDetailServiceImpl.java @@ -57,7 +57,6 @@ public class BdWaresDetailServiceImpl extends ServiceImpl - select nvl(sum(soi.wares_quantity), 0) wares_quantity from sa_order so left join sa_order_items soi diff --git a/bd-business/bd-business-sale/src/main/resources/mapper/sale/wares/BdWaresDetailMapper.xml b/bd-business/bd-business-sale/src/main/resources/mapper/sale/wares/BdWaresDetailMapper.xml index 93e72fbb..86f5b30e 100644 --- a/bd-business/bd-business-sale/src/main/resources/mapper/sale/wares/BdWaresDetailMapper.xml +++ b/bd-business/bd-business-sale/src/main/resources/mapper/sale/wares/BdWaresDetailMapper.xml @@ -36,6 +36,8 @@ + + @@ -50,7 +52,8 @@ be.pk_special_currency,bw.wares_code, bw.wares_name, bd.is_gift is_gift, bd.pk_product,bs.price,bs.achieve,bp.pk_supplier,bp.shipping_channel,bp.product_code, - bs.ass_achieve,b.specs_name,b.specs_name_id + bs.ass_achieve,b.specs_name,b.specs_name_id, + bw.area_income, bw.box_num from bd_wares bw inner join bd_wares_extend be on bw.pk_id = be.pk_wares diff --git a/bd-business/bd-business-sale/src/main/resources/mapper/sale/wares/BdWaresMapper.xml b/bd-business/bd-business-sale/src/main/resources/mapper/sale/wares/BdWaresMapper.xml index 6a4005c7..50f93263 100644 --- a/bd-business/bd-business-sale/src/main/resources/mapper/sale/wares/BdWaresMapper.xml +++ b/bd-business/bd-business-sale/src/main/resources/mapper/sale/wares/BdWaresMapper.xml @@ -159,7 +159,7 @@ ac.CLASSIFY_NAME,we.OPERATE_SCOPE,we.IS_SALE,we.IS_PUT_ON,we.PRE_SALE_STATUS,bw.PK_ID,we.ARRIVAL_TIME,we.PUT_ON_TIME,we.PUT_OFF_TIME, we.SALES actualSales,we.SALES,bw.CREATION_TIME,bw.IS_RECOMMEND,bw.LISTING_TIME,bw.REMOVAL_TIME,bw.SORT_STATUS,we.IS_MAKER_GIFT, sc.TEMP_NAME, we.maker_income, nvl(we.SYSTEM_TYPE, 2) SYSTEM_TYPE, bw.WARES_STATUS, - AREA_INCOME, BOX_NUM + bw.area_income, bw.box_num from bd_wares bw left join BD_WARES_EXTEND we on we.PK_WARES = bw.PK_ID left join BD_AREA_CLASSIFY ac on ac.PK_ID = bw.PK_AREA_CLASSIFY diff --git a/bd-common/bd-common-core/src/main/java/com/hzs/common/core/utils/BoxProductUtil.java b/bd-common/bd-common-core/src/main/java/com/hzs/common/core/utils/BoxProductUtil.java index fc513d94..f4104df9 100644 --- a/bd-common/bd-common-core/src/main/java/com/hzs/common/core/utils/BoxProductUtil.java +++ b/bd-common/bd-common-core/src/main/java/com/hzs/common/core/utils/BoxProductUtil.java @@ -14,7 +14,7 @@ public class BoxProductUtil { * @param systemType 系统类型(为空返回全部盒数商品) * @return */ - public static List getBoxProductListBySystemType(Integer systemType) { + public static List getBoxWaresListBySystemType(Integer systemType) { List productList = new ArrayList<>(0); if (null == systemType || ESystemType.ALL.getValue() == systemType) { diff --git a/bd-common/bd-common-domain/src/main/java/com/hzs/common/domain/member/achieve/CuMemberRetailRange.java b/bd-common/bd-common-domain/src/main/java/com/hzs/common/domain/member/achieve/CuMemberRetailRange.java index 6183a357..db1549e8 100644 --- a/bd-common/bd-common-domain/src/main/java/com/hzs/common/domain/member/achieve/CuMemberRetailRange.java +++ b/bd-common/bd-common-domain/src/main/java/com/hzs/common/domain/member/achieve/CuMemberRetailRange.java @@ -117,17 +117,17 @@ public class CuMemberRetailRange extends BaseEntity { * 本人当天新消费盒数 */ @TableField("NEW_BOX_NUM") - private Integer newBoxNum; + private BigDecimal newBoxNum; /** * 本人累计消费盒数 */ @TableField("CONSUME_BOX_NUM") - private Integer consumeBoxNum; + private BigDecimal consumeBoxNum; /** * 本人月累计盒数 */ @TableField("MONTH_BOX_NUM") - private Integer monthBoxNum; + private BigDecimal monthBoxNum; /** * 本人当天新消费pv @@ -159,17 +159,17 @@ public class CuMemberRetailRange extends BaseEntity { * 团队当天新增盒数 */ @TableField("TEAM_NEW_BOX_NUM") - private Integer teamNewBoxNum; + private BigDecimal teamNewBoxNum; /** * 团队累计盒数 */ @TableField("TEAM_BOX_NUM") - private Integer teamBoxNum; + private BigDecimal teamBoxNum; /** * 团队月累计盒数 */ @TableField("TEAM_MONTH_BOX_NUM") - private Integer teamMonthBoxNum; + private BigDecimal teamMonthBoxNum; /** * 团队当天新增消费pv @@ -238,13 +238,13 @@ public class CuMemberRetailRange extends BaseEntity { * 大区注水盒数 */ @TableField("big_box_num") - private Integer bigBoxNum; + private BigDecimal bigBoxNum; /** * 小区注水盒数 */ @TableField("small_box_num") - private Integer smallBoxNum; + private BigDecimal smallBoxNum; @TableField("big_team_pv") private BigDecimal bigTeamPv; diff --git a/bd-common/bd-common-domain/src/main/java/com/hzs/common/domain/member/achieve/CuMemberRetailS.java b/bd-common/bd-common-domain/src/main/java/com/hzs/common/domain/member/achieve/CuMemberRetailS.java index fefdea64..8c19f13d 100644 --- a/bd-common/bd-common-domain/src/main/java/com/hzs/common/domain/member/achieve/CuMemberRetailS.java +++ b/bd-common/bd-common-domain/src/main/java/com/hzs/common/domain/member/achieve/CuMemberRetailS.java @@ -47,13 +47,13 @@ public class CuMemberRetailS implements Serializable { * 新増盒数 */ @TableField("NEW_BOX_NUM") - private Integer newBoxNum; + private BigDecimal newBoxNum; /** * 伞下新増盒数 */ @TableField("TEAM_NEW_BOX_NUM") - private Integer teamNewNoxNum; + private BigDecimal teamNewNoxNum; /** * 新増业绩 diff --git a/bd-common/bd-common-domain/src/main/java/com/hzs/common/domain/sale/ext/BdWaresDetailExt.java b/bd-common/bd-common-domain/src/main/java/com/hzs/common/domain/sale/ext/BdWaresDetailExt.java index a331f646..4ad55cea 100644 --- a/bd-common/bd-common-domain/src/main/java/com/hzs/common/domain/sale/ext/BdWaresDetailExt.java +++ b/bd-common/bd-common-domain/src/main/java/com/hzs/common/domain/sale/ext/BdWaresDetailExt.java @@ -138,4 +138,14 @@ public class BdWaresDetailExt extends BdWaresDetail { */ private Integer pkUnit; + /** + * 复购区域分红 + */ + private BigDecimal areaIncome; + + /** + * 商品上传盒数 + */ + private BigDecimal boxNum; + } diff --git a/bd-common/bd-common-domain/src/main/java/com/hzs/common/domain/sale/ext/SaOrderWaresExt.java b/bd-common/bd-common-domain/src/main/java/com/hzs/common/domain/sale/ext/SaOrderWaresExt.java index 37e0e56b..34bae43a 100644 --- a/bd-common/bd-common-domain/src/main/java/com/hzs/common/domain/sale/ext/SaOrderWaresExt.java +++ b/bd-common/bd-common-domain/src/main/java/com/hzs/common/domain/sale/ext/SaOrderWaresExt.java @@ -20,4 +20,9 @@ public class SaOrderWaresExt extends SaOrderWares { */ private BigDecimal areaIncome; + /** + * 商品上传盒数 + */ + private BigDecimal boxNum; + } diff --git a/bd-common/bd-common-domain/src/main/java/com/hzs/common/domain/sale/order/SaOrder.java b/bd-common/bd-common-domain/src/main/java/com/hzs/common/domain/sale/order/SaOrder.java index 45cc2441..91101ae7 100644 --- a/bd-common/bd-common-domain/src/main/java/com/hzs/common/domain/sale/order/SaOrder.java +++ b/bd-common/bd-common-domain/src/main/java/com/hzs/common/domain/sale/order/SaOrder.java @@ -224,6 +224,6 @@ public class SaOrder extends BaseEntity { * 指定商品盒数 */ @TableField("BOX_NUM") - private Integer boxNum; + private BigDecimal boxNum; } diff --git a/bd-common/bd-common-domain/src/main/java/com/hzs/common/domain/system/config/BdGrade.java b/bd-common/bd-common-domain/src/main/java/com/hzs/common/domain/system/config/BdGrade.java index b0230d3b..e87ccc42 100644 --- a/bd-common/bd-common-domain/src/main/java/com/hzs/common/domain/system/config/BdGrade.java +++ b/bd-common/bd-common-domain/src/main/java/com/hzs/common/domain/system/config/BdGrade.java @@ -164,19 +164,19 @@ public class BdGrade extends BaseEntity { * 购买盒数 */ @TableField("BOX_NUMBER") - private Integer boxNumber; + private BigDecimal boxNumber; /** * 累计盒数 */ @TableField("BOX_TOTAL") - private Integer boxTotal; + private BigDecimal boxTotal; /** * 小市场盒数 */ @TableField("BOX_SMALL_TOTAL") - private Integer boxSmallTotal; + private BigDecimal boxSmallTotal; /** * 购买价格