From 18fe81305d2d04edfbf27e17f6154aa898d550ab Mon Sep 17 00:00:00 2001 From: cabbage <281119120@qq.com> Date: Wed, 20 Aug 2025 18:30:12 +0800 Subject: [PATCH] =?UTF-8?q?##=20=E5=95=86=E5=93=81=E3=80=81=E8=AE=A2?= =?UTF-8?q?=E5=8D=95=E3=80=81=E7=BB=93=E7=AE=97=E6=94=AF=E6=94=AF=E6=8C=81?= =?UTF-8?q?=E7=9B=92=E6=95=B0=E4=B8=BA=E5=B0=8F=E6=95=B0=EF=BC=9B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/impl/BonusSettleRangeHandle.java | 49 ++++++++++++------- .../bonus/achieve/CuMemberTreeMapper.xml | 16 +++--- .../member/vo/CuMemberRetailAchieveVO.java | 2 +- .../member/vo/DirectPushAmountPvBoxVo.java | 38 ++++++-------- .../report/member/MemberReportMapper.xml | 32 ++++++------ .../service/impl/RetailOrderServiceImpl.java | 26 ++-------- .../sale/order/mapper/SaOrderItemsMapper.java | 11 +++-- .../hzs/sale/order/param/OrderItemsParam.java | 3 +- .../order/service/ISaOrderItemsService.java | 3 +- .../sale/order/service/ISaOrderService.java | 4 +- .../impl/OrderBusinessServiceImpl.java | 2 +- .../service/impl/SaOrderItemsServiceImpl.java | 3 +- .../service/impl/SaOrderServiceImpl.java | 48 +++++++++++------- .../controller/manage/BdWaresController.java | 3 +- .../com/hzs/sale/wares/param/WaresParams.java | 2 +- .../mapper/sale/order/SaOrderItemsMapper.xml | 14 +----- .../member/achieve/CuMemberRetailRange.java | 16 +++--- .../domain/sale/ext/BdWaresDetailExt.java | 2 +- .../hzs/common/domain/sale/order/SaOrder.java | 2 +- .../hzs/common/domain/sale/wares/BdWares.java | 2 +- .../common/domain/system/config/BdGrade.java | 6 +-- 21 files changed, 137 insertions(+), 147 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 f7f44440..7a56e2db 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 @@ -126,7 +126,6 @@ public class BonusSettleRangeHandle extends BonusSettleHandle { // 配送收益配置 Map regionMap = iMemberServiceApi.listEffectiveRegion(settleStartDate).getData(); - // 直推、复购级差收益 List cuMemberBonusRangeList = new ArrayList<>(); // 复购配送收益 @@ -147,14 +146,14 @@ public class BonusSettleRangeHandle extends BonusSettleHandle { CuMemberRetailRangeExt sourceMemberRangeExt = memberRangeExtMap.get(saOrderExt.getPkMember()); // 订单指定产品盒数(计算等级使用) - int boxNum = saOrderExt.getBoxNum(); + BigDecimal boxNum = saOrderExt.getBoxNum(); // 个人累计消费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)); @@ -169,7 +168,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 ) { // 注册或升级订单并且存在盒数产品,才有 直推级差 cuMemberBonusRangeList.addAll(calculateRetailRangeBonus(memberRangeExtMap, cuMemberBonusMap, bonusConfigDTO, period, saOrderExt, gradeIdMap)); @@ -186,20 +185,22 @@ public class BonusSettleRangeHandle extends BonusSettleHandle { } } } - // 订单存在自动升级记录(高级店主处理) + // 订单存在自动升级记录(高级店主、区域董事处理) if (autoLevelMap.containsKey(saOrderExt.getPkId())) { CuMemberLevel cuMemberLevel = autoLevelMap.get(saOrderExt.getPkId()); if (gradeIdMap.containsKey(cuMemberLevel.getNewLevel())) { BdGrade bdGrade = gradeIdMap.get(cuMemberLevel.getNewLevel()); CuMemberRetailRangeExt tmpMemberRetailRange = memberRangeExtMap.get(cuMemberLevel.getPkMember()); - tmpMemberRetailRange.setPkGrade(bdGrade.getPkId()); - tmpMemberRetailRange.setGradeValue(bdGrade.getGradeValue()); - tmpMemberRetailRange.setGradeName(bdGrade.getGradeName()); + if (bdGrade.getGradeValue() > tmpMemberRetailRange.getGradeValue()) { + tmpMemberRetailRange.setPkGrade(bdGrade.getPkId()); + tmpMemberRetailRange.setGradeValue(bdGrade.getGradeValue()); + tmpMemberRetailRange.setGradeName(bdGrade.getGradeName()); + } } } } else if (EOrderType.RETAIL_REPURCHASE.getValue() == saOrderExt.getOrderType()) { // 复购订单 - if (boxNum > 0) { + if (boxNum.compareTo(BigDecimal.ZERO) > 0) { // 存在盒数商品,计算复购级差 cuMemberBonusRangeList.addAll(calculateRetailRepurRangeBonus(memberRangeExtMap, cuMemberBonusMap, bonusConfigDTO, period, saOrderExt)); @@ -234,7 +235,7 @@ public class BonusSettleRangeHandle extends BonusSettleHandle { * 累计团队盒数、业绩等 */ public void calculateRetailRangeGradeAwards(Map memberRangeExtMap, SaOrderExt saOrderExt, - Integer boxNum, Map activateMap) { + BigDecimal boxNum, Map activateMap) { // 订单会员 CuMemberRetailRangeExt sourceMemberRangeExt = memberRangeExtMap.get(saOrderExt.getPkMember()); // 订单会员的推荐人 @@ -261,9 +262,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)); } targetMemberRangeExt = memberRangeExtMap.get(targetMemberRangeExt.getPkParent()); } @@ -281,9 +282,23 @@ public class BonusSettleRangeHandle extends BonusSettleHandle { CuMemberRetailRangeExt sourceMemberRangeExt = memberRangeExtMap.get(saOrderExt.getPkMember()); // 推荐人 long pkParent = sourceMemberRangeExt.getPkParent(); - // 订单等级值 + // 订单金额 + BigDecimal orderAmount = saOrderExt.getOrderAmount(); +// // TODO 累计升级,此处订单可能没有等级值 +// if (null != saOrderExt.getPkGrade()) { +// // 订单存在升级记录信息 +// // 订单等级值 +// Integer orderGradeValue = gradeIdMap.get(saOrderExt.getPkGrade()).getGradeValue(); +// } else { +// +// } + + Integer orderGradeValue = gradeIdMap.get(saOrderExt.getPkGrade()).getGradeValue(); + + + // 前一个会员等级 int beforeGradeValue = 0; // 前面累计奖金 @@ -598,7 +613,7 @@ public class BonusSettleRangeHandle extends BonusSettleHandle { // 推荐人 long pkParent = sourceMemberRangeExt.getPkParent(); // 商品盒数 - BigDecimal boxNum = new BigDecimal(saOrderExt.getBoxNum()); + BigDecimal boxNum = saOrderExt.getBoxNum(); // 2025.08.13 添加分公司级差收益,每1盒(4个产品)第一分公司4元,第二分公司4元,公司6元,总拨出14元 int branch = 0; 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 65845453..07eb81db 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 @@ -434,15 +434,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, @@ -452,8 +452,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-member/src/main/java/com/hzs/retail/member/vo/CuMemberRetailAchieveVO.java b/bd-business/bd-business-member/src/main/java/com/hzs/retail/member/vo/CuMemberRetailAchieveVO.java index 358a7b76..84ed0137 100644 --- a/bd-business/bd-business-member/src/main/java/com/hzs/retail/member/vo/CuMemberRetailAchieveVO.java +++ b/bd-business/bd-business-member/src/main/java/com/hzs/retail/member/vo/CuMemberRetailAchieveVO.java @@ -52,7 +52,7 @@ public class CuMemberRetailAchieveVO implements Serializable { /** * 盒数 */ - private Integer boxs; + private BigDecimal boxs; /** * 状态 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..c1c1d163 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 @@ -36,71 +32,65 @@ public class DirectPushAmountPvBoxVo { /** * 盒数 */ - private Integer boxNum; + private BigDecimal boxNum; /** * 金额 */ @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..e81b9e08 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(8, 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, 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 ee63f676..352ee431 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 @@ -273,7 +273,7 @@ public class RetailOrderServiceImpl implements IRetailOrderService { Map> postageMap = new HashMap<>(ComputeUtil.mapInitCapacity(waresDetailExtList.size())); // 当前盒数 - int boxNum = 0; + BigDecimal boxNum = BigDecimal.ZERO; // 设置已经累计盒数的商品列表 List tmpBoxWares = new ArrayList<>(); @@ -298,7 +298,7 @@ public class RetailOrderServiceImpl implements IRetailOrderService { if (boxWaresList.contains(waresDetailExt.getWaresCode())) { // 商品是盒数商品,需要累计数量 if (!tmpBoxWares.contains(waresDetailExt.getWaresCode())) { - boxNum += waresDetailExt.getBoxNum() * orderItems.getWaresQuantity(); + boxNum = boxNum.add(waresDetailExt.getBoxNum().multiply(new BigDecimal(orderItems.getWaresQuantity()))); tmpBoxWares.add(waresDetailExt.getWaresCode()); } } @@ -387,26 +387,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(); - } - /** * 封装订单信息 * @@ -871,7 +851,7 @@ public class RetailOrderServiceImpl implements IRetailOrderService { || 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/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 5d53a1d6..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; /** @@ -42,7 +43,7 @@ public class OrderItemsParam implements Serializable { /** * 商品盒数 */ - private Integer boxNum; + 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/ISaOrderService.java b/bd-business/bd-business-sale/src/main/java/com/hzs/sale/order/service/ISaOrderService.java index c5dcf188..0b109c00 100644 --- a/bd-business/bd-business-sale/src/main/java/com/hzs/sale/order/service/ISaOrderService.java +++ b/bd-business/bd-business-sale/src/main/java/com/hzs/sale/order/service/ISaOrderService.java @@ -603,7 +603,7 @@ public interface ISaOrderService extends IService { * @param checkUpgrade 校验升级 * @return */ - BdGrade getGradeByBox(final Integer boxTotal, List gradeList, BdGrade memberGrade, boolean checkUpgrade); + BdGrade getGradeByBox(final BigDecimal boxTotal, List gradeList, BdGrade memberGrade, boolean checkUpgrade); /** * 处理升级盒数基数 @@ -615,7 +615,7 @@ public interface ISaOrderService extends IService { * @param systemType 所属系统 * @return */ - int handleBaseBoxNum(CuMember cuMember, BdGrade memberGrade, List gradeList, List boxProductList, Integer systemType); + BigDecimal handleBaseBoxNum(CuMember cuMember, BdGrade memberGrade, List gradeList, List boxProductList, 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 15d6fe6e..39601676 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 @@ -2286,7 +2286,7 @@ public class OrderBusinessServiceImpl implements IOrderBusinessService { // 调换货物选择不同产品,没有商品信息,此处先全部按默认值来处理 // 2025.02.11 如果盒数商品,历史商品ID不变,非盒数商品进行处理 - if (saOrder.getBoxNum() == 0) { + if (saOrder.getBoxNum().compareTo(BigDecimal.ZERO) == 0) { saOrderItems.setPkWares(0); } saOrderItems.setPkWaresDetail(0); 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 b4649ded..9ec79b64 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.*; /** @@ -191,7 +192,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 0b35b5e2..09930e71 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 @@ -2132,18 +2132,18 @@ public class SaOrderServiceImpl extends ServiceImpl impl gradeList = iGradeServiceApi.getRetailGradeList().getData(); } - // 盒数产品 + // 盒数商品 List boxWaresList = BoxProductUtil.getBoxProductListBySystemType(systemType); // 当前产品盒数 - int boxNum = 0; + BigDecimal boxNum = BigDecimal.ZERO; // 处理商品盒数 this.handleWaresBoxNum(specialArea, orderItemsParams); // 判断订单明细中指定产品数量,校验等级 for (OrderItemsParam orderItemsParam : orderItemsParams) { if (boxWaresList.contains(orderItemsParam.getWaresCode())) { // 存在指定商品,需要累计盒数 - boxNum += orderItemsParam.getBoxNum() * orderItemsParam.getQuantity(); + boxNum = boxNum.add(orderItemsParam.getBoxNum().multiply(new BigDecimal(orderItemsParam.getQuantity()))); } } @@ -2154,7 +2154,8 @@ public class SaOrderServiceImpl extends ServiceImpl impl bdGrade = this.getGradeByBox(boxNum, gradeList, null, true); } else if (ESpecialArea.RETAIL_UPGRADE.getValue() == specialArea) { // 升级专区,一次性补差升级 - if (boxNum == 0) { + // 2025.08.20 升级方式改为累计升级制 + if (boxNum.compareTo(BigDecimal.ZERO) == 0) { // 不满足升级条件 throw new ServiceException("不满足升级条件"); } @@ -2167,9 +2168,14 @@ public class SaOrderServiceImpl extends ServiceImpl impl } // 获取升级盒数基数 - int baseBoxNum = this.handleBaseBoxNum(updateGradeMember, memberGrade, gradeList, boxWaresList, 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); + + // 2025.08.20 升级方式改为累计升级制 + if (memberGrade.getGradeValue().equals(bdGrade.getGradeValue())) { + return bdGrade; + } // 会员等级 大于等于 购买盒数等级,则不充足升级条件 if (memberGrade.getGradeValue().compareTo(bdGrade.getGradeValue()) >= 0) { @@ -2180,18 +2186,18 @@ public class SaOrderServiceImpl extends ServiceImpl impl } @Override - public BdGrade getGradeByBox(final Integer boxTotal, List gradeList, BdGrade memberGrade, boolean checkUpgrade) { + public BdGrade getGradeByBox(final BigDecimal boxTotal, List gradeList, BdGrade memberGrade, boolean checkUpgrade) { if (CollectionUtil.isEmpty(gradeList)) { gradeList = iGradeServiceApi.getRetailGradeList().getData(); } if (null == memberGrade) { // 注册处理 - // 小于总公司等级 并且 排除高级店主 并且 升级盒数小于购买盒数的最大一个等级为注册等级 + // 小于总公司等级 并且 排除高级店主、董事代理 并且 升级盒数小于购买盒数的最大一个等级为注册等级 return gradeList.stream() - .filter(tmpGrade -> tmpGrade.getGradeValue() != EGrade.S_VIP.getValue() + .filter(tmpGrade -> tmpGrade.getGradeValue() != EGrade.S_VIP.getValue() && tmpGrade.getGradeValue() != EGrade.DIRECTOR.getValue() && tmpGrade.getGradeValue() < EGrade.COMPANY.getValue() - && tmpGrade.getBoxNumber() <= boxTotal) + && tmpGrade.getBoxNumber().compareTo(boxTotal) <= 0) .max(Comparator.comparingInt(BdGrade::getGradeValue)).get(); } else { // 非注册处理 @@ -2213,8 +2219,8 @@ public class SaOrderServiceImpl extends ServiceImpl impl Optional gradeOptional = gradeList.stream() .filter(tmpGrade -> tmpGrade.getGradeValue() != EGrade.S_VIP.getValue() && 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); } } @@ -2231,11 +2237,10 @@ public class SaOrderServiceImpl extends ServiceImpl impl * @return */ @Override - public int handleBaseBoxNum(CuMember cuMember, BdGrade memberGrade, - List gradeList, List boxWaresList, + public 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)) { @@ -2245,11 +2250,18 @@ public class SaOrderServiceImpl extends ServiceImpl impl CuMemberLevel lastMemberLevel = lastManualOptional.get(); BdGrade lastUpdateGrade = gradeList.stream().filter(tmpGrade -> tmpGrade.getPkId().equals(lastMemberLevel.getNewLevel())).findFirst().get(); // 盒数基数 = 手动升级盒数 + 手动升级之后的升级订单盒数 - baseBoxNum = lastUpdateGrade.getBoxNumber() - + iSaOrderItemsService.getRetailWaresQuantityNew(cuMember.getPkId(), boxWaresList, lastMemberLevel.getUpgradeTime(), Collections.singletonList(EOrderType.RETAIL_UPGRADE.getValue()), systemType); + BigDecimal oldBoxNum = iSaOrderItemsService.getRetailWaresQuantityNew(cuMember.getPkId(), boxWaresList, lastMemberLevel.getUpgradeTime(), Collections.singletonList(EOrderType.RETAIL_UPGRADE.getValue()), systemType); + if (null != oldBoxNum) { + baseBoxNum = lastUpdateGrade.getBoxNumber().add(oldBoxNum); + } else { + baseBoxNum = lastUpdateGrade.getBoxNumber(); + } } else { // 没有手动升级记录 - baseBoxNum = iSaOrderItemsService.getRetailWaresQuantityNew(cuMember.getPkId(), boxWaresList, null, Arrays.asList(EOrderType.RETAIL_REGISTER.getValue(), EOrderType.RETAIL_UPGRADE.getValue()), systemType); + BigDecimal oldBoxNum = iSaOrderItemsService.getRetailWaresQuantityNew(cuMember.getPkId(), boxWaresList, null, Arrays.asList(EOrderType.RETAIL_REGISTER.getValue(), EOrderType.RETAIL_UPGRADE.getValue()), systemType); + if (null != oldBoxNum) { + baseBoxNum = oldBoxNum; + } } } return baseBoxNum; diff --git a/bd-business/bd-business-sale/src/main/java/com/hzs/sale/wares/controller/manage/BdWaresController.java b/bd-business/bd-business-sale/src/main/java/com/hzs/sale/wares/controller/manage/BdWaresController.java index 8bc64370..135e3351 100644 --- a/bd-business/bd-business-sale/src/main/java/com/hzs/sale/wares/controller/manage/BdWaresController.java +++ b/bd-business/bd-business-sale/src/main/java/com/hzs/sale/wares/controller/manage/BdWaresController.java @@ -517,8 +517,7 @@ public class BdWaresController extends BaseController { waresParams.setPkSpecialCurrency(waresExtend.getPkSpecialCurrency()); waresParams.setSortStatus(wares.getSortStatus()); waresParams.setSystemType(waresExtend.getSystemType()); - waresParams. - setAreaIncome(wares.getAreaIncome()); + waresParams.setAreaIncome(wares.getAreaIncome()); waresParams.setBoxNum(wares.getBoxNum()); BdAreaClassify parentAreaClassify = areaClassifyService.getAreaClassify(wares.getPkAreaClassify()); diff --git a/bd-business/bd-business-sale/src/main/java/com/hzs/sale/wares/param/WaresParams.java b/bd-business/bd-business-sale/src/main/java/com/hzs/sale/wares/param/WaresParams.java index 2c6cb000..64b4e14a 100644 --- a/bd-business/bd-business-sale/src/main/java/com/hzs/sale/wares/param/WaresParams.java +++ b/bd-business/bd-business-sale/src/main/java/com/hzs/sale/wares/param/WaresParams.java @@ -412,6 +412,6 @@ public class WaresParams implements Serializable { /** * 商品上传盒数 */ - private Integer boxNum; + private BigDecimal boxNum; } diff --git a/bd-business/bd-business-sale/src/main/resources/mapper/sale/order/SaOrderItemsMapper.xml b/bd-business/bd-business-sale/src/main/resources/mapper/sale/order/SaOrderItemsMapper.xml index bae2e4cb..f87658da 100644 --- a/bd-business/bd-business-sale/src/main/resources/mapper/sale/order/SaOrderItemsMapper.xml +++ b/bd-business/bd-business-sale/src/main/resources/mapper/sale/order/SaOrderItemsMapper.xml @@ -1160,15 +1160,9 @@ - + select sum(so.box_num) wares_quantity from sa_order so - left join sa_order_items soi - on soi.pk_order = so.pk_id - and soi.del_flag = 0 - and soi.is_gift = 1 - left join bd_wares bw - on bw.pk_id = soi.pk_wares where so.del_flag = 0 and so.order_status = 1 and so.pk_member = #{pkMember} @@ -1179,10 +1173,6 @@ #{item} - and bw.wares_code in - - #{items} - and so.pay_time > #{payTime} 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/sale/ext/BdWaresDetailExt.java b/bd-common/bd-common-domain/src/main/java/com/hzs/common/domain/sale/ext/BdWaresDetailExt.java index 71971975..2c20b8e0 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 @@ -141,6 +141,6 @@ public class BdWaresDetailExt extends BdWaresDetail { /** * 商品上传盒数 */ - private Integer boxNum; + 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/sale/wares/BdWares.java b/bd-common/bd-common-domain/src/main/java/com/hzs/common/domain/sale/wares/BdWares.java index 3c58acc1..92a0521f 100644 --- a/bd-common/bd-common-domain/src/main/java/com/hzs/common/domain/sale/wares/BdWares.java +++ b/bd-common/bd-common-domain/src/main/java/com/hzs/common/domain/sale/wares/BdWares.java @@ -226,6 +226,6 @@ public class BdWares 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 bb00bcc1..1904ed87 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 @@ -161,19 +161,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; /** * 购买价格