sku表和spu表的结构

    spu是 一类产品,这类产品有公共的属性,包含了不同的规格
    比如华为mate50
    sku是 不同规格的产品
    比如华为mate50 太空因 256 8g

    rbac系统设计:
    用户、角色和权限,实现了用户和权限的逻辑分离

    用户—->角色——>权限

    用户下单流程:
    用户从购物车点击结算,跳转到结算页

    1. 结算页加载用户对应的收件地址,购物车列表
    2. 用户点击结算的时候会立刻创建订单,更新订单表和订单明细表
      1. 解决异价问题(生成订单时查询当前价格)
      2. 解决并发库存不够问题(数据库操作行锁)
      3. 如何生成订单
        1. 读取redis中该用户对应的购物车信息
        2. 循环查询当前购物车中的商品,构建订单和订单详情信息(该步骤中远程调用goods微服务获取最新的商品价格)
        3. 用户增加积分
        4. 删除redis中的该用户对应的购物车信息
        5. 发送信息给延时队列,消息是订单号,到过期时间还没支付就要回滚库存,删除订单
    3. 调用商品微服务,减少商品库存(注意要判断商品库存是否足够的问题)
    4. 用户支付(项目中使用微信扫码支付,每次生成的码都不一样)
      1. 生成订单后,调用微信支付api
      2. 获取微信支付返回的交易链接
      3. 根据交易链接生成二维码图片
      4. 将二维码展示给用户
      5. 用户扫码提交扫描链接
      6. 微信服务器验证扫描有效性
      7. 验证扫描有效返回支付授权
      8. 用户确认支付,输入密码
      9. 验证密码正确,完成交易
        1. 提示用户交易完成
        2. 通知我们这个服务支付结果(如果没有收到畅购服务的回应,就多发几次)
      10. 畅购也可以主动找微信服务器查询支付结果
      11. 确认结果后该发货该退单自己选