目录
一、DishController部分
1.分析接口
请求路径和请求参数:
返回给页面的数据(用资料给的Result<T>封装):
2.具体代码
/**
* 菜品的起售停售
* @param status
* @param id
* @return
*/
@PostMapping("/status/{status}")
@ApiOperation("菜品的起售停售")
public Result startOrStop(@PathVariable Integer status,Long id){
log.info("菜品的起售停售:{},{}",status == 1 ? "起售" : "停售" ,id);
dishService.startOrStop(status,id);
return Result.success();
}
二、DishService部分
/**
* 菜品的起售停售
* @param status
* @param id
*/
void startOrStop(Integer status, Long id);
三、DishServiceImpl部分
/**
* 菜品的起售停售
* @param status
* @param id
*/
@Override
public void startOrStop(Integer status, Long id) {
//被套餐关联的菜品不能被停售---通过菜品id查setmeal_dish表
SetmealDish setmealDish = setmealDishMapper.getSetmealDishByDishId(id);
if(setmealDish != null){
//菜品被套餐关联,不能被停售
throw new DishStopFailedException(MessageConstant.DISH_BE_STOPED_BY_SETMEAL);
}
Dish dish = Dish.builder()
.id(id)
.status(status)
.build();
dishMapper.update(dish);
}
四、SetmealDishMapper接口
/**
* 根据菜品id查询菜品对应套餐关系
* @param id
* @return
*/
@Select("select * from setmeal_dish where dish_id = #{id}")
SetmealDish getSetmealDishByDishId(Long id);
五、新增自定义异常类和返回详细常量
package com.sky.exception;
/**
* 菜品停售失败异常
*/
public class DishStopFailedException extends BaseException {
public DishStopFailedException(){}
public DishStopFailedException(String msg){
super(msg);
}
}
在MessageConstant以下常量: public static final String DISH_BE_STOPED_BY_SETMEAL = "当前菜品关联了套餐,不能停售";
有错误还请指正