套餐修改
(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("套餐更新成功"); }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构