起售停售套餐
思路:
1.SetmealServiceImpl
2.首先判读套餐内是否有起售产品
2.1活得对应id
2.2根据id查询是否为空且长度不为0
2.3判断完在判读是否为为0如果是0抛出异常
3.返回数据需要id 和status
SetmealController
@PostMapping("/status/{status}") @ApiOperation("启用禁用分类") public Result<String> startOrStop (@PathVariable Integer status, Long id){ setmealService.startOrStop(status,id); return Result.success(); }
SetmealServiceImpl
@Override public void startOrStop(Integer status, Long id) { //起售套餐时,判断套餐内是否有停售菜品,有停售菜品提示"套餐内包含未启售菜品,无法启售" if (status.equals(StatusConstant.ENABLE)) { List<Dish> dishList= dishMapper.getBySetmealId(id); if (dishList != null && dishList.size() > 0) { dishList.forEach(dish -> { if (dish.getStatus().equals(StatusConstant.DISABLE)) { throw new DeletionNotAllowedException(MessageConstant.DISH_ON_SALE); } }); } } Setmeal setmeal = Setmeal.builder() .id(id) .status(status) .build(); setmealMapper.update(setmeal); }
DishMapper
/** * 起售套餐时,判断套餐内是否有停售菜品,有停售菜品提示"套餐内包含未启售菜品,无法启售" * @param id * @return */ @Select("select *from sky_take_out.dish d left join sky_take_out.setmeal_dish s on d.id = s.dish_id where s.setmeal_id=#{setmealId}") List<Dish> getBySetmealId(Long id);