diff --git a/sky-server/src/main/java/com/sky/controller/admin/DishController.java b/sky-server/src/main/java/com/sky/controller/admin/DishController.java index e0968ca..1e89e81 100644 --- a/sky-server/src/main/java/com/sky/controller/admin/DishController.java +++ b/sky-server/src/main/java/com/sky/controller/admin/DishController.java @@ -11,6 +11,7 @@ import lombok.extern.slf4j.Slf4j; import org.springframework.web.bind.annotation.*; import javax.annotation.Resource; +import java.util.List; @RestController @RequestMapping("/admin/dish") @@ -36,6 +37,7 @@ public class DishController { /** * 菜品分页查询 + * * @param dishPageQueryDTO DishPageQueryDTO * @return Result */ @@ -46,4 +48,17 @@ public class DishController { PageResult pageResult = dishService.pageQuery(dishPageQueryDTO); return Result.success(pageResult); } + + /** + * 菜品批量删除 + * @param ids List + * @return Result + */ + @ApiOperation("菜品批量删除") + @DeleteMapping() + public Result delete(@RequestParam List ids) { + log.info("菜品批量删除:{}", ids); + dishService.deleteBatch(ids); + return Result.success(); + } } diff --git a/sky-server/src/main/java/com/sky/mapper/DishFlavorMapper.java b/sky-server/src/main/java/com/sky/mapper/DishFlavorMapper.java index a175f47..a827787 100644 --- a/sky-server/src/main/java/com/sky/mapper/DishFlavorMapper.java +++ b/sky-server/src/main/java/com/sky/mapper/DishFlavorMapper.java @@ -11,4 +11,16 @@ public interface DishFlavorMapper { * @param flavors List */ void insertBatch(List flavors); + + /** + * 删除菜品关联的口味数据 + * @param id Long + */ + void deleteByDishId(Long id); + + /** + * 删除菜品关联的口味数据 + * @param dishIds List + */ + void deleteByDishIds(List dishIds); } diff --git a/sky-server/src/main/java/com/sky/mapper/DishMapper.java b/sky-server/src/main/java/com/sky/mapper/DishMapper.java index 93c2152..eaf8216 100644 --- a/sky-server/src/main/java/com/sky/mapper/DishMapper.java +++ b/sky-server/src/main/java/com/sky/mapper/DishMapper.java @@ -9,6 +9,8 @@ import com.sky.vo.DishVO; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Select; +import java.util.List; + @Mapper public interface DishMapper { @@ -34,4 +36,23 @@ public interface DishMapper { * @return Page */ Page pageQuery(DishPageQueryDTO dishPageQueryDTO); + + /** + * 判断当前菜品是否能被删除---是否存在起售菜品 + * @param id Long + * @return Dish + */ + Dish getById(Long id); + + /** + * 删除菜品表中的菜品数据 + * @param id Long + */ + void deleteById(Long id); + + /** + * 删除菜品表中的菜品数据 + * @param ids List + */ + void deleteByIds(List ids); } diff --git a/sky-server/src/main/java/com/sky/mapper/SetMealDishMapper.java b/sky-server/src/main/java/com/sky/mapper/SetMealDishMapper.java new file mode 100644 index 0000000..866e108 --- /dev/null +++ b/sky-server/src/main/java/com/sky/mapper/SetMealDishMapper.java @@ -0,0 +1,15 @@ +package com.sky.mapper; + +import org.apache.ibatis.annotations.Mapper; + +import java.util.List; + +@Mapper +public interface SetMealDishMapper { + /** + * 查询对应套餐id + * @param dishIds List + * @return List + */ + List getSetMealDishIds(List dishIds); +} diff --git a/sky-server/src/main/java/com/sky/service/DishService.java b/sky-server/src/main/java/com/sky/service/DishService.java index 93cc6b8..a9ba81d 100644 --- a/sky-server/src/main/java/com/sky/service/DishService.java +++ b/sky-server/src/main/java/com/sky/service/DishService.java @@ -4,6 +4,8 @@ import com.sky.dto.DishDTO; import com.sky.dto.DishPageQueryDTO; import com.sky.result.PageResult; +import java.util.List; + public interface DishService { /** * 新增菜品和口味 @@ -18,4 +20,10 @@ public interface DishService { * @return PageResult */ PageResult pageQuery(DishPageQueryDTO dishPageQueryDTO); + + /** + * 菜品批量删除 + * @param ids List + */ + void deleteBatch(List ids); } diff --git a/sky-server/src/main/java/com/sky/service/impl/DishServiceImpl.java b/sky-server/src/main/java/com/sky/service/impl/DishServiceImpl.java index 90bd4b9..93656a1 100644 --- a/sky-server/src/main/java/com/sky/service/impl/DishServiceImpl.java +++ b/sky-server/src/main/java/com/sky/service/impl/DishServiceImpl.java @@ -2,12 +2,16 @@ package com.sky.service.impl; import com.github.pagehelper.Page; import com.github.pagehelper.PageHelper; +import com.sky.constant.MessageConstant; +import com.sky.constant.StatusConstant; import com.sky.dto.DishDTO; import com.sky.dto.DishPageQueryDTO; import com.sky.entity.Dish; import com.sky.entity.DishFlavor; +import com.sky.exception.DeletionNotAllowedException; import com.sky.mapper.DishFlavorMapper; import com.sky.mapper.DishMapper; +import com.sky.mapper.SetMealDishMapper; import com.sky.result.PageResult; import com.sky.service.DishService; import com.sky.vo.DishVO; @@ -26,6 +30,8 @@ public class DishServiceImpl implements DishService { private DishMapper dishMapper; @Resource private DishFlavorMapper dishFlavorMapper; + @Resource + private SetMealDishMapper setMealDishMapper; /** * 新增菜品和口味 @@ -54,6 +60,7 @@ public class DishServiceImpl implements DishService { /** * 菜品分页查询 + * * @param dishPageQueryDTO DishPageQueryDTO * @return PageResult */ @@ -61,6 +68,33 @@ public class DishServiceImpl implements DishService { public PageResult pageQuery(DishPageQueryDTO dishPageQueryDTO) { PageHelper.startPage(dishPageQueryDTO.getPage(), dishPageQueryDTO.getPageSize()); Page page = dishMapper.pageQuery(dishPageQueryDTO); - return new PageResult(page.getTotal(),page.getResult()); + return new PageResult(page.getTotal(), page.getResult()); + } + + /** + * 菜品批量删除 + * + * @param ids List + */ + @Override + public void deleteBatch(List ids) { + // 判断当前菜品是否能被删除---是否存在起售菜品 + for (Long id : ids) { + Dish dish = dishMapper.getById(id); + if (dish.getStatus().equals(StatusConstant.ENABLE)) { + throw new DeletionNotAllowedException(MessageConstant.DISH_ON_SALE); + } + } + // 判断当前菜品是否能够删除--是否被套餐关联 + List setMealDishIds = setMealDishMapper.getSetMealDishIds(ids); + if (setMealDishIds != null && !setMealDishIds.isEmpty()) { + // 当前菜品被关联了 + throw new DeletionNotAllowedException(MessageConstant.DISH_BE_RELATED_BY_SETMEAL); + } + + // 删除菜品表中的菜品数据 + dishMapper.deleteByIds(ids); + // 删除菜品关联的口味数据 + dishFlavorMapper.deleteByDishIds(ids); } } diff --git a/sky-server/src/main/resources/mapper/DishFlavorMapper.xml b/sky-server/src/main/resources/mapper/DishFlavorMapper.xml index 504cf0c..a64c457 100644 --- a/sky-server/src/main/resources/mapper/DishFlavorMapper.xml +++ b/sky-server/src/main/resources/mapper/DishFlavorMapper.xml @@ -10,4 +10,21 @@ ( #{df.dishId},#{df.name},#{df.value}) + + + + delete + from dish_flavor + where dish_id = #{dishId}; + + + + + delete + from dish_flavor + where dish_id in + + #{dishId} + + diff --git a/sky-server/src/main/resources/mapper/DishMapper.xml b/sky-server/src/main/resources/mapper/DishMapper.xml index 3856114..d4bf12a 100644 --- a/sky-server/src/main/resources/mapper/DishMapper.xml +++ b/sky-server/src/main/resources/mapper/DishMapper.xml @@ -10,6 +10,23 @@ #{updateTime}, #{createUser}, #{updateUser}); + + + delete + from dish + where id = #{id} + + + + + delete + from dish + where id in + + #{id} + + + + + + diff --git a/sky-server/src/main/resources/mapper/SetMealDishMapper.xml b/sky-server/src/main/resources/mapper/SetMealDishMapper.xml new file mode 100644 index 0000000..e83a51d --- /dev/null +++ b/sky-server/src/main/resources/mapper/SetMealDishMapper.xml @@ -0,0 +1,13 @@ + + + + + + +