SpringBoot项目 瑞吉外卖(8)套餐管理
套餐操作和菜品类似,所以就写得水一点了。
新增套餐:
导入SetmealDto,创建setmealdish相关类和接口,只需创建setmealcontroller即可
套餐/菜品分类数据请求:
已解决
菜品数据:
// DishController.java@GetMapping("/list")public R<List<Dish>> list(Dish dish){LambdaQueryWrapper<Dish> queryWrapper = new LambdaQueryWrapper<>();queryWrapper.eq(dish.getCategoryId() != null, Dish::getCategoryId, dish.getCategoryId());queryWrapper.eq(Dish::getStatus, 1); // 菜品状态为起售queryWrapper.orderByAsc(Dish::getSort).orderByDesc(Dish::getUpdateTime);List<Dish> list = dishService.list(queryWrapper);if (list != null) return R.success(list);else return R.error("get list fail...");}
图片上传/下载:
已解决
提交保存:
不仅要保存setmeal表,也要保存setmeal_dish关系表
拓展service方法
// SetMealServiceImpl.java@Override@Transactionalpublic boolean saveWithDish(SetmealDto setmealDto) {// 保存setmeal基本信息super.save(setmealDto);// 保存setmeal_dish关系信息List<SetmealDish> setmealDishes = setmealDto.getSetmealDishes();List<SetmealDish> setmealDishList = setmealDishes.stream().peek((item) ->item.setSetmealId(setmealDto.getId())).collect(Collectors.toList());return setmealDishService.saveBatch(setmealDishList);}
// SetMealController.java@PostMappingpublic R<String> save(@RequestBody SetmealDto setmealDto){if (setmealService.saveWithDish(setmealDto)) return R.success("save success...");else return R.error("save fail...");}
分页查询:
这里需要注意的与在dish分页查询时相同
代码与dish也没什么不同
// SetMealController.java@GetMapping("/page")public R<Page<SetmealDto>> page(int page, int pageSize, String name){Page<SetMeal> pageInfo = new Page<>(page, pageSize);Page<SetmealDto> setmealDtoPage = new Page<>();LambdaQueryWrapper<SetMeal> queryWrapper = new LambdaQueryWrapper<>();queryWrapper.like(name != null, SetMeal::getName, name);queryWrapper.orderByDesc(SetMeal::getUpdateTime);setmealService.page(pageInfo, queryWrapper);BeanUtils.copyProperties(pageInfo, setmealDtoPage, "records");List<SetMeal> records = pageInfo.getRecords();List<SetmealDto> setmealDtoList = records.stream().map((item) -> {SetmealDto setmealDto = new SetmealDto();BeanUtils.copyProperties(item, setmealDto);Category category = categoryService.getCategoryId(item.getId());setmealDto.setCategoryName(category.getName());return setmealDto;}).collect(Collectors.toList());setmealDtoPage.setRecords(setmealDtoList);return R.success(setmealDtoPage);}
删除套餐:
删除同样是多表操作,需要扩展service方法
// SetMealServiceImpl.java@Override@Transactionalpublic boolean removeWithDish(List<Long> ids) {// 判断是否正在售出,是则抛出业务异常LambdaQueryWrapper<SetMeal> queryWrapper = new LambdaQueryWrapper<>();queryWrapper.in(SetMeal::getId, ids);queryWrapper.eq(SetMeal::getStatus, 1); // 正在售卖int count = this.count(queryWrapper);if (count > 0) throw new CustomException("this set meal is selling");// 删除setmeal表中数据super.removeByIds(ids);// 删除setmeal_dish表中数据LambdaQueryWrapper<SetmealDish> setmealDishQueryWrapper = new LambdaQueryWrapper<>();setmealDishQueryWrapper.in(SetmealDish::getSetmealId, ids);return setmealDishService.remove(setmealDishQueryWrapper);}
// SetMealController.java@DeleteMappingpublic R<String> delete(@RequestParam List<Long> ids){if (setmealService.removeWithDish(ids)) return R.success("delete success...");else return R.error("delete fail...");}
修改状态:
// SetMealController.java@PostMapping("/status/{status}")public R<String> updateStatus(@PathVariable String status, @RequestParam List<Long> ids){UpdateWrapper<SetMeal> updateWrapper = new UpdateWrapper<>();updateWrapper.in("id", ids).set("status", status);if (setmealService.update(updateWrapper)) return R.success("update status success...");else return R.error("update status fail...");}
修改时回显数据:
与dish相同,多表操作
// SetMealServiceImpl.java@Overridepublic SetmealDto getByIdWithDish(Long id) {SetmealDto setmealDto = new SetmealDto();SetMeal setMeal = super.getById(id);LambdaQueryWrapper<SetmealDish> queryWrapper = new LambdaQueryWrapper<>();queryWrapper.eq(SetmealDish::getSetmealId, setMeal.getId());List<SetmealDish> dishes = setmealDishService.list(queryWrapper);BeanUtils.copyProperties(setMeal, setmealDto);setmealDto.setSetmealDishes(dishes);return setmealDto;}
// SetMealController.java@GetMapping("/{id}")public R<SetMeal> revealInfo(@PathVariable Long id){SetMeal setMeal = setmealService.getByIdWithDish(id);if (setMeal != null) return R.success(setMeal);else return R.error("reveal info fail...");}
SpringBoot项目 瑞吉外卖(8)套餐管理相关推荐
- 黑马-瑞吉外卖 day5 套餐管理+手机验证码登录
目录 1. 套餐管理 1.1 新增套餐 1.2 套餐信息分页查询 1.3 删除套餐(可批量) 1.4 修改套餐状态(可批量) 2.手机验证码登录 2.1 短信发送 2.2 手机验证码登录 1. 套餐管 ...
- 【SpringBoot项目】SpringBoot项目-瑞吉外卖【day02】员工管理业务开发
文章目录 前言 员工管理业务开发 完善登录功能 问题分析 代码实现 功能测试 新增员工 需求分析 数据模型 代码开发 功能测试 统一处理异常 员工信息分页查询 需求分析 代码开发 功能测试 启用/禁用 ...
- 【SpringBoot项目】SpringBoot项目-瑞吉外卖【day03】分类管理
文章目录 前言 公共字段自动填充 问题分析 代码实现 功能测试 功能完善 新增分类 需求分析 模型 代码开发 功能测试 分类信息分页查询 需求分析 代码开发 功能测试 删除分类 需求分析 代码开发 功 ...
- 云服务器部署SpringBoot工程-瑞吉外卖项目
Linux部署SpringBoot工程-瑞吉外卖项目 云平台:阿里云 终端软件:Tabby Terminal 部署项目项目: SpringBoot-瑞吉外卖 自己第一次从本地web项目搭建到云端部署发 ...
- 项目-瑞吉外卖(1)
项目-瑞吉外卖 基本要求 1.介绍 开发流程 角色分工 软件环境 开发环境,测试环境,生产环境 2.项目介绍 3.开发环境搭建 1.数据库环境搭建 创建数据库 导入表结构,运行外部SQL文件 /* N ...
- 瑞吉外卖项目——瑞吉外卖
软件开发整体介绍 软件开发流程 需求分析:产品原型.需求规格说明书 设计:产品文档.UI界面设计.概要设计.详细设计.数据库设计 编码:项目代码.单元测试 测试:测试用例.测试报告 上线运维:软件环境 ...
- java 瑞吉外卖 day5 套餐管理业务 套餐新增,套餐分页查询 套餐修改 套餐停售起售设置 短信服务
新增套餐 准备工作: 套餐信息分页查询 前面已经写了好几个分页查询了,这里查询的关键点,是套餐分类名称,不在套餐表中,我们要到别的表里拿,然后封装进setmealDto @GetMapping(&qu ...
- 项目前期准备 -- 手把手教你做ssm+springboot入门后端项目黑马程序员瑞吉外卖(一)
文章目录 前言 一.导学内容 1.前置知识(必备) 2.博客收获 3.效果展示 4.软件开发流程整体介绍 4.瑞吉外卖整体项目介绍 二.开发环境搭建 1.数据库环境搭建 2.maven环境搭建 总结 ...
- 瑞吉外卖项目day01
一.软件开发整体介绍 1.1 软件开发流程 需求分析:产品原型.需求规格说明书 设计:产品文档.UI界面设计.概要设计.详细设计.数据库设计 编码:项目代码,是单元测试 上线运维:软件环境安装.配置 ...
最新文章
- 谷歌搜索:几乎所有的英文搜索都用上BERT了
- [转]产品需求文档(PRD)的写作
- python可变参数_Python 的四种共享传参详解
- [caffe解读] caffe从数学公式到代码实现4-认识caffe自带的7大loss
- java如何得到GET和POST请求URL和参数列表(转)
- magento tab(easy tables)标签应用
- 最优化学习笔记(三)最速下降法
- Java Random nextInt()方法与示例
- 视频抠像软件Imagineer Systems Mokey
- 写好一份属于自己的简历
- feed机制、fetch机制
- 322. Coin Change
- [GIS原理] 8.2 空间分析-邻近度分析-Delaunay三角网(德劳内)/泰森多边形(Thiessen多边形)/冯洛诺伊图(Voronoi图)
- 羊车门问题python程序_羊车门问题
- 微软服务器模式表格多维,用挖掘功能实现多元回归分析
- 运筹帷幄的“懒蚂蚁”
- 基于chatgpt开发QQ机器人
- Apache ab性能测试结果分析
- 常见网页悬浮广告(JavaScript)
- fk_gfw: step of setting bwh to go,,fk_gfw,,ogle
热门文章
- 将pdf转换成jpg格式的两种方法
- 计算机基础知识英文论文,第1章 计算机基础知识 2.doc
- Realtek MCU Config Tool LED Specify Function
- 过度使用耳机的危害有哪些?怎么合理戴耳机才不会伤害到我们耳朵
- 证书全部无效的解决方法
- 性能测试之cpu的性能诊断
- C++ 从入门到入门 2-> C/C++ 一般的代码形式
- 小虎电商浏览器:多多打单移动端入口在哪里
- 错误:Mixed Content: The page at 'https://a.b.com/detail?id=5' was loaded over HTTPS, but reque
- 开源软件安装及版本控制