## 待支付秒杀订单,再支付时进行限购校验;

This commit is contained in:
cabbage 2025-08-06 14:08:32 +08:00
parent 72c5c564ff
commit 4740130d28
3 changed files with 31 additions and 10 deletions

View File

@ -391,6 +391,12 @@ public class ApiOrderController extends BaseController {
// 订单下商品已下架不能购买
return AjaxResult.error(TransactionUtils.getContent(SaOrderMsgConstants.ORDER_ITEM_OFF));
}
SaOrderExt saOrderExt = iSaOrderService.queryOrderByCode(orderCode, CountryConstants.CHINA_COUNTRY);
if (null != saOrderExt && EOrderType.MALL_ORDER.getValue() == saOrderExt.getOrderType()) {
// 校验秒杀订单限购
iSaOrderService.checkMallOrder(saOrderExt);
}
return AjaxResult.success();
}

View File

@ -590,4 +590,11 @@ public interface ISaOrderService extends IService<SaOrder> {
*/
List<SingleItemStatVo> singleItemStat(SingleItemStatParam singleItemStatParam);
/**
* 校验秒杀订单限购
*
* @param saOrderExt
*/
void checkMallOrder(SaOrderExt saOrderExt);
}

View File

@ -2320,22 +2320,30 @@ public class SaOrderServiceImpl extends ServiceImpl<SaOrderMapper, SaOrder> impl
}
}
/**
* 校验秒杀限购
*
* @param saOrderExt
*/
private void checkMallOrder(SaOrderExt saOrderExt) {
@Override
public void checkMallOrder(SaOrderExt saOrderExt) {
// key:商品IDvalue:商品购买数量
Map<Integer, Integer> limitMap = new HashMap<>();
// key:商品ID,value:商品限购属性
Map<Integer, BdWaresExtend> waresLimitMap = new HashMap<>();
for (SaOrderItems saOrderItems : saOrderExt.getOrderItemsList()) {
if (EYesNo.NO.getIntValue() == saOrderItems.getIsGift()) {
// 非赠品
limitMap.put(saOrderItems.getPkWares(), saOrderItems.getWaresQuantity());
if (CollectionUtil.isNotEmpty(saOrderExt.getOrderItemsList())) {
// 新创建订单
for (SaOrderItems saOrderItems : saOrderExt.getOrderItemsList()) {
if (EYesNo.NO.getIntValue() == saOrderItems.getIsGift()) {
// 非赠品
limitMap.put(saOrderItems.getPkWares(), saOrderItems.getWaresQuantity());
}
}
} else {
// 待支付订单
for (SaOrderItems saOrderItems : saOrderExt.getOrderItemsExtList()) {
if (EYesNo.NO.getIntValue() == saOrderItems.getIsGift()) {
// 非赠品
limitMap.put(saOrderItems.getPkWares(), saOrderItems.getWaresQuantity());
}
}
}
if (limitMap.size() > 0) {
// 商品限购数据
List<BdWaresExtend> waresExtendList = iBdWaresExtendService.listByPkWaresList(limitMap.keySet());