基于SSM的订餐系统---修改菜品模块(多表数据回显及多表保存)

功能需求

对菜品属性进行修改

梳理交互过程

1.页面发送ajax请求,请求服务端获取分类数据,用于菜品分类下拉框中数据展示(前文已做过)
2.页面发生ajax请求,请求服务端,根据id查询当前菜品信息,用于菜品回显
3.页面发生请求,请求服务端进行图片下载,用于页图片回显(前文已做过)
4.点击保存按钮,页面发生ajax请求,将修改后的菜品相关数据以json形式提交到服务端

2.页面发生ajax请求,请求服务端,根据id查询当前菜品信息,用于菜品回显 :

DishController:

    @GetMapping("/{id}")
    public R<DishDto> update(@PathVariable Long id){
        DishDto dishDto = dishService.getByIdWithFlavor(id);
        return R.success(dishDto);
    }

DishService:

  //根据id查询菜品信息和对应口味信息
    public DishDto getByIdWithFlavor(Long id);

DishServiceImpl:

 /**
     * 根据id查询菜品信息和对应口味信息
     * @param id
     * @return
     */
    @Override
    public DishDto getByIdWithFlavor(Long id) {
        //查询菜品基本信息
        Dish dish = this.getById(id);

        //将菜品信息拷贝至DishDto
        DishDto dishDto = new DishDto();
        BeanUtils.copyProperties(dish,dishDto);

        //查询菜品对应的口味信息,dish_flavor
        LambdaQueryWrapper<DishFlavor> queryWrapper = new LambdaQueryWrapper<>();
        queryWrapper.eq(id!=null,DishFlavor::getDishId,id);
        List<DishFlavor> flavors = dishFlavorService.list(queryWrapper);

        dishDto.setFlavors(flavors);

        return dishDto;
    }

4.点击保存按钮,页面发生ajax请求,将修改后的菜品相关数据以json形式提交到服务端

DishController:

 /**
     * 保存数据
     * @param dishDto
     * @return
     */
    @PutMapping()
    public R<String> update(@RequestBody DishDto dishDto ){
        dishService.updateWithFlavors(dishDto);
        return R.success("更新成功");
    }

DishService:

    public void updateWithFlavors(DishDto dishDto);

DishServiceImpl:

  @Override
    public void updateWithFlavors(DishDto dishDto) {
        //更新基本菜品信息
        this.updateById(dishDto);

        //更新口味表,清理当前菜品的口味数据,再添加
        LambdaQueryWrapper<DishFlavor> queryWrapper = new LambdaQueryWrapper<>();
        queryWrapper.eq(dishDto!=null,DishFlavor::getDishId,dishDto.getId());
        dishFlavorService.remove(queryWrapper);

        List<DishFlavor> flavors = dishDto.getFlavors();

        flavors = flavors.stream().map((item)->{
            item.setDishId(dishDto.getId());
            return item;
        }).collect(Collectors.toList());
        dishFlavorService.saveBatch(flavors);
    }
  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值