苍穹外卖-Day08(购物车)

1.添加

1.需求设计和分析

Path:/user/shoppingCart/add

Method:POST

数据库设计:

  • 作用:暂时存放所选商品的地方
  • 选的什么商品
  • 每个商品的数量
  • 不同用户的购物车需要区分

冗余字段会加快查询速度

2.代码开发

java 复制代码
  //判断当前加入购物车的商品是否在购物车中
        ShoppingCart shoppingCart = new ShoppingCart();
        BeanUtils.copyProperties(shoppingCartDTO,shoppingCart);
        Long uesrId = BaseContext.getCurrentId();
        shoppingCart.setUserId(uesrId);
        List<ShoppingCart> list = shoppingCartMapper.list(shoppingCart);

        //如果已经存在,则增加数量
        if(list != null && list.size() > 0){
            ShoppingCart cart = list.get(0);
            cart.setNumber(cart.getNumber()+1);
            shoppingCartMapper.updateNumberById(cart);
        }else {

            //否则,插入新的购物车数据

            Long dishId = shoppingCartDTO.getDishId();
            if(dishId != null) {
                //添加到购物车中的是菜品
                Dish dish = dishMapper.getById(dishId);
                shoppingCart.setName(dish.getName());
                shoppingCart.setImage(dish.getImage());
                shoppingCart.setAmount(dish.getPrice());

            }else {
                //添加到购物车中的是套餐
                Long setmealId = shoppingCartDTO.getSetmealId();
                Setmeal setmeal = setmealMapper.getById(setmealId);
                shoppingCart.setName(setmeal.getName());
                shoppingCart.setImage(setmeal.getImage());
                shoppingCart.setAmount(setmeal.getPrice());

            }
            shoppingCart.setNumber(1);
            shoppingCart.setCreateTime(LocalDateTime.now());
            shoppingCartMapper.insert(shoppingCart);
        }

2.查看

1.需求设计和分析

Path:/user/shoppingCart/list

Method:GET

2.代码开发

java 复制代码
   Long userId = BaseContext.getCurrentId();
        ShoppingCart shoppingCart = ShoppingCart.builder()
                .userId(userId)
                .build();
        return shoppingCartMapper.list(shoppingCart);

3.清空

1.需求设计和分析

Path:/user/shoppingCart/clean

Method:DELETE

2.代码开发

复制代码
Long userId = BaseContext.getCurrentId();

shoppingCartMapper.deleteByUserId(userId);

4.删除

1.需求设计和分析

Path/user/shoppingCart/sub

Method:POST

2.代码开发

java 复制代码
 ShoppingCart shoppingCart = new ShoppingCart();
        BeanUtils.copyProperties(shoppingCartDTO,shoppingCart);
        Long uesrId = BaseContext.getCurrentId();
        shoppingCart.setUserId(uesrId);
        List<ShoppingCart> list = shoppingCartMapper.list(shoppingCart);


        if(list != null && list.size() > 0){
            ShoppingCart cart = list.get(0);
            Integer number = cart.getNumber();
           if(number == 1){
               shoppingCartMapper.deleteById(cart.getId());
           }else {
               cart.setNumber(number-1);
               shoppingCartMapper.updateNumberById(cart);
           }

        }
相关推荐
今年下半年30 分钟前
【网站连通性检测】java项目telnet、curl命令的使用
java·curl·telnet
摇滚侠30 分钟前
《Spring Boot 3:高级与架构设计》第 2 章 IOC 容器的高级机制 编程式驱动 IOC 阅读笔记 7
java·spring boot·笔记
IT枫斗者枫哥34 分钟前
UPDATE影响0行,接口却返回成功:把版本冲突接回业务
java·后端
霸道流氓气质42 分钟前
AI应用成本优化完全指南:Token压缩、语义缓存与模型路由的Java生产级实战
java·人工智能·缓存
mmm.c1 小时前
Redis 两级缓存 + Pub/Sub 广播:一次为抗高并发做的缓存改造
java
yexianglunbai1 小时前
中间件(Middleware)详解:概念、作用与实战
java·开发语言·中间件
叶总没有会1 小时前
OpenFeign
java·开发语言·springcloud·openfeign
小七在进步1 小时前
类和对象(四)
java·javascript·ajax
白帽攻防录1 小时前
SRC 挖洞:Apache Tomcat 加密拦截器绕过深度复盘,CVE-2026-34486 fail-open 一行代码怎么打穿集群通信
java·网络安全·tomcat·apache
后端LV1 小时前
三级缓存的两个失效盲区,我用 binlog 和消费组广播补上了
java·架构