你没有设计状态迁移机制。已状态迁移加锁,可以完美解决并发问题.
小弟太菜,可以详细点说明下吗?
@菜鸟无名: 你订单要设计各个状态.
每一次操作都是将订单从一个状态迁移到另一个状态.
没一次迁移都是一次事务.
比如订单从已付款状态迁移到已发货状态.
1.开启事务
2.修改订单为正在发货状态,当订单状态为已付款时
3.发货逻辑
4.将订单修改为已发货
5.提交事务
你从数据库查询,然后访问接口,再写入数据库。这个操作过程本身就会耗时,你访问接口的过程中,可能其他的请求也在查询数据库了。对应这个情况,你可以在数据库字段设计的时候,不要用操作与否来作为字段值。而使用:“未操作”,“操作中”来标示。第一个请求到数据库查询后,立刻将状态赋值“操作中”,这样就可以拒绝后面请求继续访问数据。
加锁
通过遍历来循环显示,首行遍历订单表,在循环体内使用订单号(根据数据库实际情况)来读取商品表中的信息。
架构 楼上的大侠已经说得非常详细了。
小菜我也补充一点, 你页面设计时, 在订单流程时 下一步。。。下一步。。。 当用户上一步时, 你应该让上一步的页面过个期。