

setmeal 表:

setmeal_dish 表:



1、获取套餐分类的请求:之前已经实现

2、获取菜品分类的请求:之前已经实现

3、根据菜品分类查询的请求:

6、保存套餐信息

在 DishController 中添加方法
- /**
- * 根据条件查询菜品数据
- * @param dish
- * @return
- */
- @GetMapping("/list")
- public R
> list(Dish dish){
- LambdaQueryWrapper
queryWrapper = new LambdaQueryWrapper<>(); - queryWrapper.eq(dish.getCategoryId() != null, Dish::getCategoryId, dish.getCategoryId());
- queryWrapper.eq(Dish::getStatus, 1);
- queryWrapper.orderByAsc(Dish::getSort).orderByDesc(Dish::getUpdateTime);
- List
list = dishSerivce.list(queryWrapper); - return R.success(list);
- }
① 在 SetmealService 添加方法
- public interface SetmealService extends IService
{ -
- /**
- * 新增套餐,同时保存套餐和菜品的关联关系
- * @param setmealDto
- */
- public void saveWithDish(SetmealDto setmealDto);
-
- }
② 在 SetmealServiceImpl 实现方法
- @Service
- public class SetmealServiceImpl extends ServiceImpl
implements SetmealService { -
- @Autowired
- private SetmealDishService setmealDishService;
-
- /**
- * 新增套餐,同时保存套餐和菜品的关联关系
- * @param setmealDto
- */
- @Transactional
- @Override
- public void saveWithDish(SetmealDto setmealDto) {
- // 保存套餐基本信息
- this.save(setmealDto);
-
- // 保存套餐和菜品的关联信息
- List
setmealDishes = setmealDto.getSetmealDishes(); - setmealDishes.stream().map((item) -> {
- item.setSetmealId(setmealDto.getId());
- return item;
- }).collect(Collectors.toList());
- setmealDishService.saveBatch(setmealDishes);
- }
-
- }
③ 在 SetmealController 使用方法
- @RestController
- @RequestMapping("/setmeal")
- @Slf4j
- public class SetmealController {
-
- @Autowired
- private SetmealService setmealService;
-
- @Autowired
- private SetmealDishService setmealDishService;
-
- /**
- * 新增套餐
- * @param setmealDto
- * @return
- */
- @PostMapping
- public R
save(@RequestBody SetmealDto setmealDto){ - setmealService.saveWithDish(setmealDto);
- return R.success("新增套餐成功");
- }
-
- }


获取分页信息的请求:

单个改变:

批量改变:

- /**
- * 批量修改套餐停售和启售
- * @param status
- * @param ids
- * @return
- */
- @PostMapping("/status/{status}")
- public R
updateStatus( - @PathVariable("status") int status,
- @RequestParam List
ids - ){
- List
setmeals = new ArrayList<>(); - for (Long id : ids) {
- Setmeal setmeal = new Setmeal();
- setmeal.setStatus(status);
- setmeal.setId(id);
- setmeals.add(setmeal);
- }
- setmealService.updateBatchById(setmeals);
- return R.success("套餐状态修改成功");
- }


单个删除:

批量删除:

① 在 SetmealService 中添加方法
- /**
- * 删除套餐,同时删除套餐和菜品的关联数据
- * @param ids
- */
- public void removeWithDish(List
ids) ;
② 在 SetmealServiceImpl 中实现方法
- /**
- * 删除套餐,同时删除套餐和菜品的关联数据
- * @param ids
- */
- @Override
- @Transactional
- public void removeWithDish(List
ids) { - // 查询套餐状态,确定是否可以删除
- LambdaQueryWrapper
queryWrapper = new LambdaQueryWrapper<>(); - queryWrapper.in(Setmeal::getId, ids);
- queryWrapper.eq(Setmeal::getStatus, 1);
- int count = this.count(queryWrapper);
- if(count > 0){
- throw new CustomException("套餐正在售卖中,无法删除");
- }
-
- // 可以删除,先删除套餐表中的数据
- this.removeByIds(ids);
-
- // 删除关系表中的数据
- LambdaQueryWrapper
wrapper = new LambdaQueryWrapper(); - wrapper.in(SetmealDish::getSetmealId, ids);
- setmealDishService.remove(wrapper);
- }
③ 在 SetmealController 中使用方法
- /**
- * 批量删除套餐
- * @param ids
- * @return
- */
- @DeleteMapping
- public R
delete(@RequestParam List ids) { - setmealService.removeWithDish(ids);
- return R.success("套餐数据删除成功");
- }