黑马瑞吉外卖项目之套餐删除、起售、停售和批量删除、起售、停售菜品功能
观察删除单个套餐和批量删除套餐的请求信息可以发现,两种请求的地址和请求方式都是相同的,不同的则是传递的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);}
}
黑马瑞吉外卖项目之套餐删除、起售、停售和批量删除、起售、停售菜品功能相关推荐
- 黑马瑞吉外卖项目之订单明细的查询,分页,派送功能
黑马瑞吉外卖项目之订单明细的查询,分页,派送功能 /*** 后台管理订单信息分页查询* @param page* @param pageSize* @return*/@GetMapping(" ...
- 黑马瑞吉外卖项目开发笔记
目录 软件开发整体介绍 开发流程 角色分工 软件环境 瑞吉外卖项目介绍 项目介绍 产品原型展示 技术选型 功能架构 角色 开发环境搭建 数据库环境搭建 Maven环境搭建 1.直接创建maven项目( ...
- 瑞吉外卖项目——新增套餐
需求分析 套餐就是菜品的集合. 后台系统中可以管理套餐信息,通过新增套餐功能来增加一个新的套餐,在添加套餐时需要选择套餐分类和包含的菜品,并且需要选择套餐所对应的图片,在移动端会展示相应的界面. 数据 ...
- 黑马瑞吉外卖项目之用户订单信息分页查询功能
这里导入OrderDto并添加sumNum package com.itheima.reggie.dto;import com.itheima.reggie.entity.OrderDetail; i ...
- 瑞吉外卖项目剩余功能补充
目录 菜品启售和停售 菜品批量启售和批量停售 菜品的批量删除 菜品删除逻辑优化 套餐管理的启售,停售 套餐管理的修改 后台按条件查看和展示客户订单 手机端减少购物车中的菜品或者套餐数量(前端展示有一点 ...
- 瑞吉外卖项目 基于spring Boot+mybatis-plus开发 超详细笔记,有源码链接
本项目是基于自学b站中 黑马程序员 的瑞吉外卖项目:视频链接: 黑马程序员Java项目实战<瑞吉外卖>,轻松掌握springboot + mybatis plus开发核心技术的真java实 ...
- 【SpringBoot项目实战+思维导图】瑞吉外卖①(项目介绍、开发环境搭建、后台登陆/退出功能开发)
文章目录 软件开发整体介绍 软件开发流程 角色分工 软件环境 瑞吉外卖项目介绍 项目介绍 产品原型 技术选型 功能架构 角色 开发环境搭建 数据库环境搭建 创建数据库 数据库表导入 数据库表介绍 Ma ...
- 瑞吉外卖项目笔记+踩坑1——基础功能
导航: [黑马Java笔记+踩坑汇总]JavaSE+JavaWeb+SSM+SpringBoot+瑞吉外卖+SpringCloud/SpringCloudAlibaba+黑马旅游+谷粒商城 目录 1 ...
- 瑞吉外卖项目重难点及易错点知识点总结
本文是对b站黑马程序员瑞吉外卖项目的总结,实现流程以及简单部分不做详解,重点归纳难点以及易错点.(前面是对项目的介绍,可以直接略过 看第四点总结) 视频链接:https://www.bilibili. ...
最新文章
- 利用dsamain.exe挂载快照(活动目录快照配置管理系列四)
- spring中自定义Bean的性质
- 计算机音乐除了春天爱情和樱花,High4IU《除了春天爱情和樱花》新歌试听
- Svn正确的使用方法
- 工作42:可以不参考原型
- android软件perthbus,Transit
- win8选择哪个python版本_Win8的几个版本该怎么选
- 包和loggging模块
- 【转载】企业安全建设之数据库安全(中)
- 异步日志方案log4cpp
- Gartner发布2021年新兴技术成熟度曲线,三大新兴技术趋势主题
- 如何对Win10电脑文件夹选项进行设置?
- Java十六进制操作
- 【MD5】校验下载文件完整性
- 【洛谷 P1240】诸侯安置
- Wannafly挑战赛24 D 无限手套
- 买Mac做设计玩游戏?各类Mac图形设计能力浅析
- 华擎 FM2A75 PRO4刷Bios历险
- USB | 2. 最新USB 4.0规范解析及一致性测试
- 恺撒与基督: 罗马帝国面积
热门文章
- 经典幽默的计算机名言
- 哪位老哥熟悉vue fullcalendar的,能帮忙看看为啥addEvent没效果吗
- 《ELC:SpaceX的经验教训》中文翻译与自己的一些见解
- 全国计算机竞赛保送清华,全国数学奥赛金牌、保送清华,别人家的孩子了解一下...
- 单片机定时器精准定时_如何确保单片机精确定时控制有哪些编程方法详细说明...
- Google电话面试都问什么问题?
- 集成支付宝SDK流程
- 位深度8位什么水平_2位3通电磁阀是什么,2位3通电磁阀工作原理
- 电力电子技术-第二章电力电子器件--功率二极管
- python学习第五天作业