苍穹外卖-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);
           }

        }
相关推荐
AC赳赳老秦10 分钟前
语义采集进阶实战:利用 OpenClaw AI 语义识别自动提取网页核心信息,无需手动编写选择器
java·运维·服务器·python·信息可视化·deepseek·openclaw
AI人工智能+电脑小能手14 分钟前
大白话说Java设计模式-23-桥接模式(源码剖析篇)
java·设计模式·jdbc·桥接模式·源码分析·awt·java logging
李高钢21 分钟前
C# WPF Prism 进阶(二):区域(Region)与模块化(Module)
java·前端·数据库
long31623 分钟前
枚举(Enums)
java·开发语言·数据库
墨雨晨曦8844 分钟前
2026/08/15 spring AI学习总结
java·tomcat
wno7041 小时前
Spring Boot JdbcTemplate配置Druid多数据源
java·spring boot·后端
wear工程师1 小时前
Spring Boot 服务挂了却没重启?先分清 systemd 的三次判断
spring boot
聊浮游1 小时前
JAVA2026最新全套学习资料、学习路线
java·开发语言·jvm·mysql·spring·maven·idea
MacroZheng2 小时前
完美替代 Navicat!这款内置 AI 的数据库工具,太香了!
java·后端·mysql
月华路2 小时前
Guava 图数据结构 graph 从基础概念到原理分析
java·数据结构·guava·图搜索