瑞吉外卖购物车减一操作

首先看下对应的前端代码(index.html)

 //菜单中减少选中的商品
            async subtractCart(item){
                let params = {
                  dishId:item.id,
                }
                if(!Array.isArray(item.flavors)){
                  params = {
                    setmealId:item.id,
                  }
                }
                const res = await updateCartApi(params)
                if(res.code === 1){
                this.dishList.forEach(dish=>{
                  if(dish.id === item.id){
                    dish.number = (res.data.number === 0 ? undefined : res.data.number)
                  }
                })
                if(this.setMealDialog.show){
                  item.number = (res.data.number === 0 ? undefined : res.data.number)
                }
                this.getCartData()
                }else{
                  this.$notify({ type:'warning', message:res.msg});
                }
            },

对应的ajax请求为

//购物车中修改商品
function  updateCartApi(data){
    return $axios({
        'url': '/shoppingCart/sub',
        'method': 'post',
        data
      })
}

通过前端可以看到在前端提交数据后,发送的资源路径为"/sub",同时要减一的为菜品时,套餐的setmealId为null,反之dishId为null。而前端发送ajax请求后,通过this.getCartData()会自动显示更新后的购物车数据,因此后端只需要返回修改成功的标识字符串即可。

当该菜品(套餐)的数目(number)大于1时,通过将number属性减一后对表进行更新即可,否则说明数目为1,直接将该菜品(套餐)从表中删除,对应的后端代码为

@PostMapping("/sub")
    public R<String> sub(@RequestBody ShoppingCart shoppingCart){
        //设置用户id
        shoppingCart.setUserId(BaseContext.getCurrentId());
        Long dishId = shoppingCart.getDishId();
        LambdaQueryWrapper<ShoppingCart> queryWrapper =  new LambdaQueryWrapper<>();
        queryWrapper.eq(ShoppingCart::getUserId,shoppingCart.getUserId());

        if(dishId != null ){ //删除的是菜品
            queryWrapper.eq(ShoppingCart::getDishId,dishId);
             ShoppingCart cartOne = shoppingCartService.getOne(queryWrapper);
             int number = cartOne.getNumber();
             if(number > 1){
                 cartOne.setNumber(number-1);
                 shoppingCartService.updateById(cartOne);
             }else{
                 //只有一份,直接删除
                 shoppingCartService.removeById(cartOne.getId());
             }
             return R.success("删除菜品成功");
        }else{ //删除的是套餐
            queryWrapper.eq(ShoppingCart::getSetmealId,shoppingCart.getSetmealId());
            ShoppingCart cartOne = shoppingCartService.getOne(queryWrapper);
            int number = cartOne.getNumber();
            if(number > 1){
                cartOne.setNumber(number-1);
                shoppingCartService.updateById(cartOne);
            }else{
                //只有一份,直接删除
                shoppingCartService.removeById(cartOne.getId());
            }
            return R.success("删除套餐成功");

        }

    }

  • 3
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值