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

        }
相关推荐
青石路3 小时前
记一次多JDK版本问题的排查,一坑套一坑,差点没爬上来
java
Java陈序员5 小时前
企业级!一个基于 Java 开发的开源 AI 应用开发平台!
spring boot·agent·mcp
像我这样帅的人丶你还6 小时前
Java 后端详解(五):Redis 缓存
java·后端·全栈
plainGeekDev8 小时前
GreenDAO → Room
android·java·kotlin
杨运交12 小时前
[041][公共模块]分布式唯一ID生成器设计与实现:一款灵活可扩展的雪花算法框架
spring boot
亦暖筑序12 小时前
Java 8老系统AI Workflow实战:把一次性AI对话升级成可恢复工作流
java·后端
敲代码的彭于晏13 小时前
Bean 生命周期完全图解:前端同学也能看懂的 Spring 核心机制
java·前端·后端
plainGeekDev14 小时前
ButterKnife → ViewBinding
android·java·kotlin
像我这样帅的人丶你还1 天前
Java 后端详解(四):分页与搜索
java·javascript·后端
她的男孩1 天前
数据权限为什么不能只靠注解?Forge 的 Mapper 层 SQL 改写源码拆解
java·后端·架构