立即购买功能架构
需求要点
原有需求变动:
- 商品详情页面点击立即购买,直接进入到结算页面,不经过购物车。
- 用户点击立即购买后,即使购物车已经有相同的商品,也不会影响购物车中商品的选中状态以及增加相同商品的数量。
思路
增加一个缓存key区分开立即购买和购物车
增加一个缓存key单独作为创建交易操作时使用,不再使用购物车数据
增加一个枚举,标识数据获取方式
在向缓存中放入购物车数据时,增加一个bool参数,标识是否是立即购买,如果是立即购买,则向缓存中放入立即购买数据,否则则放入购物车数据。
在从缓存中取出购物车数据时,增加一个枚举参数,标识数据获取方式。如果是立即购买,则向取出立即购买数据并将数据以购物结算数据存入缓存。如果是购物车,则取出购物车数据并将数据以购物结算数据存入缓存。如果是创建交易,则取出购物结算数据。
架构设计
增加两个缓存key
- 立即购买数据key(当前会员购物车原始数据key+"_BUY_NOW") - 用于在跳转到购物结算页面时区别与购物车数据,存储立即购买数据
- 购物结算数据key(当前会员购物车原始数据key+"_TRADE") - 用于在创建交易订单时读取的购物数据
创建一个枚举类,标识数据获取方式
CART - 表明是在购物车进行获取
BUY_NOW - 表明是在立即购买进行结算
TRADE - 表明是在创造交易进行获取
"向缓存中放入购物车数据"方法中增加一个boolean参数buyNow,标识是否是立即购买。
"从缓存中取出购物车数据"方法中增加一个枚举参数way,标识数据获取方式。
- 如果是BUY_NOW,则从缓存中获取立即购买数据并将数据以购物结算数据存入缓存。
- 如果是CART,则从缓存中获取购物车数据并将数据以购物结算数据存入缓存。
- 如果是TRADE,则向缓存中获取购物结算数据。