观察删除单个套餐和批量删除套餐的请求信息可以发现,两种请求的地址和请求方式都是相同的,不同的则是传递的id个数,所以在服务端可以提供一个方法来统一处理。

批量起售、停售

    /*** 根据id(批量)停售/启售套餐信息* @param status* @param ids* @return*/@PostMapping("/status/{status}")public R<String> updateMulStatus(@PathVariable Integer status, Long[] ids){List<Long> list = Arrays.asList(ids);//构造条件构造器LambdaUpdateWrapper<Setmeal> updateWrapper = new LambdaUpdateWrapper<>();//添加过滤条件updateWrapper.set(Setmeal::getStatus,status).in(Setmeal::getId,list);setmealService.update(updateWrapper);return R.success("套餐信息修改成功");}

批量删除功能(对于状态为售卖中的套餐不能删除,需要先停售,然后才能删除。)

SetmealController

    /*** (批量)删除套餐* @param ids* @return*/@DeleteMappingpublic R<String> delete(@RequestParam List<Long> ids){log.info("ids:{}",ids);setmealService.removeWithDish(ids);return R.success("套餐数据删除成功");}

SetmealService

package com.itheima.reggie.service;import com.baomidou.mybatisplus.extension.service.IService;
import com.itheima.reggie.dto.SetmealDto;
import com.itheima.reggie.entity.Setmeal;import java.util.List;/*** @author snape* @create 2022-05-24 18:20*/
public interface SetmealService extends IService<Setmeal> {/*** 删除套餐,同时需要删除套餐和菜品的关联数据* @param ids*/public void removeWithDish(List<Long> ids);
}

SetmealServiceImpl

package com.itheima.reggie.service.impl;import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.itheima.reggie.common.CustomException;
import com.itheima.reggie.dto.SetmealDto;
import com.itheima.reggie.entity.Setmeal;
import com.itheima.reggie.entity.SetmealDish;
import com.itheima.reggie.mapper.SetmealMapper;
import com.itheima.reggie.service.SetmealDishService;
import com.itheima.reggie.service.SetmealService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;import java.util.List;
import java.util.stream.Collectors;/*** @author snape* @create 2022-05-24 18:25*/
@Service
@Slf4j
public class SetmealServiceImpl extends ServiceImpl<SetmealMapper, Setmeal> implements SetmealService {@Autowiredprivate SetmealDishService setmealDishService;/*** 删除套餐,同时需要删除套餐和菜品的关联数据* @param ids*/@Transactional@Overridepublic void removeWithDish(List<Long> ids) {//select count(*) from setmeal where id in (1,2,3) and status = 1//查询套餐状态,确定是否可用删除LambdaQueryWrapper<Setmeal> queryWrapper = new LambdaQueryWrapper<>();queryWrapper.in(Setmeal::getId,ids);queryWrapper.eq(Setmeal::getStatus,1);int count = super.count(queryWrapper);if (count > 0){//如果不能删除,抛出一个业务异常throw new CustomException("套餐正在售卖中,不能删除");}//如果可以删除,先删除套餐表中的数据---setmealsuper.removeByIds(ids);LambdaQueryWrapper<SetmealDish> lambdaQueryWrapper = new LambdaQueryWrapper<>();lambdaQueryWrapper.in(SetmealDish::getDishId,ids);//删除关系表中的数据---setmeal_dishsetmealDishService.remove(lambdaQueryWrapper);}
}

黑马瑞吉外卖项目之套餐删除、起售、停售和批量删除、起售、停售菜品功能相关推荐

  1. 黑马瑞吉外卖项目之订单明细的查询,分页,派送功能

    黑马瑞吉外卖项目之订单明细的查询,分页,派送功能 /*** 后台管理订单信息分页查询* @param page* @param pageSize* @return*/@GetMapping(" ...

  2. 黑马瑞吉外卖项目开发笔记

    目录 软件开发整体介绍 开发流程 角色分工 软件环境 瑞吉外卖项目介绍 项目介绍 产品原型展示 技术选型 功能架构 角色 开发环境搭建 数据库环境搭建 Maven环境搭建 1.直接创建maven项目( ...

  3. 瑞吉外卖项目——新增套餐

    需求分析 套餐就是菜品的集合. 后台系统中可以管理套餐信息,通过新增套餐功能来增加一个新的套餐,在添加套餐时需要选择套餐分类和包含的菜品,并且需要选择套餐所对应的图片,在移动端会展示相应的界面. 数据 ...

  4. 黑马瑞吉外卖项目之用户订单信息分页查询功能

    这里导入OrderDto并添加sumNum package com.itheima.reggie.dto;import com.itheima.reggie.entity.OrderDetail; i ...

  5. 瑞吉外卖项目剩余功能补充

    目录 菜品启售和停售 菜品批量启售和批量停售 菜品的批量删除 菜品删除逻辑优化 套餐管理的启售,停售 套餐管理的修改 后台按条件查看和展示客户订单 手机端减少购物车中的菜品或者套餐数量(前端展示有一点 ...

  6. 瑞吉外卖项目 基于spring Boot+mybatis-plus开发 超详细笔记,有源码链接

    本项目是基于自学b站中 黑马程序员 的瑞吉外卖项目:视频链接: 黑马程序员Java项目实战<瑞吉外卖>,轻松掌握springboot + mybatis plus开发核心技术的真java实 ...

  7. 【SpringBoot项目实战+思维导图】瑞吉外卖①(项目介绍、开发环境搭建、后台登陆/退出功能开发)

    文章目录 软件开发整体介绍 软件开发流程 角色分工 软件环境 瑞吉外卖项目介绍 项目介绍 产品原型 技术选型 功能架构 角色 开发环境搭建 数据库环境搭建 创建数据库 数据库表导入 数据库表介绍 Ma ...

  8. 瑞吉外卖项目笔记+踩坑1——基础功能

     导航: [黑马Java笔记+踩坑汇总]JavaSE+JavaWeb+SSM+SpringBoot+瑞吉外卖+SpringCloud/SpringCloudAlibaba+黑马旅游+谷粒商城 目录 1 ...

  9. 瑞吉外卖项目重难点及易错点知识点总结

    本文是对b站黑马程序员瑞吉外卖项目的总结,实现流程以及简单部分不做详解,重点归纳难点以及易错点.(前面是对项目的介绍,可以直接略过 看第四点总结) 视频链接:https://www.bilibili. ...

最新文章

  1. 利用dsamain.exe挂载快照(活动目录快照配置管理系列四)
  2. spring中自定义Bean的性质
  3. 计算机音乐除了春天爱情和樱花,High4IU《除了春天爱情和樱花》新歌试听
  4. Svn正确的使用方法
  5. 工作42:可以不参考原型
  6. android软件perthbus,Transit
  7. win8选择哪个python版本_Win8的几个版本该怎么选
  8. 包和loggging模块
  9. 【转载】企业安全建设之数据库安全(中)
  10. 异步日志方案log4cpp
  11. Gartner发布2021年新兴技术成熟度曲线,三大新兴技术趋势主题
  12. 如何对Win10电脑文件夹选项进行设置?
  13. Java十六进制操作
  14. 【MD5】校验下载文件完整性
  15. 【洛谷 P1240】诸侯安置
  16. Wannafly挑战赛24 D 无限手套
  17. 买Mac做设计玩游戏?各类Mac图形设计能力浅析
  18. 华擎 FM2A75 PRO4刷Bios历险
  19. USB | 2. 最新USB 4.0规范解析及一致性测试
  20. 恺撒与基督: 罗马帝国面积

热门文章

  1. 经典幽默的计算机名言
  2. 哪位老哥熟悉vue fullcalendar的,能帮忙看看为啥addEvent没效果吗
  3. 《ELC:SpaceX的经验教训》中文翻译与自己的一些见解
  4. 全国计算机竞赛保送清华,全国数学奥赛金牌、保送清华,别人家的孩子了解一下...
  5. 单片机定时器精准定时_如何确保单片机精确定时控制有哪些编程方法详细说明...
  6. Google电话面试都问什么问题?
  7. 集成支付宝SDK流程
  8. 位深度8位什么水平_2位3通电磁阀是什么,2位3通电磁阀工作原理
  9. 电力电子技术-第二章电力电子器件--功率二极管
  10. python学习第五天作业