## 秒杀订单撤单处理(346、347);

This commit is contained in:
cabbage 2025-08-06 15:38:25 +08:00
parent 0b7a8a074b
commit 4daf10eea2
3 changed files with 41 additions and 3 deletions

View File

@ -1525,6 +1525,9 @@ public class SaOrderServiceImpl extends ServiceImpl<SaOrderMapper, SaOrder> 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<SaOrderMapper, SaOrder> 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<SaOrderMapper, SaOrder> impl
}
}
/**
* 秒杀订单回退限购
*
* @param saOrderExt
*/
private void handleMallOrderCancel(SaOrderExt saOrderExt) {
List<BdWaresMemberLimit> 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);
}
}
}

View File

@ -90,7 +90,8 @@
merge into bd_wares_extend bwe
using (
<foreach collection="limitList" item="items" separator=" union ">
select #{items.pkWares} pk_wares,
select
#{items.pkWares} pk_wares,
#{items.quantity} quantity
from dual
</foreach>

View File

@ -6,7 +6,7 @@
<update id="updateWaresMemberLimitBatch">
merge into BD_WARES_MEMBER_LIMIT bwml
using (
<foreach collection="limitList" item="items" separator=" union all">
<foreach collection="limitList" item="items" separator=" union ">
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,