package com.itheima.reggie.controller;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.itheima.reggie.common.R;
import com.itheima.reggie.dto.DishDto;
import com.itheima.reggie.entity.Category;
import com.itheima.reggie.entity.Dish;
import com.itheima.reggie.entity.DishFlavor;
import com.itheima.reggie.service.CategoryService;
import com.itheima.reggie.service.DishFlavorService;
import com.itheima.reggie.service.DishService;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang.StringUtils;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import java.util.List;
import java.util.stream.Collectors;
/**
* 菜品管理
*/
@RestController
@RequestMapping("/dish")
@Slf4j
public class DishController {
@Autowired
private DishService dishService;
@Autowired
private DishFlavorService dishFlavorService;
@Autowired
private CategoryService categoryService;
/**
* 新增菜品
* @param dishDto
* @return
*/
@PostMapping
public R<String> save(@RequestBody DishDto dishDto){
log.info(dishDto.toString());
dishService.saveWithFlavor(dishDto);
return R.success("新增菜品成功");
}
/**
* 菜品信息分页查询
* @param page
* @param pageSize
* @param name
* @return
*/
@GetMapping("/page")
public R<Page> page(int page,int pageSize,String name){
//构造分页构造器对象
Page<Dish> pageInfo = new Page<>(page,pageSize);
Page<DishDto> dishDtoPage = new Page<>();
//条件构造器
LambdaQueryWrapper<Dish> queryWrapper = new LambdaQueryWrapper<>();
//添加过滤条件
queryWrapper.like(name != null,Dish::getName,name);
//添加排序条件
queryWrapper.orderByDesc(Dish::getUpdateTime);
//执行分页查询
dishService.page(pageInfo,queryWrapper);
//对象拷贝
BeanUtils.copyProperties(pageInfo,dishDtoPage,"records");
List<Dish> records = pageInfo.getRecords();
List<DishDto> list = records.stream().map((item) -> {
DishDto dishDto = new DishDto();
BeanUtils.copyProperties(item,dishDto);
Long categoryId = item.getCategoryId();//分类id
//根据id查询分类对象
Category category = categoryService.getById(categoryId);
if(category != null){
String categoryName = category.getName();
dishDto.setCategoryName(categoryName);
}
return dishDto;
}).collect(Collectors.toList());
dishDtoPage.setRecords(list);
return R.success(dishDtoPage);
}
/**
* 根据id查询菜品信息和对应的口味信息
* @param id
* @return
*/
@GetMapping("/{id}")
public R<DishDto> get(@PathVariable Long id){
DishDto dishDto = dishService.getByIdWithFlavor(id);
return R.success(dishDto);
}
/**
* 修改菜品
* @param dishDto
* @return
*/
@PutMapping
public R<String> update(@RequestBody DishDto dishDto){
log.info(dishDto.toString());
dishService.updateWithFlavor(dishDto);
return R.success("修改菜品成功");
}
/**
* 根据条件查询对应的菜品数据
* @param dish
* @return
*/
/*@GetMapping("/list")
public R<List<Dish>> list(Dish dish){
//构造查询条件
LambdaQueryWrapper<Dish> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.eq(dish.getCategoryId() != null ,Dish::getCategoryId,dish.getCategoryId());
//添加条件,查询状态为1(起售状态)的菜品
queryWrapper.eq(Dish::getStatus,1);
//添加排序条件
queryWrapper.orderByAsc(Dish::getSort).orderByDesc(Dish::getUpdateTime);
List<Dish> list = dishService.list(queryWrapper);
return R.success(list);
}*/
@GetMapping("/list")
public R<List<DishDto>> list(Dish dish){
//构造查询条件
LambdaQueryWrapper<Dish> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.eq(dish.getCategoryId() != null ,Dish::getCategoryId,dish.getCategoryId());
//添加条件,查询状态为1(起售状态)的菜品
queryWrapper.eq(Dish::getStatus,1);
//添加排序条件
queryWrapper.orderByAsc(Dish::getSort).orderByDesc(Dish::getUpdateTime);
List<Dish> list = dishService.list(queryWrapper);
List<DishDto> dishDtoList = list.stream().map((item) -> {
DishDto dishDto = new DishDto();
BeanUtils.copyProperties(item,dishDto);
Long categoryId = item.getCategoryId();//分类id
//根据id查询分类对象
Category category = categoryService.getById(categoryId);
if(category != null){
String categoryName = category.getName();
dishDto.setCategoryName(categoryName);
}
//当前菜品的id
Long dishId = item.getId();
LambdaQueryWrapper<DishFlavor> lambdaQueryWrapper = new LambdaQueryWrapper<>();
lambdaQueryWrapper.eq(DishFlavor::getDishId,dishId);
//SQL:select * from dish_flavor where dish_id = ?
List<DishFlavor> dishFlavorList = dishFlavorService.list(lambdaQueryWrapper);
dishDto.setFlavors(dishFlavorList);
return dishDto;
}).collect(Collectors.toList());
return R.success(dishDtoList);
}
/**
* 对菜品批量或者是单个 进行停售或者是起售
* @return
*/
@PostMapping("/status/{status}")
//这个参数这里一定记得加注解才能获取到参数,否则这里非常容易出问题
public R<String> status(@PathVariable("status") Integer status,@RequestParam List<Long> ids){
//log.info("status:{}",status);
//log.info("ids:{}",ids);
LambdaQueryWrapper<Dish> queryWrapper = new LambdaQueryWrapper();
queryWrapper.in(ids !=null,Dish::getId,ids);
//根据数据进行批量查询
List<Dish> list = dishService.list(queryWrapper);
for (Dish dish : list) {
if (dish != null){
dish.setStatus(status);
dishService.updateById(dish);
}
}
return R.success("售卖状态修改成功");
}
/**
* 套餐批量删除和单个删除
* @return
*/
@DeleteMapping
public R<String> delete(@RequestParam("ids") List<Long> ids){
//删除菜品 这里的删除是逻辑删除
dishService.deleteByIds(ids);
//删除菜品对应的口味 也是逻辑删除
LambdaQueryWrapper<DishFlavor> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.in(DishFlavor::getDishId,ids);
dishFlavorService.remove(queryWrapper);
return R.success("菜品删除成功");
}
}
没有合适的资源?快使用搜索试试~ 我知道了~
温馨提示
近几年毕业设计和毕业答辩的要求和难度不断提升,传统的毕业项目缺少创新和亮点,往往达不到毕业答辩的要求,这几年教育机构专门针对各大院校毕业设计进行培训指导,衍生出很多届优秀学员的毕业项目,为了让广大同学都可以顺利通过答辩,我作为过来人给大家准备了一些资料,同学们可以互相参考,我建议大家是要有自己的想法来重构项目,而不是照搬抄袭。近几年毕业设计和毕业答辩的要求和难度不断提升,传统的毕业项目缺少创新和亮点,往往达不到毕业答辩的要求,这几年教育机构专门针对各大院校毕业设计进行培训指导,衍生出很多届优秀学员的毕业项目,为了让广大同学都可以顺利通过答辩,我作为过来人给大家准备了一些资料,同学们可以互相参考,我建议大家是要有自己的想法来重构项目,而不是照搬抄袭。近几年毕业设计和毕业答辩的要求和难度不断提升,传统的毕业项目缺少创新和亮点,往往达不到毕业答辩的要求,这几年教育机构专门针对各大院校毕业设计进行培训指导,衍生出很多届优秀学员的毕业项目,为了让广大同学都可以顺利通过答辩,我作为过来人给大家准备了一些资料,同学们可以互相参考,我建议大家是要有自己的想法来重构项目,而不是照搬抄袭。
资源推荐
资源详情
资源评论
收起资源包目录
项目.zip (215个子文件)
DishController.class 12KB
SetmealController.class 11KB
SetmealServiceImpl.class 8KB
EmployeeController.class 8KB
DishServiceImpl.class 8KB
Dish.class 7KB
SetmealDish.class 7KB
Setmeal.class 7KB
Employee.class 7KB
CategoryController.class 6KB
DishFlavor.class 6KB
Category.class 5KB
R.class 4KB
CategoryServiceImpl.class 4KB
LoginCheckFilter.class 4KB
CommonController.class 3KB
DishDto.class 3KB
JacksonObjectMapper.class 3KB
GlobalExceptionHandler.class 2KB
WebMvcConfig.class 2KB
SetmealDto.class 2KB
SMSUtils.class 2KB
MyMetaObjecthandler.class 2KB
ValidateCodeUtils.class 1KB
ReggieApplication.class 1KB
MybatisPlusConfig.class 1014B
SetmealDishServiceImpl.class 945B
BaseContext.class 866B
SetmealService.class 801B
DishFlavorServiceImpl.class 744B
EmployeeServiceImpl.class 730B
DishService.class 664B
CustomException.class 426B
SetmealDishMapper.class 408B
DishFlavorMapper.class 405B
CategoryService.class 403B
CategoryMapper.class 399B
EmployeeMapper.class 399B
SetmealMapper.class 396B
DishMapper.class 387B
SetmealDishService.class 338B
DishFlavorService.class 335B
EmployeeService.class 329B
common.css 288KB
common.css 288KB
index.css 227KB
index.css 227KB
demo.css 9KB
demo.css 9KB
index.css 7KB
index.css 7KB
page.css 4KB
page.css 4KB
login.css 2KB
login.css 2KB
iconfont.css 776B
iconfont.css 776B
.gitignore 190B
add.html 24KB
add.html 24KB
add.html 18KB
add.html 18KB
demo_index.html 13KB
demo_index.html 13KB
list.html 10KB
list.html 10KB
list.html 10KB
list.html 10KB
list.html 9KB
list.html 9KB
list.html 9KB
list.html 9KB
index.html 7KB
index.html 7KB
add.html 7KB
add.html 7KB
list.html 6KB
list.html 6KB
login.html 4KB
login.html 4KB
upload.html 2KB
upload.html 2KB
favicon.ico 4KB
favicon.ico 4KB
DishController.java 7KB
SetmealController.java 6KB
EmployeeController.java 5KB
SetmealServiceImpl.java 4KB
DishServiceImpl.java 4KB
LoginCheckFilter.java 3KB
JacksonObjectMapper.java 3KB
CategoryController.java 3KB
CommonController.java 3KB
WebMvcConfig.java 3KB
CategoryServiceImpl.java 2KB
MyMetaObjecthandler.java 1KB
GlobalExceptionHandler.java 1KB
ValidateCodeUtils.java 1KB
Dish.java 1KB
SMSUtils.java 1KB
共 215 条
- 1
- 2
- 3
资源评论
诚信赢天下
- 粉丝: 2971
- 资源: 102
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 基于SHT25温湿度传感器、FREERTOS、STM32F103C8T6、LCD1602温湿度采集显示系统proteus仿真设计
- C# 屏幕放大取色器 随时随地获取屏幕像素颜色
- 下载安装这个软件.apk
- 【数据集详细解释及案例分析】数据集详细解释及案例分析
- 基于SHT71温湿度传感器、STM32F103C8T6、LCD1602温湿度采集显示系统proteus仿真设计
- 基于TH02温湿度传感器、STM32F103C8T6、LCD1602、FREERTOS的温湿度采集系统proteus仿真设计
- 【TCP-IP协议详细解释及案例分析】TCP-IP协议详细解释及案例分析
- 一文搞懂 LSTM(长短期记忆网络).rar
- 【autosar简介及基本案例解析】autosar简介及基本案例解析
- java模拟斗地主洗牌发牌
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功