套餐相关接口
This commit is contained in:
@@ -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);
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user