购物车的一些思路

问题一:你们的购物车是怎么做的(用户未登录的时候购物车数据存放到哪里了,登录时又存放到哪里了)Redis里

session不能用,session是有生命周期的,浏览器一关就没有了cookie容量太小了(4kb),没办法存放太多的数据,解决方案,添加多了提示购物车已满mysql和redis性能比较差

往Redis里放是key-value形式key可以是sessionId或者UUID,存放到浏览器的cookie里了需要下次打开浏览器,key是一致的。下次还需要拿这个key访问的拿着cookie里的user-key当子Redis里面的key,把字符串存放到cookie下次在打开是从cookie里获得user-key,之后把user-key的值获取后当成redis里的key

key:sessionId或者UUID value:商品数据 :List cartList;

未登录时:把购物车数据都放到Redis中,把sessionID或者UUID作为Redis的key,为了能在下次访问时使用同样的key系需要把key放在Redis中登录时:把购物车数据放在Redis中,把userID做为key

购物车对象类(Cart)包括:String SellerName/商家名称 ,String SellerId/商家ID ,ListorderItemList/要买的商品

未登录时:1、查询购物车:findCardList(通过key:sessionId或者UUID)2、添加购物车:addGoodsToCartList?itemId=XX&num=XX创建一个添加购物车的方法,方法需要两个参数(1、商品id,2、商品数量)

当你把商品加入购物车的时候,1、首先判断当前的商品对应的商家有没有购物车对象(商家)2、如果存在购物车对象,需要判断我即将添加的商品有没有对应的商家,有没有购物车对象3、如果有,商品是否重复,重复就把数量加一4、如果没有或者不重复,新建商品对象

把商品加入购物车,老的购物车会发生改变,向已有的购物车里加入数据1、查询之前的购物车数据2、向购物车中追加数据3、把新的购物车数据放到Redis中

细节一:当商品数量小于1时,商品从orderItemList中移除,判断此桑吉是否有商品,如果orderItemList的长度等于0 ,表示商家没有商品,把商家对应的cart(购物车)对象从cartList中移除细节二: 判断,若果商品数量num小于1(创建orderItem时),抛出异常数量非法。如果id不存在,抛出异常商品不存在(添加商品到购物车时)

猜你喜欢

转载自blog.csdn.net/weixin_43018910/article/details/86412436