From c33d8e24a890238a003947534152a4d11bf8ec42 Mon Sep 17 00:00:00 2001 From: cabbage <281119120@qq.com> Date: Wed, 6 Aug 2025 15:38:25 +0800 Subject: [PATCH] =?UTF-8?q?##=20=E7=A7=92=E6=9D=80=E8=AE=A2=E5=8D=95?= =?UTF-8?q?=E6=92=A4=E5=8D=95=E5=A4=84=E7=90=86=EF=BC=88346=E3=80=81347?= =?UTF-8?q?=EF=BC=89=EF=BC=9B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/impl/SaOrderServiceImpl.java | 35 +++++++++++++++++++ .../mapper/sale/wares/BdWaresExtendMapper.xml | 3 +- .../sale/wares/BdWaresMemberLimitMapper.xml | 6 ++-- 3 files changed, 41 insertions(+), 3 deletions(-) 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 6d95d0f5..e6f6850a 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 @@ -1525,6 +1525,9 @@ public class SaOrderServiceImpl extends ServiceImpl impl if (!iAcPickService.cancelPickOrder(saOrderExt.getOrderCode(), pkApprove)) { throw new RuntimeException("撤销订单退还提货失败"); } + } else if (EOrderType.MALL_ORDER.getValue() == saOrderExt.getOrderType()) { + // 秒杀订单,处理限购 + this.handleMallOrderCancel(saOrderExt); } if (EOrderType.REPURCHASE_ORDER.getValue() == saOrderExt.getOrderType() @@ -2226,6 +2229,9 @@ public class SaOrderServiceImpl extends ServiceImpl impl if (!iAcPickService.cancelPickOrder(saOrderExt.getOrderCode(), pkApprove)) { throw new RuntimeException("撤单失败"); } + } else if (EOrderType.MALL_ORDER.getValue() == saOrderExt.getOrderType()) { + // 秒杀订单,处理限购 + this.handleMallOrderCancel(saOrderExt); } if (!iMemberServiceApi.normalRevokeOrder(pkApprove, saOrderExt, cuMember, null, businessCommissionDTO).getData()) { @@ -2397,4 +2403,33 @@ public class SaOrderServiceImpl extends ServiceImpl impl } } + /** + * 秒杀订单回退限购 + * + * @param saOrderExt + */ + private void handleMallOrderCancel(SaOrderExt saOrderExt) { + List limitList = new ArrayList<>(); + for (SaOrderItems saOrderItems : saOrderExt.getOrderItemsExtList()) { + if (EYesNo.NO.getIntValue() == saOrderItems.getIsGift()) { + // 会员限购列表 + for (ELimitType limitType : ELimitType.getLiveLimitType()) { + limitList.add(BdWaresMemberLimit.builder() + .pkMember(saOrderExt.getPkMember()) + .pkWares(saOrderItems.getPkWares()) + .limitType(limitType.getValue()) + .quantity(saOrderItems.getWaresQuantity() * -1) + .limitDate(ELimitType.TOTAL.getValue() == limitType.getValue() ? ELimitType.TOTAL.getFormat() : DateUtils.parseDateToFormat(limitType.getFormat(), saOrderExt.getPayTime())) + .build()); + } + } + } + if (CollectionUtil.isNotEmpty(limitList)) { + // 更新会员限购数据 + iBdWaresMemberLimitService.updateWaresMemberLimitBatch(limitList); + // 更新商品限购库存 + iBdWaresExtendService.batchUpdateInventoryUse(limitList); + } + } + } diff --git a/bd-business/bd-business-sale/src/main/resources/mapper/sale/wares/BdWaresExtendMapper.xml b/bd-business/bd-business-sale/src/main/resources/mapper/sale/wares/BdWaresExtendMapper.xml index 44a4a45f..87442380 100644 --- a/bd-business/bd-business-sale/src/main/resources/mapper/sale/wares/BdWaresExtendMapper.xml +++ b/bd-business/bd-business-sale/src/main/resources/mapper/sale/wares/BdWaresExtendMapper.xml @@ -90,7 +90,8 @@ merge into bd_wares_extend bwe using ( - select #{items.pkWares} pk_wares, + select + #{items.pkWares} pk_wares, #{items.quantity} quantity from dual diff --git a/bd-business/bd-business-sale/src/main/resources/mapper/sale/wares/BdWaresMemberLimitMapper.xml b/bd-business/bd-business-sale/src/main/resources/mapper/sale/wares/BdWaresMemberLimitMapper.xml index a25046d2..0d823ac0 100644 --- a/bd-business/bd-business-sale/src/main/resources/mapper/sale/wares/BdWaresMemberLimitMapper.xml +++ b/bd-business/bd-business-sale/src/main/resources/mapper/sale/wares/BdWaresMemberLimitMapper.xml @@ -6,7 +6,7 @@ merge into BD_WARES_MEMBER_LIMIT bwml using ( - + select #{items.pkMember} pk_member, #{items.pkWares} pk_wares, #{items.limitType} limit_type, @@ -17,7 +17,9 @@ ) tmp on (bwml.PK_MEMBER = tmp.pk_member and bwml.PK_WARES = tmp.pk_wares and bwml.limit_date = tmp.limit_date and bwml.del_flag = 0) when matched then - update set bwml.quantity = bwml.quantity + tmp.quantity + update set + bwml.quantity = bwml.quantity + tmp.quantity, + bwml.modified_time = sysdate WHEN NOT MATCHED THEN insert ( pk_id,