1.注意一些删除规则
2.Controller:
注意这里前端传进来的是好几个id,那么我们这里直接用集合来接收前端传进来的数据,注意这里要用RequestParam注解
3.Service:
这里业务比较复杂
@Transactional//涉及到多张表的操作
@Override
public void deleteBatch(List<Long> ids) {
//判断当前菜品是否能够删除--是否存在起售中的菜品??
for(Long id:ids){
Dish dish = dishMapper.getById(id);
if(dish.getStatus() == StatusConstant.ENABLE){
//当前菜品处于起售中,不能删除
throw new DeletionNotAllowedException(MessageConstant.DISH_ON_SALE);
}
}
//判断当前菜品是否能够删除--是否被套餐关联??
List<Long> setmealIds = setmealDishMapper.getSetmealIdsByDishIds(ids);
if(setmealIds != null && setmealIds.size()>0){
//当前这个菜品被套餐关联了,也不能删除
throw new DeletionNotAllowedException(MessageConstant.DISH_BE_RELATED_BY_SETMEAL);
}
//删除菜品表中的菜品数据
for(Long id : ids){
dishMapper.deletById(id);
//删除菜品关联的口味数据
dishFlavorMapper.deleteByDishId(id);
}
}
}
4.Mapper:
涉及到四个mapper,逐个分析