判断是从哪个页面过来,购物车过来,删除购物车数据,是立即购买,就不用购物车。
扣减库存,礼物服务监听,然后扣减库存
库存分为
可用库存,锁定库存
页面展示,当前可购买库存 = 可用库存 -锁定库存(前端处理吧)
支付后
可用库存 减
锁定库存 =锁定库存-数量即可。
可用库存:仓库里还没有卖出去的货
锁定库存:用户下单还没有支付前。
锁定库存如何做
自己定义个方法,锁定库存加传过来的数量
根据skuId,遍历修改锁定库存
对了这里出现了,mapper多个参数,@param,有个面试题,skuid和num
删除购物车和扣减库存后最后是创建支付单
搭建一个支付服务
方案一:把钱给平台的账户,定期分钱(平台必须有资质,有拍照)
方案二:找一个有资质 ,有拍照的分账平台(要花钱)
方案三:用户支付直接把钱打到店铺账号,这不可能的 (不适合店铺入驻的项目)
发生金额 = 订单金额之和(商品总金额-优惠金额)
根据parentOrderNo 查询订单信息,将订单的金额加起来。
线下对公账户
订单取消,本地支付单要取消,第三方支付单也要取消
倒计时取消:
定时任务:简单,并发过高,会bbq。总不可能来一个就创个任务,压力太大
同步任务就用定时任务
所以订单取消就用延迟消息:不会立刻被消费,指定时间后被消费。支持高并发,下一百万订单。
实现思路就是下单时候,发送延迟消息完成订单取消,到时间没有支付,就取消订单。到时候支付了,就不管了呗。
订单状态修改为取消 支付单修改取消 扣减锁定库存
这里又要分布式事务
发送一个同步消息
查订单就用parentOrderNo
查支付单就unipayno
一个DTO到处传就行了,缺啥就拿啥。