日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

创建订单 - 扣除商品库存与订单状态保存

發布時間:2024/4/13 编程问答 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 创建订单 - 扣除商品库存与订单状态保存 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
/*** @Description: 訂單狀態 枚舉*/ public enum OrderStatusEnum {WAIT_PAY(10, "待付款"),WAIT_DELIVER(20, "已付款,待發貨"),WAIT_RECEIVE(30, "已發貨,待收貨"),SUCCESS(40, "交易成功"),CLOSE(50, "交易關閉");public final Integer type;public final String value;OrderStatusEnum(Integer type, String value){this.type = type;this.value = value;}} /*** 減少庫存* @param specId* @param buyCounts*/ public void decreaseItemSpecStock(String specId, int buyCounts); @Transactional(propagation = Propagation.REQUIRED) @Override public void decreaseItemSpecStock(String specId, int buyCounts) {// synchronized 不推薦使用,集群下無用,性能低下// 鎖數據庫: 不推薦,導致數據庫性能低下// 分布式鎖 zookeeper redis// lockUtil.getLock(); -- 加鎖// 1. 查詢庫存 // int stock = 10;// 2. 判斷庫存,是否能夠減少到0以下 // if (stock - buyCounts < 0) {// 提示用戶庫存不夠 // 10 - 3 -3 - 5 = -1 // }// lockUtil.unLock(); -- 解鎖int result = itemsMapperCustom.decreaseItemSpecStock(specId, buyCounts);if (result != 1) {throw new RuntimeException("訂單創建失敗,原因:庫存不足!");} } <update id="decreaseItemSpecStock">updateitems_specsetstock = stock - #{pendingCounts}whereid = #{specId}andstock >= #{pendingCounts}</update> public int decreaseItemSpecStock(@Param("specId") String specId,@Param("pendingCounts") int pendingCounts); // 2.4 在用戶提交訂單以后,規格表中需要扣除庫存 itemService.decreaseItemSpecStock(itemSpecId, buyCounts);

?

總結

以上是生活随笔為你收集整理的创建订单 - 扣除商品库存与订单状态保存的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。