购物车模块后端开发详解

首先,我得说明一下,本人第一次写博客,前一段时间项目刚做完,写这篇博客一是为了分享给大家这个模块的一些知识点供大家参考,二是对自己的模块进行一个总结,毕竟这也是我找下一份工作的项目经验☺☺☺。

需求介绍

1.购物车列表功能的实现。
2.购物车勾选逻辑功能的实现。
3.满减优惠金额的计算。

实现流程

首先介绍一下购物车模块的存储方式,这里用的是相对简单的redis(hash类型)进行存储,大key为CacheKey.CART_LIST ,这是一个枚举,当前登录名username作为小key,value是list用于存储多条商品信息,list中的话用的是map进行存储,map的有两个属性,一个是 item,表示购物车明细数据,这个不用多说,就是商品图片,单价,商品详细信息等等,另一个是checked,用于存储购物车是否被选中。这个可以实现价格的总计以及批量删除等功能。

1. 购物车列表

定义一个接口,传入用户信息username,返回商品的List<Map<String,Object>>。
在service层中对接口进行一个实现,利用redisTemplate的boundHashOps方法返回列表,这里需要注意一点的是可能用户的购物车中是没有商品的,就存在一个空的情况,需要进行判断如果为空就要附一个new Arraylist<>().

 @Override
    public List<Map<String, Object>> findcaslist(String username) {

        System.out.println("从redis中提取购物车"+username);
        List<Map<String, Object>> SheepbusList= (List<Map<String, Object>>)redisTemplate.boundHashOps(CacheKey.CART_LIST).get(username);
       if(SheepbusList==null){
           return new ArrayList<>();
       }
        return   SheepbusList;
    }

2. 添加商品到购物车
在接口中定义方法,传入username,skuId,num这三个值。这里其实也涉及到了其他两个功能,一是商品数量的加减,二是商品的删除,当num为商品数量的相反数时,实现商品的删除功能。也是在service层中对接口进行一个实现,首先利用之前的方法拿到用户的购物车列表,对购物车列表进行一个遍历,利用传入的skuId和列表中的商品详情表orderItem中getSkuId进行比较,确认列表中是否存在此商品。
如果存在商品数量num加一,然后对他的一系列和数量有关的数据进行修改就OK了(比如价格,重量);
否则不存在直接进行商品的一个添加,这个添加涉及到两个表sku,Category
(商品添加中注意一点,注入skuService,利用它得到sku表信息后需要进行一个简单的判断sku是否为空,sku.getStatus状态是否为1,数量是否<=0 这些都是不合法的行为)还有就是对3层分类的存储,咱们这边拿到的只有skuId没有数据库的其他表

  • 9
    点赞
  • 47
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值