package com.practice.reggie.controller;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.practice.reggie.common.CustomException;
import com.practice.reggie.common.R;
import com.practice.reggie.dto.DishDTO;
import com.practice.reggie.entity.Category;
import com.practice.reggie.entity.Dish;
import com.practice.reggie.entity.DishFlavor;
import com.practice.reggie.service.CategoryService;
import com.practice.reggie.service.DishFlavorService;
import com.practice.reggie.service.DishService;
import com.practice.reggie.service.impl.serviceImpl.CategoryServiceImpl;
import com.practice.reggie.service.impl.serviceImpl.DishServiceImpl;
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.data.redis.core.RedisTemplate;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.*;
import java.util.Arrays;
import java.util.List;
import java.util.concurrent.TimeUnit;
import java.util.stream.Collectors;
@RestController
@Slf4j
@RequestMapping("/dish")
public class DishController {
@Autowired
private DishService dishService;
@Autowired
private DishFlavorService dishFlavorService;
@Autowired
private CategoryService categoryService;
@Autowired
private RedisTemplate redisTemplate;
/**
* 新增菜品
*
* @param
*/
@PostMapping
public R<String> addDishAndFlavor(@RequestBody DishDTO dishDTO) {
dishFlavorService.addDishAndFlavor(dishDTO);
//清理某个分类下面的菜品缓存数据
String key = "dish_" + dishDTO.getCategoryId() + "_1";
redisTemplate.delete(key);
return R.success("新增菜品成功!");
}
/**
* 修改菜品
*
* @param dishDTO
* @return
*/
@PutMapping
public R<String> updateDishAndFlavor(@RequestBody DishDTO dishDTO) {
dishFlavorService.updateDishAndFlavor(dishDTO);
//清理某个分类下面的菜品缓存数据
String key = "dish_" + dishDTO.getCategoryId() + "_1";
redisTemplate.delete(key);
return R.success("修改菜品成功!");
}
@GetMapping("/page")
public R<Page> page(int page, int pageSize, String name) {
//构造分页构造器
Page<Dish> pageI = new Page<>();
Page<DishDTO> dishDtoPage = new Page<>();
//构造条件构造器
LambdaQueryWrapper<Dish> wrapper = new LambdaQueryWrapper<>();
//添加过滤条件
wrapper.like(StringUtils.isNotEmpty(name), Dish::getName, name);
//添加排序条件
wrapper.orderByDesc(Dish::getUpdateTime);
//执行查询
dishService.page(pageI, wrapper);
// 对象copy
BeanUtils.copyProperties(pageI, dishDtoPage, "records");
List<Dish> records = pageI.getRecords();
List<DishDTO> collect = records.stream().map((item) -> {
DishDTO dishDTO = new DishDTO();
BeanUtils.copyProperties(item, dishDTO);
Long categoryId = item.getCategoryId();//菜品套餐id
Category category = categoryService.getById(categoryId);
String categoryName = category.getName();
dishDTO.setCategoryName(categoryName);
return dishDTO;
}).collect(Collectors.toList());
Page<DishDTO> dishDTOPage = dishDtoPage.setRecords(collect);
return R.success(dishDTOPage);
}
/**
* 修改反显信息
*
* @param id
* @return
*/
@GetMapping("/{id}")
public R<DishDTO> delete(@PathVariable Long id) {
LambdaQueryWrapper<DishFlavor> queryWrapper = new LambdaQueryWrapper<>();
//执行查询
Dish dish = dishService.getById(id);
queryWrapper.eq(DishFlavor::getDishId, dish.getId());
List<DishFlavor> list = dishFlavorService.list(queryWrapper);
DishDTO dishDTO = new DishDTO();
BeanUtils.copyProperties(dish, dishDTO);
dishDTO.setFlavors(list);
return R.success(dishDTO);
}
/**
* 批量禁售起售
*
* @param type
* @param ids
* @return
*/
@PostMapping("/status/{type}")
public R<String> delete(@PathVariable int type, String[] ids) {
log.info("flag:" + type + " ids:" + ids);
if (ids == null || ids.length == 0) {
throw new CustomException("参数有误");
}
LambdaUpdateWrapper<Dish> wrapper = new LambdaUpdateWrapper<>();
wrapper.set(Dish::getStatus, type).in(Dish::getId, ids);
dishService.update(wrapper);
String flag = type == 0 ? "已禁售" : "已启售";
//执行查询
return R.success(flag);
}
/**
* 删除菜品(包括批量操作)------------------
*/
@DeleteMapping
public R<String> delete(String[] ids) {
log.info("ids:" + ids);
if (ids == null || ids.length == 0) {
throw new CustomException("参数有误");
}
List<Dish> dishes = dishService.listByIds(Arrays.asList(ids));
for (Dish dish : dishes) {
if (dish.getStatus() == 1) {
throw new CustomException("商品为起售状态无法删除!");
}
}
dishService.del(ids);
//执行查询
return R.success("删除成功!");
}
/**
* 套餐选择菜品
*
* @param dish
* @return
*/
@GetMapping("/list")
public R<List<DishDTO>> list(Dish dish) {
List<DishDTO> dishDTOS = null;
//动态构造key
String key = "dish_" + dish.getCategoryId() + "_" + dish.getStatus();
//先从redis获取数据
dishDTOS = (List<DishDTO>) redisTemplate.opsForValue().get(key);
if (dishDTOS != null) {
R.success(dishDTOS);
}
//构造查询条件
LambdaQueryWrapper<Dish> queryWrapper = new LambdaQueryWrapper<>();
LambdaQueryWrapper<Dish> eq = 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());
//放入redis缓存中
redisTemplate.opsForValue().set(key, dishDtoList, 60, TimeUnit.MINUTES);
return R.success(dishDtoList);
}
}
没有合适的资源?快使用搜索试试~ 我知道了~
温馨提示
基于springboot的点餐系统源码+数据库(高分毕业设计).zip 基于SpringBoot开发的,含有代码注释,新手也可看懂。毕业设计、期末大作业、课程设计、高分必看,下载下来,简单部署,就可以使用。 基于springboot的点餐系统源码+数据库(高分毕业设计).zip 基于SpringBoot开发的,含有代码注释,新手也可看懂。毕业设计、期末大作业、课程设计、高分必看,下载下来,简单部署,就可以使用。 基于springboot的点餐系统源码+数据库(高分毕业设计).zip 基于SpringBoot开发的,含有代码注释,新手也可看懂。毕业设计、期末大作业、课程设计、高分必看,下载下来,简单部署,就可以使用。 基于springboot的点餐系统源码+数据库(高分毕业设计).zip 基于SpringBoot开发的,含有代码注释,新手也可看懂。毕业设计、期末大作业、课程设计、高分必看,下载下来,简单部署,就可以使用。基于springboot的点餐系统源码+数据库(高分毕业设计).zip 基于SpringBoot开发的,含有代码注释,新手也可看懂。毕业设计、期末大作业、课程设计、高
资源推荐
资源详情
资源评论
收起资源包目录
基于springboot的点餐系统源码+数据库(高分毕业设计).zip (204个子文件)
common.css 275KB
index.css 227KB
vant.min.css 141KB
main.css 17KB
demo.css 8KB
index.css 6KB
add-order.css 6KB
user.css 4KB
page.css 4KB
address.css 3KB
address-edit.css 3KB
order.css 3KB
login.css 2KB
index.css 2KB
pay-success.css 2KB
login.css 2KB
no-wify.css 1KB
iconfont.css 733B
.gitignore 176B
.gitignore 125B
add.html 23KB
index.html 23KB
add.html 18KB
demo_index.html 12KB
list.html 10KB
list.html 9KB
add-order.html 9KB
list.html 9KB
list.html 9KB
user.html 8KB
address-edit.html 7KB
address.html 7KB
index.html 7KB
add.html 7KB
order.html 7KB
list.html 6KB
login.html 4KB
login.html 4KB
pay-success.html 3KB
no-wify.html 2KB
upload.html 2KB
favico.ico 5KB
favicon.ico 4KB
DishController.java 8KB
OrderServiceImpl.java 6KB
SetmealController.java 5KB
EmployeeController.java 5KB
ShoppingCartController.java 5KB
UserController.java 3KB
LoginCheckFilter.java 3KB
AddressBookController.java 3KB
SetmealServiceImpl.java 3KB
JacksonObjectMapper.java 3KB
CommonController.java 3KB
DishFlavorServiceImpl.java 3KB
CategoryController.java 3KB
CategoryServiceImpl.java 2KB
OrderController.java 2KB
WebMvcConfig.java 2KB
AddressBook.java 1KB
MyMetaObjecthandler.java 1KB
GlobalExceptionHandler.java 1KB
Employee.java 1KB
SMSUtils.java 1KB
ValidateCodeUtils.java 1KB
DishServiceImpl.java 1KB
Orders.java 1KB
SetmealDish.java 1KB
Setmeal.java 1KB
Dish.java 1KB
JedisTest.java 1KB
Category.java 926B
RedisConfig.java 926B
ReggieApplication.java 890B
R.java 871B
DishFlavor.java 834B
OrderDetail.java 689B
MybatisPlusConfig.java 681B
ShoppingCart.java 680B
OrderService.java 642B
SetmealService.java 607B
DishDTO.java 595B
CustomException.java 577B
User.java 520B
SetmealDishServiceImpl.java 497B
OrdersQueryDTO.java 492B
DishFlavorService.java 472B
BaseContext.java 467B
ShoppingCartServiceImpl.java 463B
AddressBookServiceImpl.java 457B
OrderDetailServiceImpl.java 456B
EmployeeServiceImpl.java 436B
OrderDetailController.java 428B
UserServiceImpl.java 408B
SetmealDto.java 341B
AddressBookMapper.java 332B
CategoryMapper.java 316B
DishService.java 277B
ShoppingCartMapper.java 267B
CategoryService.java 267B
共 204 条
- 1
- 2
- 3
猰貐的新时代
- 粉丝: 1w+
- 资源: 3016
下载权益
C知道特权
VIP文章
课程特权
开通VIP
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 35 财务汇报部门历年薪酬统计图表.xlsx
- 39 财务工资发放表.xlsx
- 37 财务工资支出上半年年中总结报告.xlsx
- 38 财务分析工资年度开支表.xlsx
- 41 财务公司部门工资开支分析表.xlsx
- 40 财务分析部门工资支出图表.xlsx
- 42 部门员工工资统计表.xlsx
- 45 年度薪酬费用统计表.xlsx
- 44 人事薪酬管理台账.xlsx
- 48 工资对比分析报表模板.xls
- 47 可视化工资表自动统计1.xlsx
- 46 企业员工工资支出预算表.xlsx
- 43 工资收入对比分析表.xlsx
- 50 薪资分析图表.xlsx
- 49 薪酬数据统计分析报表excel模板.xlsx
- 年度公司薪酬调查分析方案(完整版).docx
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
- 1
- 2
前往页