套餐相关接口

This commit is contained in:
slhaf
2024-09-13 13:18:22 +08:00
parent 1e2aec636a
commit add28bfa5d
10 changed files with 161 additions and 7 deletions

View File

@@ -10,6 +10,7 @@ import com.sky.entity.Dish;
import com.sky.entity.Setmeal;
import com.sky.entity.SetmealDish;
import com.sky.exception.DeletionNotAllowedException;
import com.sky.mapper.DishMapper;
import com.sky.mapper.SetmealDishMapper;
import com.sky.mapper.SetmealMapper;
import com.sky.result.PageResult;
@@ -20,6 +21,7 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.ArrayList;
import java.util.List;
@Service
@@ -29,9 +31,12 @@ public class SetmealServiceImpl implements SetmealService {
private SetmealMapper setmealMapper;
@Autowired
private SetmealDishMapper setmealDishMapper;
@Autowired
private DishMapper dishMapper;
/**
* 套餐分页查询
*
* @param setmealPageQueryDTO
* @return
*/
@@ -40,11 +45,12 @@ public class SetmealServiceImpl implements SetmealService {
//设置分页
PageHelper.startPage(setmealPageQueryDTO.getPage(), setmealPageQueryDTO.getPageSize());
Page<Setmeal> page = setmealMapper.pageQuery(setmealPageQueryDTO);
return new PageResult(page.getTotal(),page.getResult());
return new PageResult(page.getTotal(), page.getResult());
}
/**
* 新增套餐
*
* @param setmealDTO
*/
@Override
@@ -52,7 +58,7 @@ public class SetmealServiceImpl implements SetmealService {
public void insert(SetmealDTO setmealDTO) {
//插入套餐信息
Setmeal setmeal = new Setmeal();
BeanUtils.copyProperties(setmealDTO,setmeal);
BeanUtils.copyProperties(setmealDTO, setmeal);
setmealMapper.insert(setmeal);
//插入套餐包含菜品的信息
@@ -64,6 +70,7 @@ public class SetmealServiceImpl implements SetmealService {
/**
* 批量删除套餐
*
* @param ids
*/
@Override
@@ -86,6 +93,7 @@ public class SetmealServiceImpl implements SetmealService {
/**
* 根据id查询套餐及关联菜品
*
* @param id
* @return
*/
@@ -94,10 +102,66 @@ public class SetmealServiceImpl implements SetmealService {
SetmealVO setmealVO = new SetmealVO();
//查询基本套餐信息
Setmeal setmeal = setmealMapper.selectById(id);
BeanUtils.copyProperties(setmeal,setmealVO);
BeanUtils.copyProperties(setmeal, setmealVO);
//查询对应菜品信息
List<SetmealDish> setmealDishes = setmealDishMapper.selectBySetmealId(id);
setmealVO.setSetmealDishes(setmealDishes);
return setmealVO;
}
/**
* 修改套餐
*
* @param setmealDTO
*/
@Override
@Transactional
public void updateWithSetmealDishes(SetmealDTO setmealDTO) {
//更新setmeal基本数据
Setmeal setmeal = new Setmeal();
BeanUtils.copyProperties(setmealDTO, setmeal);
setmealMapper.update(setmeal);
//更新setmeal_dish数据
//删除原setmeal_dish相关数据
setmealDishMapper.deleteBySetmealId(setmealDTO.getId());
//添加setmeal_id
List<SetmealDish> setmealDishes = setmealDTO.getSetmealDishes();
setmealDishes.forEach(setmealDish -> setmealDish.setSetmealId(setmealDTO.getId()));
//插入新的数据
setmealDishMapper.insertBatch(setmealDTO.getSetmealDishes());
}
/**
* 套餐起售停售
*
* @param status
* @param id
*/
@Override
public void startOrStop(Integer status, Long id) {
//看是否为起售,如果为起售,需要判断其关联的菜品有停售状态
if (status.equals(StatusConstant.ENABLE)) {
/*
获取其关联的菜品信息--setmeal_dish--setmealDishes--遍历->getDishId
先把dishId放到一个集合中批量查询该dish_id对应且status为0的菜品信息
如果查询到,则抛出删除失败异常
如果没有,则进行下一步,改变状态
*/
List<SetmealDish> setmealDishes = setmealDishMapper.selectBySetmealId(id);
List<Long> dishIds = new ArrayList<>();
setmealDishes.forEach(setmealDish -> dishIds.add(setmealDish.getDishId()));
List<Dish> dishes = dishMapper.selectByDishIdsAndStatusDisable(dishIds);
if (dishes != null && !dishes.isEmpty()){
throw new DeletionNotAllowedException(MessageConstant.SETMEAL_ENABLE_FAILED);
}
}
//不为起售则直接更改状态
Setmeal setmeal = Setmeal.builder()
.status(status)
.id(id)
.build();
setmealMapper.update(setmeal);
}
}