sku表和spu表的结构
spu是 一类产品,这类产品有公共的属性,包含了不同的规格
比如华为mate50
sku是 不同规格的产品
比如华为mate50 太空因 256 8g
rbac系统设计:
用户、角色和权限,实现了用户和权限的逻辑分离
用户—->角色——>权限
用户下单流程:
用户从购物车点击结算,跳转到结算页
- 结算页加载用户对应的收件地址,购物车列表
- 用户点击结算的时候会立刻创建订单,更新订单表和订单明细表
- 解决异价问题(生成订单时查询当前价格)
- 解决并发库存不够问题(数据库操作行锁)
- 如何生成订单
- 读取redis中该用户对应的购物车信息
- 循环查询当前购物车中的商品,构建订单和订单详情信息(该步骤中远程调用goods微服务获取最新的商品价格)
- 用户增加积分
- 删除redis中的该用户对应的购物车信息
- 发送信息给延时队列,消息是订单号,到过期时间还没支付就要回滚库存,删除订单
- 调用商品微服务,减少商品库存(注意要判断商品库存是否足够的问题)
- 用户支付(项目中使用微信扫码支付,每次生成的码都不一样)
- 生成订单后,调用微信支付api
- 获取微信支付返回的交易链接
- 根据交易链接生成二维码图片
- 将二维码展示给用户
- 用户扫码提交扫描链接
- 微信服务器验证扫描有效性
- 验证扫描有效返回支付授权
- 用户确认支付,输入密码
- 验证密码正确,完成交易
- 提示用户交易完成
- 通知我们这个服务支付结果(如果没有收到畅购服务的回应,就多发几次)
- 畅购也可以主动找微信服务器查询支付结果
- 确认结果后该发货该退单自己选