Files
sky-take-out1103/sky-server/src/main/java/com/sky/controller/admin/DishController.java

118 lines
4.1 KiB
Java
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

package com.sky.controller.admin;
import com.sky.dto.DishDTO;
import com.sky.dto.DishPageQueryDTO;
import com.sky.entity.Dish;
import com.sky.result.PageResult;
import com.sky.result.Result;
import com.sky.service.DishService;
import com.sky.vo.DishVO;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.web.bind.annotation.*;
import java.util.List;
import java.util.Set;
@RestController("adminDishController")
@Slf4j
@Api(tags = "菜品相关接口")
@RequestMapping("/admin/dish")
public class DishController {
@Autowired
private DishService dishService;
@Autowired
private RedisTemplate redisTemplate;
@PostMapping
@ApiOperation("新增菜品")
public Result add(@RequestBody DishDTO dto){
log.info("新增菜品:{}",dto);
dishService.saveDishWitchFlavor(dto);
//清理新增菜品所绑定的分类的缓存数据
/*String key = "dish_"+dto.getCategoryId();
redisTemplate.delete(key);*/
String pattern = "dish_"+dto.getCategoryId();
cleanDishCache(pattern);
return Result.success();
}
@GetMapping("/page")
@ApiOperation("菜品分页查询")
public Result<PageResult> page(DishPageQueryDTO dishPageQueryDTO){
log.info("菜品分页查询:{}",dishPageQueryDTO);
//调用业务层的分页查询功能
PageResult pageResult = dishService.pageQuery(dishPageQueryDTO);
return Result.success(pageResult);
}
@DeleteMapping
@ApiOperation("菜品批量删除")
public Result delete(@RequestParam List<Long> ids){ //@RequestParam能够使用springmvc框架对1,2,3 参数进行切割
log.info("菜品批量删除:{}",ids);
//调用业务层的菜品批量删除功能
dishService.deleteBath(ids);
//当前批量删除菜品时,我们需要通过更多的查询操作,才能知道删除了哪些分类的菜品,(为了效率)那么我们直接将所有的菜品缓存直接清楚即可
cleanDishCache("dish_*");
return Result.success();
}
@GetMapping("/{id}")
@ApiOperation("根据id查询菜品")
public Result<DishVO> getById(@PathVariable Long id){ //@RequestParam能够使用springmvc框架对1,2,3 参数进行切割
log.info("根据id查询菜品{}",id);
DishVO dishVO = dishService.getByIdWithFlavor(id);
return Result.success(dishVO);
}
@PutMapping
@ApiOperation("修改菜品")
public Result getById(@RequestBody DishDTO dishDTO){ //@RequestParam能够使用springmvc框架对1,2,3 参数进行切割
log.info("修改菜品:{}",dishDTO);
dishService.updateWithFlavor(dishDTO);
//当前修改菜品时,可能修改价格,也可能修改分类,那么我们直接将所有的菜品缓存直接清楚即可
cleanDishCache("dish_*");
return Result.success();
}
@PostMapping("/status/{status}")
@ApiOperation("菜品起售停售")
public Result startOrStop(@PathVariable Integer status,Long id){ //@RequestParam能够使用springmvc框架对1,2,3 参数进行切割
log.info("菜品起售停售:{},{}",status,id);
dishService.startOrStop(status,id);
//当前起售停售菜品只传递了菜品ID那么我们要知道对应的分类还要做一次select那么我们直接将所有的菜品缓存直接清楚即可
cleanDishCache("dish_*");
return Result.success();
}
//抽取清理菜品缓存
private void cleanDishCache(String pattern) {
Set keys = redisTemplate.keys(pattern);
redisTemplate.delete(keys);
}
/**
* 根据分类id查询菜品
* @param categoryId
* @return
*/
@GetMapping("/list")
@ApiOperation("根据分类id查询菜品")
public Result<List<Dish>> list(Long categoryId){
List<Dish> list = dishService.list(categoryId);
return Result.success(list);
}
}