套餐修改

(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("套餐更新成功");
    }
复制代码

 

posted @   佛系粥米  阅读(110)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
点击右上角即可分享
微信分享提示