瑞吉外卖-购物车sub方法解决方案

解决了购物车清空,但是页面没恢复的情况(仅供参考)

在这里插入图片描述
在这里插入图片描述

@PostMapping("/sub")
    public R<ShoppingCart> sub(@RequestBody ShoppingCart shoppingCart){
        //设置用户id,指定当前是哪个用户的购物车数据
        Long currentId = BaseContext.getCurrentId();
        shoppingCart.setUserId(currentId);
        Long dishId = shoppingCart.getDishId();
        LambdaQueryWrapper<ShoppingCart> queryWrapper = new LambdaQueryWrapper<>();
        queryWrapper.eq(ShoppingCart::getUserId,currentId);
        if(dishId != null){
            //添加到购物车的是菜品
            queryWrapper.eq(ShoppingCart::getDishId,dishId);
        }else{
            //添加到购物车的是套餐
            queryWrapper.eq(ShoppingCart::getSetmealId,shoppingCart.getSetmealId());
        }
        ShoppingCart cartServiceOne1 = shoppingCartService.getOne(queryWrapper);
        //这一大堆我直接抄的上面的懒得写了可优化主要看下面
        
            //如果已经存在,就在原来数量基础上加一
            //先获取number的数据
            Integer number = cartServiceOne1.getNumber();
        if (number!=1){//如果不等于1 比如等于2345 就正常减1
            cartServiceOne1.setNumber(number - 1);
            shoppingCartService.updateById(cartServiceOne1);
        }else {//如果等于1 点击了减号先设为0在删除 因为前端代码是根据number的值显示“加减”还是“选择规格“ 又兴趣的可以看前端代码174行那几行
            Long id = cartServiceOne1.getId();
            cartServiceOne1.setNumber(0);//这句很关键 删除前先把number设为0 前端根据这个判断显示
            shoppingCartService.removeById(id);
        }
        return R.success(cartServiceOne1);
    }
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值