套餐修改
(1)套餐信息回显,当点击修改按钮时,页面发送ajax请求,服务端响应后将该套餐的具体信息返回到前端回显。
(2)套餐分类和添加菜品的下拉列表都已经在新增套餐时完成
(3)点击保存按钮,页面发送ajax请求,服务端响应保存数据。
信息回显根据id查询setmeal表以及setmealDish表,将查询结果封装到SetmealDto
@Override public SetmealDto getByIdWithDish(Long id) { SetmealDto setmealDto = new SetmealDto(); //根据id查询套餐----setmeal表 Setmeal setmeal = this.getById(id); BeanUtils.copyProperties(setmeal, setmealDto); //根据id=setmeal_id查询具体菜品---setmealDish LambdaQueryWrapper<SetmealDish> queryWrapper = new LambdaQueryWrapper<>(); queryWrapper.eq(SetmealDish::getSetmealId, id); List<SetmealDish> setmealDishes = setmealDishService.list(queryWrapper); setmealDto.setSetmealDishes(setmealDishes); return setmealDto; }
/** * 根据id查询套餐信息和包含的菜品信息 * 修改时回显数据 * @param id * @return */ @GetMapping("/{id}") public R<SetmealDto> get(@PathVariable Long id){ SetmealDto setmealDto = setmealService.getByIdWithDish(id); return R.success(setmealDto); }
/** * 更新setmeal套餐表和对应的关联菜品信息setmealDish表 * @param setmealDto */ @Override public void updateWithSetmealDish(SetmealDto setmealDto) { //更新setmeal表 this.updateById(setmealDto); //删除套餐包含的菜品信息---delete setmealDish LambdaQueryWrapper<SetmealDish> queryWrapper = new LambdaQueryWrapper<>(); queryWrapper.eq(SetmealDish::getSetmealId, setmealDto.getId()); setmealDishService.remove(queryWrapper); //将setmealDto中包含的setmealDishes重新添加到setmealDish表中 //由于setmealDishes中的菜品不包含setmealId,要重新添加 List<SetmealDish> setmealDishes = setmealDto.getSetmealDishes(); setmealDishes = setmealDishes.stream().map((item) -> { item.setSetmealId(setmealDto.getId()); return item; }).collect(Collectors.toList()); setmealDishService.saveBatch(setmealDishes); }
/** * 更新套餐表setmeal和对应的关联菜品信息setmeal_dish * @param setmealDto * @return */ @PutMapping public R<String> update(@RequestBody SetmealDto setmealDto){ setmealService.updateWithSetmealDish(setmealDto); return R.success("套餐更新成功"); }

浙公网安备 33010602011771号