套餐操作和菜品类似,所以就写得水一点了。

新增套餐:

导入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)套餐管理相关推荐

  1. 黑马-瑞吉外卖 day5 套餐管理+手机验证码登录

    目录 1. 套餐管理 1.1 新增套餐 1.2 套餐信息分页查询 1.3 删除套餐(可批量) 1.4 修改套餐状态(可批量) 2.手机验证码登录 2.1 短信发送 2.2 手机验证码登录 1. 套餐管 ...

  2. 【SpringBoot项目】SpringBoot项目-瑞吉外卖【day02】员工管理业务开发

    文章目录 前言 员工管理业务开发 完善登录功能 问题分析 代码实现 功能测试 新增员工 需求分析 数据模型 代码开发 功能测试 统一处理异常 员工信息分页查询 需求分析 代码开发 功能测试 启用/禁用 ...

  3. 【SpringBoot项目】SpringBoot项目-瑞吉外卖【day03】分类管理

    文章目录 前言 公共字段自动填充 问题分析 代码实现 功能测试 功能完善 新增分类 需求分析 模型 代码开发 功能测试 分类信息分页查询 需求分析 代码开发 功能测试 删除分类 需求分析 代码开发 功 ...

  4. 云服务器部署SpringBoot工程-瑞吉外卖项目

    Linux部署SpringBoot工程-瑞吉外卖项目 云平台:阿里云 终端软件:Tabby Terminal 部署项目项目: SpringBoot-瑞吉外卖 自己第一次从本地web项目搭建到云端部署发 ...

  5. 项目-瑞吉外卖(1)

    项目-瑞吉外卖 基本要求 1.介绍 开发流程 角色分工 软件环境 开发环境,测试环境,生产环境 2.项目介绍 3.开发环境搭建 1.数据库环境搭建 创建数据库 导入表结构,运行外部SQL文件 /* N ...

  6. 瑞吉外卖项目——瑞吉外卖

    软件开发整体介绍 软件开发流程 需求分析:产品原型.需求规格说明书 设计:产品文档.UI界面设计.概要设计.详细设计.数据库设计 编码:项目代码.单元测试 测试:测试用例.测试报告 上线运维:软件环境 ...

  7. java 瑞吉外卖 day5 套餐管理业务 套餐新增,套餐分页查询 套餐修改 套餐停售起售设置 短信服务

    新增套餐 准备工作: 套餐信息分页查询 前面已经写了好几个分页查询了,这里查询的关键点,是套餐分类名称,不在套餐表中,我们要到别的表里拿,然后封装进setmealDto @GetMapping(&qu ...

  8. 项目前期准备 -- 手把手教你做ssm+springboot入门后端项目黑马程序员瑞吉外卖(一)

    文章目录 前言 一.导学内容 1.前置知识(必备) 2.博客收获 3.效果展示 4.软件开发流程整体介绍 4.瑞吉外卖整体项目介绍 二.开发环境搭建 1.数据库环境搭建 2.maven环境搭建 总结 ...

  9. 瑞吉外卖项目day01

    一.软件开发整体介绍 1.1 软件开发流程 需求分析:产品原型.需求规格说明书 设计:产品文档.UI界面设计.概要设计.详细设计.数据库设计 编码:项目代码,是单元测试 上线运维:软件环境安装.配置 ...

最新文章

  1. 谷歌搜索:几乎所有的英文搜索都用上BERT了
  2. [转]产品需求文档(PRD)的写作
  3. python可变参数_Python 的四种共享传参详解
  4. [caffe解读] caffe从数学公式到代码实现4-认识caffe自带的7大loss
  5. java如何得到GET和POST请求URL和参数列表(转)
  6. magento tab(easy tables)标签应用
  7. 最优化学习笔记(三)最速下降法
  8. Java Random nextInt()方法与示例
  9. 视频抠像软件Imagineer Systems Mokey
  10. 写好一份属于自己的简历
  11. feed机制、fetch机制
  12. 322. Coin Change
  13. [GIS原理] 8.2 空间分析-邻近度分析-Delaunay三角网(德劳内)/泰森多边形(Thiessen多边形)/冯洛诺伊图(Voronoi图)
  14. 羊车门问题python程序_羊车门问题
  15. 微软服务器模式表格多维,用挖掘功能实现多元回归分析
  16. 运筹帷幄的“懒蚂蚁”
  17. 基于chatgpt开发QQ机器人
  18. Apache ab性能测试结果分析
  19. 常见网页悬浮广告(JavaScript)
  20. fk_gfw: step of setting bwh to go,,fk_gfw,,ogle

热门文章

  1. 将pdf转换成jpg格式的两种方法
  2. 计算机基础知识英文论文,第1章 计算机基础知识 2.doc
  3. Realtek MCU Config Tool LED Specify Function
  4. 过度使用耳机的危害有哪些?怎么合理戴耳机才不会伤害到我们耳朵
  5. 证书全部无效的解决方法
  6. 性能测试之cpu的性能诊断
  7. C++ 从入门到入门 2-> C/C++ 一般的代码形式
  8. 小虎电商浏览器:多多打单移动端入口在哪里
  9. 错误:Mixed Content: The page at 'https://a.b.com/detail?id=5' was loaded over HTTPS, but reque
  10. 开源软件安装及版本控制