|
@@ -2,14 +2,28 @@ 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.SetmealDTO;
|
|
|
import com.sky.dto.SetmealPageQueryDTO;
|
|
|
+import com.sky.entity.Dish;
|
|
|
+import com.sky.entity.Setmeal;
|
|
|
+import com.sky.entity.SetmealDish;
|
|
|
+import com.sky.exception.DeletionNotAllowedException;
|
|
|
+import com.sky.exception.SetmealEnableFailedException;
|
|
|
+import com.sky.mapper.DishMapper;
|
|
|
+import com.sky.mapper.SetmealDishMapper;
|
|
|
import com.sky.mapper.SetmealMapper;
|
|
|
import com.sky.result.PageResult;
|
|
|
import com.sky.service.SetmealService;
|
|
|
import com.sky.vo.SetmealVO;
|
|
|
import lombok.extern.slf4j.Slf4j;
|
|
|
+import org.springframework.beans.BeanUtils;
|
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
|
import org.springframework.stereotype.Service;
|
|
|
+import org.springframework.transaction.annotation.Transactional;
|
|
|
+
|
|
|
+import java.util.List;
|
|
|
|
|
|
@Service
|
|
|
@Slf4j
|
|
@@ -17,6 +31,12 @@ public class SetmealServiceImpl implements SetmealService {
|
|
|
@Autowired
|
|
|
private SetmealMapper setmealMapper;
|
|
|
|
|
|
+ @Autowired
|
|
|
+ private SetmealDishMapper setmealDishMapper;
|
|
|
+
|
|
|
+ @Autowired
|
|
|
+ private DishMapper dishMapper;
|
|
|
+
|
|
|
/**
|
|
|
* 分页查询
|
|
|
* @param setmealPageQueryDTO
|
|
@@ -25,8 +45,131 @@ public class SetmealServiceImpl implements SetmealService {
|
|
|
public PageResult pageQuery(SetmealPageQueryDTO setmealPageQueryDTO) {
|
|
|
PageHelper.startPage(setmealPageQueryDTO.getPage(), setmealPageQueryDTO.getPageSize());
|
|
|
|
|
|
- Page<SetmealVO> page = setmealMapper.pagequery(setmealPageQueryDTO);
|
|
|
+ Page<SetmealVO> page = setmealMapper.pageQuery(setmealPageQueryDTO);
|
|
|
|
|
|
return new PageResult(page.getTotal(), page.getResult());
|
|
|
}
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 新增套餐,同时需要保存套餐和菜品的关联关系
|
|
|
+ * @param setmealDTO
|
|
|
+ */
|
|
|
+ @Override
|
|
|
+ public void saveWithDish(SetmealDTO setmealDTO) {
|
|
|
+ Setmeal setmeal = new Setmeal();
|
|
|
+ BeanUtils.copyProperties(setmealDTO, setmeal);//将setmealDTO属性赋值给对应的setmeal
|
|
|
+ setmealMapper.insert(setmeal);//向套餐表插入数据
|
|
|
+ Long setmealId = setmeal.getId();
|
|
|
+
|
|
|
+ List<SetmealDish> setmealDishes = setmealDTO.getSetmealDishes();
|
|
|
+ for(SetmealDish setmealDish : setmealDishes ){
|
|
|
+ setmealDish.setSetmealId(setmealId);
|
|
|
+ System.out.println(setmealDish);
|
|
|
+ }
|
|
|
+// setmealDishes.forEach(setmealDish -> {
|
|
|
+// setmealDish.setSetmealId(setmealId);
|
|
|
+// });
|
|
|
+ setmealDishMapper.insertBatch(setmealDishes);//保存套餐和菜品的关联关系
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 批量删除套餐
|
|
|
+ * @param ids
|
|
|
+ */
|
|
|
+ @Override
|
|
|
+ @Transactional
|
|
|
+ public void deleteById(List<Long> ids) {
|
|
|
+ /*for(Long id : ids){
|
|
|
+ Setmeal setmeal = setmealMapper.getById(id);
|
|
|
+ }*/
|
|
|
+ ids.forEach(id -> {
|
|
|
+ Setmeal setmeal = setmealMapper.getById(id);
|
|
|
+ if(setmeal.getStatus() == StatusConstant.ENABLE){
|
|
|
+ // 起售中的套餐不能删除
|
|
|
+ throw new DeletionNotAllowedException(MessageConstant.SETMEAL_ON_SALE);
|
|
|
+ }
|
|
|
+ });
|
|
|
+
|
|
|
+ ids.forEach(setmealId -> {
|
|
|
+ //删除套餐表中的数据
|
|
|
+ setmealMapper.deleteById(setmealId);
|
|
|
+
|
|
|
+ //删除套餐菜品关系表中的数据
|
|
|
+ setmealDishMapper.deleteBySetmealId(setmealId);
|
|
|
+ });
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 根据id查询套餐
|
|
|
+ * @param id
|
|
|
+ * @return
|
|
|
+ */
|
|
|
+ @Override
|
|
|
+ public SetmealVO getById(Long id) {
|
|
|
+ Setmeal setmeal = setmealMapper.getById(id);
|
|
|
+ List<SetmealDish> setmealDishes = setmealDishMapper.getBySetmealId(id);
|
|
|
+
|
|
|
+
|
|
|
+ SetmealVO setmealVO = new SetmealVO();
|
|
|
+ BeanUtils.copyProperties(setmeal, setmealVO);
|
|
|
+ setmealVO.setSetmealDishes(setmealDishes);
|
|
|
+
|
|
|
+ return setmealVO;
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 修改套餐
|
|
|
+ * @param setmealDTO
|
|
|
+ */
|
|
|
+ @Override
|
|
|
+ @Transactional
|
|
|
+ public void update(SetmealDTO setmealDTO) {
|
|
|
+ Setmeal setmeal = new Setmeal();
|
|
|
+ BeanUtils.copyProperties(setmealDTO,setmeal);
|
|
|
+
|
|
|
+ //修改套餐表
|
|
|
+ setmealMapper.update(setmeal);
|
|
|
+
|
|
|
+ //套餐id
|
|
|
+ Long setmealId = setmealDTO.getId();
|
|
|
+
|
|
|
+ //删除套餐和菜品的关联关系,先删除添加
|
|
|
+ setmealDishMapper.deleteBySetmealId(setmealId);
|
|
|
+
|
|
|
+ List<SetmealDish> setmealDishes = setmealDTO.getSetmealDishes();
|
|
|
+ setmealDishes.forEach(setmealDish -> {
|
|
|
+ setmealDish.setSetmealId(setmealId);
|
|
|
+ });
|
|
|
+
|
|
|
+ //重新插入套餐和菜品的关系
|
|
|
+ setmealDishMapper.insertBatch(setmealDishes);
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 起售停售
|
|
|
+ * @param status
|
|
|
+ * @param id
|
|
|
+ */
|
|
|
+ @Override
|
|
|
+ public void startOrStop(Integer status, Long id) {
|
|
|
+ //起售套餐时,判断套餐内菜品是否在停售状态,有则提示
|
|
|
+ if(status == StatusConstant.ENABLE){
|
|
|
+ List<Dish> dishList = dishMapper.getBySetmealId(id);
|
|
|
+ if(dishList != null && dishList.size() > 0){
|
|
|
+ dishList.forEach(dish -> {
|
|
|
+ if(StatusConstant.DISABLE == dish.getStatus()){
|
|
|
+ throw new SetmealEnableFailedException(MessageConstant.SETMEAL_ENABLE_FAILED);
|
|
|
+ }
|
|
|
+ });
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
+ Setmeal setmeal = Setmeal.builder()
|
|
|
+ .id(id)
|
|
|
+ .status(status)
|
|
|
+ .build();
|
|
|
+ setmealMapper.update(setmeal);
|
|
|
+ }
|
|
|
}
|