采用的是密码授权模式:
-
客户端请求认证服务申请令牌
-
认证服务生成令牌,认证服务采用非对称加密算法,使用私钥生成令牌。
-
客户端携带令牌访问资源服务客户端在Http header 中添加: Authorization:Bearer令牌。
-
资源服务请求认证服务校验令牌的有效性资源服务接收到令牌,使用公钥校验令牌的合法性。
-
令牌有效,资源服务向客户端响应资源信息
后台拿到提交参数(商品ID列表):
- **获取购物车信息:**获取当前会员ID,以当前会员ID和商品id列表查询。listPromotion()(依据当前登录用户id得到所有的购物车商品详细信息(
OmsCartItem
)与要购买的商品id进行匹配筛选,查询计算并添加促销活动(促销、打折、满减)的待购买商品信息(CartPromotionItem extend OmsCartItem
,添加真实库存、减免价格等属性) 列表并返回。 - 获取用户收货地址列表
- **获取可用优惠券列表:**依据购物车中商品详细信息
CartPromotionItem
获取可用优惠券列表(查询用户领取的所有优惠券、依据优惠券类型(指定分类、全场通用、指定商品)以及购物车商品来判断优惠券是否可用) - 获取用户积分及积分使用规则
- 计算总金额、活动优惠、应付金额
- 获得订单提交参数(收货地址、商品id列表、优惠券ID、积分以及支付方式),调用
listPromotion()
得到待购买商品信息,然后遍历封装生成下单商品。 - 判断商品是否均有库存、是否使用优惠券并对下单商品增加优惠券金额属性、是否使用积分 并增加处理(分摊)。
- 计算实付金额并进行库存锁定,计算出最终支付金额、并将订单信息插入数据库(待支付状态),赠送对应的成长值、积分等,更新优惠券使用状态以及扣分扣增,删除购物车对应商品,mq发送延时消息取消订单。
- 订单生成后调用支付接口,支付完成后修改订单状态,恢复商品锁定库存、完成库存更新