解决了购物车清空,但是页面没恢复的情况(仅供参考)
@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);
}