套餐相关接口
This commit is contained in:
@@ -113,6 +113,7 @@ public class DishController {
|
||||
@PostMapping("/status/{status}")
|
||||
@ApiOperation("菜品起售停售")
|
||||
public Result startOrStop(@PathVariable Integer status,Long id){
|
||||
log.info("菜品起售停售: 状态:{},ID:{}",status,id);
|
||||
dishService.startOrStop(status,id);
|
||||
return Result.success();
|
||||
}
|
||||
|
||||
@@ -70,8 +70,35 @@ public class SetmealController {
|
||||
@GetMapping("/{id}")
|
||||
@ApiOperation("根据id查询套餐")
|
||||
public Result<SetmealVO> getById(@PathVariable Long id){
|
||||
log.info("根据id查询套餐");
|
||||
log.info("根据id查询套餐: {}",id);
|
||||
SetmealVO setmealVO = setmealService.getByIdWithSetmealDishes(id);
|
||||
return Result.success(setmealVO);
|
||||
}
|
||||
|
||||
/**
|
||||
* 修改套餐
|
||||
* @param setmealDTO
|
||||
* @return
|
||||
*/
|
||||
@PutMapping
|
||||
@ApiOperation("修改套餐")
|
||||
public Result update(@RequestBody SetmealDTO setmealDTO){
|
||||
log.info("修改套餐: {}",setmealDTO);
|
||||
setmealService.updateWithSetmealDishes(setmealDTO);
|
||||
return Result.success();
|
||||
}
|
||||
|
||||
/**
|
||||
* 套餐起售停售
|
||||
* @param status
|
||||
* @param id
|
||||
* @return
|
||||
*/
|
||||
@PostMapping("/status/{status}")
|
||||
@ApiOperation("套餐起售停售")
|
||||
public Result startOrStop(@PathVariable Integer status,Long id){
|
||||
log.info("套餐起售停售: 状态:{},ID:{}",status,id);
|
||||
setmealService.startOrStop(status,id);
|
||||
return Result.success();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -68,4 +68,6 @@ public interface DishMapper {
|
||||
*/
|
||||
@Select("select * from dish where category_id = #{categoryId}")
|
||||
List<Dish> selectByCategoryId(Long categoryId);
|
||||
|
||||
List<Dish> selectByDishIdsAndStatusDisable(List<Long> dishIds);
|
||||
}
|
||||
|
||||
@@ -2,6 +2,7 @@ package com.sky.mapper;
|
||||
|
||||
import com.sky.entity.Dish;
|
||||
import com.sky.entity.SetmealDish;
|
||||
import org.apache.ibatis.annotations.Delete;
|
||||
import org.apache.ibatis.annotations.Mapper;
|
||||
import org.apache.ibatis.annotations.Select;
|
||||
|
||||
@@ -22,4 +23,10 @@ public interface SetmealDishMapper {
|
||||
|
||||
@Select("select * from setmeal_dish where setmeal_id = #{setmealId}")
|
||||
List<SetmealDish> selectBySetmealId(Long setmealId);
|
||||
|
||||
@Delete("delete from setmeal_dish where setmeal_id = #{setmealId}")
|
||||
void deleteBySetmealId(Long setmealId);
|
||||
|
||||
@Select("select * from setmeal_dish where dish_id = #{dishId}")
|
||||
List<SetmealDish> selectByDishId(Long dishId);
|
||||
}
|
||||
|
||||
@@ -30,4 +30,7 @@ public interface SetmealMapper {
|
||||
Setmeal selectById(Long id);
|
||||
|
||||
void deleteBatch(List<Long> ids);
|
||||
|
||||
@AutoFill(OperationType.UPDATE)
|
||||
void update(Setmeal setmeal);
|
||||
}
|
||||
|
||||
@@ -35,4 +35,17 @@ public interface SetmealService {
|
||||
* @return
|
||||
*/
|
||||
SetmealVO getByIdWithSetmealDishes(Long id);
|
||||
|
||||
/**
|
||||
* 修改套餐
|
||||
* @param setmealDTO
|
||||
*/
|
||||
void updateWithSetmealDishes(SetmealDTO setmealDTO);
|
||||
|
||||
/**
|
||||
* 套餐起售停售
|
||||
* @param status
|
||||
* @param id
|
||||
*/
|
||||
void startOrStop(Integer status, Long id);
|
||||
}
|
||||
|
||||
@@ -8,10 +8,13 @@ import com.sky.dto.DishDTO;
|
||||
import com.sky.dto.DishPageQueryDTO;
|
||||
import com.sky.entity.Dish;
|
||||
import com.sky.entity.DishFlavor;
|
||||
import com.sky.entity.Setmeal;
|
||||
import com.sky.entity.SetmealDish;
|
||||
import com.sky.exception.DeletionNotAllowedException;
|
||||
import com.sky.mapper.DishFlavorMapper;
|
||||
import com.sky.mapper.DishMapper;
|
||||
import com.sky.mapper.SetmealDishMapper;
|
||||
import com.sky.mapper.SetmealMapper;
|
||||
import com.sky.result.PageResult;
|
||||
import com.sky.service.DishService;
|
||||
import com.sky.vo.DishVO;
|
||||
@@ -33,6 +36,8 @@ public class DishServiceImpl implements DishService {
|
||||
private DishFlavorMapper dishFlavorMapper;
|
||||
@Autowired
|
||||
private SetmealDishMapper setmealDishMapper;
|
||||
@Autowired
|
||||
private SetmealMapper setmealMapper;
|
||||
|
||||
/**
|
||||
* 新增菜品
|
||||
@@ -178,7 +183,18 @@ public class DishServiceImpl implements DishService {
|
||||
.status(status)
|
||||
.build();
|
||||
dishMapper.update(dish);
|
||||
//更新菜品所关联套餐的状态
|
||||
|
||||
//如果是改为停售,需要同时停售关联套餐
|
||||
if(status.equals(StatusConstant.DISABLE)) {
|
||||
//检查是否有关联的套餐
|
||||
List<SetmealDish> setmealDishes = setmealDishMapper.selectByDishId(id);
|
||||
if (setmealDishes != null && !setmealDishes.isEmpty()) {
|
||||
Setmeal setmeal = new Setmeal();
|
||||
for (SetmealDish setmealDish : setmealDishes) {
|
||||
setmeal.setId(setmealDish.getSetmealId());
|
||||
setmeal.setStatus(status);
|
||||
setmealMapper.update(setmeal);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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