|
@@ -1,11 +1,20 @@
|
|
package com.sky.service.impl;
|
|
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.DishDTO;
|
|
|
|
+import com.sky.dto.DishPageQueryDTO;
|
|
import com.sky.entity.Dish;
|
|
import com.sky.entity.Dish;
|
|
import com.sky.entity.DishFlavor;
|
|
import com.sky.entity.DishFlavor;
|
|
|
|
+import com.sky.exception.DeletionNotAllowedException;
|
|
import com.sky.mapper.DishFlavorsMapper;
|
|
import com.sky.mapper.DishFlavorsMapper;
|
|
import com.sky.mapper.DishMapper;
|
|
import com.sky.mapper.DishMapper;
|
|
|
|
+import com.sky.mapper.SetmealDishMapper;
|
|
|
|
+import com.sky.result.PageResult;
|
|
import com.sky.service.DishService;
|
|
import com.sky.service.DishService;
|
|
|
|
+import com.sky.vo.DishVO;
|
|
import lombok.extern.slf4j.Slf4j;
|
|
import lombok.extern.slf4j.Slf4j;
|
|
import org.springframework.beans.BeanUtils;
|
|
import org.springframework.beans.BeanUtils;
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
@@ -21,6 +30,8 @@ public class DishServiceImpl implements DishService {
|
|
private DishMapper dishMapper;
|
|
private DishMapper dishMapper;
|
|
@Autowired
|
|
@Autowired
|
|
private DishFlavorsMapper dishFlavorsMapper;
|
|
private DishFlavorsMapper dishFlavorsMapper;
|
|
|
|
+ @Autowired
|
|
|
|
+ private SetmealDishMapper setmealDishMapper;
|
|
|
|
|
|
/**
|
|
/**
|
|
* 新增菜品
|
|
* 新增菜品
|
|
@@ -48,4 +59,101 @@ public class DishServiceImpl implements DishService {
|
|
}
|
|
}
|
|
|
|
|
|
}
|
|
}
|
|
|
|
+
|
|
|
|
+ @Override
|
|
|
|
+ public PageResult pageQuery(DishPageQueryDTO dishPageQueryDTO) {
|
|
|
|
+ PageHelper.startPage(dishPageQueryDTO.getPage(), dishPageQueryDTO.getPageSize());
|
|
|
|
+ Page<DishVO> page = dishMapper.pageQuery(dishPageQueryDTO);
|
|
|
|
+ return new PageResult(page.getTotal(), page.getResult());
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ /**
|
|
|
|
+ * 批量删除菜品
|
|
|
|
+ * @param ids
|
|
|
|
+ */
|
|
|
|
+ @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.deleteById(id);
|
|
|
|
+ //删除菜品关联的口味数据
|
|
|
|
+ dishFlavorsMapper.deleteByDishId(id);
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ /**
|
|
|
|
+ * 根据id查询菜品
|
|
|
|
+ * @param id
|
|
|
|
+ * @return
|
|
|
|
+ */
|
|
|
|
+ @Override
|
|
|
|
+ public DishVO getByIdWithFlavor(Long id) {
|
|
|
|
+ //根据id查询菜品数据
|
|
|
|
+ Dish dish = dishMapper.getById(id);
|
|
|
|
+ //根据菜品id查询口味数据
|
|
|
|
+ List<DishFlavor> dishFlavors = dishFlavorsMapper.getByDishId(id);
|
|
|
|
+ //将查询到的数据封装到VO
|
|
|
|
+ DishVO dishVO = new DishVO();
|
|
|
|
+ BeanUtils.copyProperties(dish, dishVO);
|
|
|
|
+ dishVO.setFlavors(dishFlavors);
|
|
|
|
+ return dishVO;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ /**
|
|
|
|
+ * 修改菜品信息
|
|
|
|
+ * @param dishDTO
|
|
|
|
+ */
|
|
|
|
+ @Override
|
|
|
|
+ public void updateWithFlavor(DishDTO dishDTO) {
|
|
|
|
+ Dish dish = new Dish();
|
|
|
|
+ BeanUtils.copyProperties(dishDTO, dish);
|
|
|
|
+
|
|
|
|
+ //修改菜品的基本信息
|
|
|
|
+ dishMapper.update(dish);
|
|
|
|
+
|
|
|
|
+ //删除原有的口味
|
|
|
|
+ dishFlavorsMapper.deleteByDishId(dishDTO.getId());
|
|
|
|
+
|
|
|
|
+ //重新插入口味数据
|
|
|
|
+ List<DishFlavor> flavors = dishDTO.getFlavors();
|
|
|
|
+ if(flavors != null && flavors.size() > 0){
|
|
|
|
+ flavors.forEach(dishFlavor -> {
|
|
|
|
+ dishFlavor.setDishId(dishDTO.getId());
|
|
|
|
+ });
|
|
|
|
+ //向口味表中插入n条数据
|
|
|
|
+ dishFlavorsMapper.insertBatch(flavors);
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ /**
|
|
|
|
+ * 菜品起售停售
|
|
|
|
+ * @param status
|
|
|
|
+ * @param id
|
|
|
|
+ */
|
|
|
|
+ @Override
|
|
|
|
+ public void isSole(Integer status, Long id) {
|
|
|
|
+ Dish dish = new Dish();
|
|
|
|
+ dish.setStatus(status);
|
|
|
|
+ dish.setId(id);
|
|
|
|
+
|
|
|
|
+ dishMapper.update(dish);
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+
|
|
}
|
|
}
|