/*** @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);

创建订单 - 扣除商品库存与订单状态保存相关推荐

  1. 1009-确认订单-订单流程梳理与订单状态

    一. 二.线程同步问题: 扣除商品库存与订单状态保存: synchronized 不推荐使用,集群下无用,性能低下. 锁数据库:不推荐,导致数据库性能低下. 分布式锁:zookeeper Redis ...

  2. mysql结算订单表到用户_Luffy之结算订单页面(订单模型表的创建,订单的生成,以及订单详情展示等)...

    订单页面 在前面我们已经构建了,购物车的页面,接下来到了结算页面 1.首先,在购物车页面点击去结算按钮时,我们需要做如下动作 .前端发送生成订单的请求,点击标签内触发事件 create_order t ...

  3. SAP生产订单创建、工序删除/增加、组件删除/增加、生产订单下达、采购订单创建

    2021年的时候在深圳光明区某企业做了一个项目:委外生产订单创建.因为委外的生产订单和当前企业的工序以及组件并不相同,所以需要对创建的生产订单的工序进行删除和增加,对组件进行删除和增加. 当时的业务程 ...

  4. 【PP操作手册】创建公司间交易采购订单

    菜单路径:SAP 菜单  > 后勤 > 生产 > 看板 > 环境 > 采购 > 采购订单 > 创建 > ME21N – 已知供应商/供应工厂 事务代码: ...

  5. SAP SD 销售合同或者销售订单审批流搭建(状态管理)

    SAP SD 销售合同或者销售订单审批流搭建(状态管理) 1.SAP中像采购申请和采购订单在配置中有相应的审批过程配置,可以进行审批流的配置,但是在销售订单,维护工单等一些订单中是通过状态管理来实现审 ...

  6. 多对多查询:一个用户创建多个订单,一个订单包含多个订单明细,一个订单明细包含一个商品

    <!-- 多对多查询:一个用户创建多个订单,一个订单包含多个订单明细,一个订单明细包含一个商品 --><resultMap type="com.hbut.po.User&q ...

  7. 销售订单——抬头出具发票计划状态计算逻辑

    近期做了一个订单发票计划的程序, 发现订单抬头发票计划的状态 在数据表中是没有值的, 而我们在前台查看数据时却是有的, 那这个状态是怎么来的呢? 通过debug分析系统标准代码,得到源代码的计算逻辑. ...

  8. 自动匹配未认领订单编号_海量订单系统微服务开发:使用MongoDB支持海量数据...

    海量订单系统微服务开发 订单系统是电商平台中一个非常重要的组成部分,而且它还是一个具有巨大流量和高并发访问的系统,与订单相关的服务涉及库存.支付.物流等.在设计订单系统时,我们选择使用支持海量数据的N ...

  9. Flsak爱家租房--订单(获取用户订单、用户评论)

    文章目录 0.页面效果 1.思路总结 2.后端代码 3.前端js 4.前端html 0.页面效果 1.思路总结 1)用户点击"我的订单",js向后端获取数据,并加载在前端的模板中: ...

最新文章

  1. linux ulimit 永久生效设置方法
  2. Direct交换器-编写生产者
  3. 揪出XXL-JOB中的细节
  4. .NET平台下几种SOCKET模型的简要性能供参考
  5. 李开复唱衰互联网手机:大部分公司会失败
  6. 人生苦短,Python值得!这些Pandas隐藏小技巧你知道吗?
  7. 【kafka】kafka 2.3 版本的kafka topic 分区扩容
  8. Vue-Treeselect 的下拉菜单不出Table的框
  9. 零基础物联网开发,踩坑无数,得到这份宝典 | 原力计划
  10. JDK安装以及配置环境变量详细步骤
  11. 显示图片_Pycharm图片独立显示与imshow()无法显示
  12. H5调用摄像头拍照并下载照片
  13. 计算机文本自定义,自定义文本编辑器
  14. KMP字符串匹配算法
  15. 小米4android8.0root,小米8青春版获取root权限的教程
  16. python控制浏览器脚本_Chrome 33+浏览器 Cookies encrypted_value解密脚本(python实现)...
  17. c语言图形学画扇形代码,利用CSS绘制任意角度的扇形示例代码
  18. 解决gradle编译报Error:All flavors must now belong to a named flavor dimension.问题
  19. 收好了,这些max工作效率的学习资源,赶紧用起来
  20. 嘉立创EDA专业版--PCB器件重叠如何选中

热门文章

  1. Linux学习日记:第二天
  2. win10搭建FTP服务器
  3. CentOS 6上配置安装MariaDB,二进制文件,非源码
  4. noip模拟赛 abcd
  5. Oracle备份恢复之逻辑备份
  6. vs2010功能使用体验篇
  7. 2011年度最佳 jQuery 插件发布
  8. 对Coverage进行编辑
  9. el表达式大小写问题的坑坑坑坑坑坑坑坑!!!
  10. 【struts2】文件上传下载—struts2实现