瑞吉外卖Day4---作业

瑞吉外卖对菜品信息进行批量删除、启售、停售

Day4项目完善

批量删除

我们进行删除和批量删除之前,我们需要先确定删除的菜品是否是启售状态,如果是启售状态下删除,业务会出错(比如:用户下单了这个菜品,而人员刚好在这时删除了这个菜品)

删除前端数据删除前端数据
批量删除前端数据批量删除前端数据

我们可以得出一下结论:

  1. 使用@DeleteMapper
  2. 删除传递的是Long类型id,批量删除传递数组类型的ids

因为操作相同,我们可以将删除和批量删除写在一起
判断菜品状态sql语句是这样的: 判断id为1,2,3的状态是不是启售状态

select count(*) from dish where id in (1,2,3) and status = 1

如果启售,我们将直接给出业务异常
如果停售,我们将对菜品进行删除

下面是完整代码
controller层:

@DeleteMapping
    public R<String> delete(@RequestParam List<Long> ids){
        log.info("ids:{}",ids);
        dishService.removeWithFlavor(ids);
        return R.success("菜品信息删除成功");
    }

service层

		@Override
    public void removeWithFlavor(List<Long> ids) {
        LambdaQueryWrapper<Dish> queryWrapper = new LambdaQueryWrapper<>();
        queryWrapper.in(Dish::getId,ids);
        queryWrapper.eq(Dish::getStatus,1);
        int count = super.count(queryWrapper);
        if (count > 0){
            throw new CustomException("套餐正在售卖中,不能删除");
        }
        //如果可以删除,先删除菜品表中的数据---dish
        super.removeByIds(ids);
        LambdaQueryWrapper<DishFlavor> lambdaQueryWrapper = new LambdaQueryWrapper<>();
        lambdaQueryWrapper.in(DishFlavor::getDishId,ids);
        //删除关系表中的数据---dish_flavor
        dishFlavorService.remove(lambdaQueryWrapper);
    }

批量启售、停售

同样,我们先查看前端传递的数据
单独点击启售/停售
在这里插入图片描述批量击启售/停售在这里插入图片描述得出结论:

  1. 都是POST请求
  2. 传递 /status/{status}

我们需要根据菜品id来绑定菜品
代码如下:

@PostMapping("/status/{status}")
    public R<String> updateMulStatus(@PathVariable Integer status, Long[] ids){
        List<Long> list = Arrays.asList(ids);
        LambdaUpdateWrapper<Dish> updateWrapper = new LambdaUpdateWrapper<>();
        updateWrapper.set(Dish::getStatus,status).in(Dish::getId,list);
        dishService.update(updateWrapper);
        return R.success("菜品信息修改成功");
    }
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值