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,逐个分析