Merge branch 'main' of http://git.gpxscs.cn/backend/java-mall
This commit is contained in:
commit
69f71cc856
@ -3287,6 +3287,8 @@ public class ShopOrderBaseServiceImpl extends BaseServiceImpl<ShopOrderBaseMappe
|
||||
|
||||
Integer order_item_inventory_lock = order_item_row.getOrder_item_inventory_lock();
|
||||
String item_src_id = order_item_row.getItem_src_id();
|
||||
|
||||
logger.debug("尝试执行订单商品item_src_id:{} 锁定库存:{}", item_src_id, order_item_inventory_lock);
|
||||
if (ObjectUtil.equal(1002, order_item_inventory_lock) && CheckUtil.isNotEmpty(item_src_id)) {
|
||||
Long item_id = order_item_row.getItem_id();
|
||||
if (shopProductItemService.lockSkuStock(item_id, order_item_row.getOrder_item_quantity()) <= 0) {
|
||||
@ -3294,6 +3296,8 @@ public class ShopOrderBaseServiceImpl extends BaseServiceImpl<ShopOrderBaseMappe
|
||||
throw new ApiException(String.format(I18nUtil._("更改: %s 冻结库存失败!"), item_id));
|
||||
}
|
||||
|
||||
logger.debug("成功执行订单商品item_src_id:{} 锁定库存:{}", item_src_id, order_item_inventory_lock);
|
||||
|
||||
// RMK 第三方数据同步相关:redis 给这个商品减去对应的库存
|
||||
Map<String, Integer> stockDeltaMap = new HashMap<>();
|
||||
stockDeltaMap.put(item_src_id, -order_item_quantity);
|
||||
|
||||
@ -59,6 +59,7 @@ import com.suisung.mall.shop.store.service.*;
|
||||
import com.suisung.mall.shop.user.service.ShopUserFavoritesItemService;
|
||||
import com.suisung.mall.shop.user.service.ShopUserProductBrowseService;
|
||||
import io.seata.spring.annotation.GlobalTransactional;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
@ -90,6 +91,7 @@ import static com.suisung.mall.common.utils.I18nUtil._;
|
||||
* @author Xinze
|
||||
* @since 2021-04-07
|
||||
*/
|
||||
@Slf4j
|
||||
@Service
|
||||
public class ShopProductItemServiceImpl extends BaseServiceImpl<ShopProductItemMapper, ShopProductItem> implements ShopProductItemService {
|
||||
|
||||
@ -2237,17 +2239,34 @@ public class ShopProductItemServiceImpl extends BaseServiceImpl<ShopProductItemM
|
||||
}
|
||||
|
||||
/**
|
||||
* 锁定库存
|
||||
* 锁定SKU库存
|
||||
*
|
||||
* @param itemId
|
||||
* @param cart_quantity
|
||||
* @return
|
||||
* @param itemId 商品SKU ID
|
||||
* @param cartQuantity 购物车商品数量
|
||||
* @return 影响的行数,1表示锁定成功,0表示锁定失败(库存不足)
|
||||
*/
|
||||
@Override
|
||||
public int lockSkuStock(Long itemId, int cart_quantity) {
|
||||
int flag = this.baseMapper.lockSkuStock(itemId, cart_quantity);
|
||||
public int lockSkuStock(Long itemId, int cartQuantity) {
|
||||
// 参数校验
|
||||
if (itemId == null || cartQuantity <= 0) {
|
||||
log.warn("锁定SKU库存参数异常: itemId={}, cartQuantity={}", itemId, cartQuantity);
|
||||
return 0;
|
||||
}
|
||||
|
||||
// 调用Mapper方法锁定库存
|
||||
int affectedRows = this.baseMapper.lockSkuStock(itemId, cartQuantity);
|
||||
|
||||
// 清理SKU库存缓存
|
||||
cleanSkuStockCache(itemId);
|
||||
return flag;
|
||||
|
||||
// 记录库存锁定操作日志
|
||||
if (affectedRows > 0) {
|
||||
log.debug("SKU库存锁定成功: itemId={}, cartQuantity={}, affectedRows={}", itemId, cartQuantity, affectedRows);
|
||||
} else {
|
||||
log.warn("SKU库存锁定失败,可能库存不足: itemId={}, cartQuantity={}", itemId, cartQuantity);
|
||||
}
|
||||
|
||||
return affectedRows;
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
Loading…
Reference in New Issue
Block a user