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

        }
相关推荐
魏 无羡2 小时前
webclient
java·webclient
神仙别闹3 小时前
基于 C++ 实现两个有序链表序列的交集
java·c++·链表
swordbob4 小时前
ReentrantLock 与 AQS 完整学习手册
java·开发语言
m0_587383005 小时前
全民健身解决方案软件开发实战:从架构设计到落地指南
java·spring boot·spring·架构·需求分析
白山编程大哥5 小时前
Java OutputStreamWriter 详解:从字符到字节的桥梁
java·开发语言·python
一技安身6 小时前
【信创】Docker‑Compose V2 两种离线部署(独立模式、插件模式)简易教程
java·docker·eureka
七夜zippoe6 小时前
为什么 2026 年每个 Java 团队都该懂 AI Agent
java·开发语言·人工智能
时凌云.6 小时前
【2026最新】JDK 下载安装与环境配置全教程(Windows/Mac/Linux 三平台,零基础友好)
java·linux·macos
Despacito10066 小时前
Java后端性能探查工具速查表
java·开发语言
蓝桉柒77 小时前
下载idea,用idea输入一个程序
java·ide·intellij-idea