首页 > 其他分享 >修改菜品

修改菜品

时间:2023-03-11 22:48:42浏览次数:24  
标签:flavors return 修改 菜品 dish dishDto id

需求分析:

  在菜品管理列表页面点击修改按钮,跳转到修改菜品页面,在修改页面回显菜品相关信息并进行修改,最后点击确认按钮完成修改操作

梳理交互过程:

  1、页面发送ajax请求,请求服务器获取分类数据,用于菜品分类下拉框中数据展示(前面新增菜品时已经实现)

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

  3、页面发送请求,请求服务端进行图片下载,用于图片回显(已实现)

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

 

数据回显:在DishService中编写方法

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

        DishDto dishDto = new DishDto();
        BeanUtils.copyProperties(dish, dishDto);

        //查询当前菜品口味信息,从dish_flavor表中查询
        LambdaQueryWrapper<DishFlavor> queryWrapper = new LambdaQueryWrapper<>();
        queryWrapper.eq(DishFlavor::getDishId, id);
        List<DishFlavor> flavors = dishFlavorService.list(queryWrapper);
        dishDto.setFlavors(flavors);
        return dishDto;
    }
/**
     * 根据id查询菜品信息和对应口味信息
     * @param id
     * @return
     */
    @GetMapping("/{id}")
    public R<DishDto> get(@PathVariable Long id){
        DishDto dishDto = dishService.getByIdWithFlavor(id);
        return R.success(dishDto);
    }

更新菜品信息和口味信息

/**
     * //根据id更新菜品信息和对应的口味信息
     * @param dishDto
     */
    @Override
    public void updateWithFlavor(DishDto dishDto) {
        //更新dish表基本信息
        this.updateById(dishDto);

        //清理当前菜品对应的口味数据---dish_flavor表的delete操作
        LambdaQueryWrapper<DishFlavor> queryWrapper = new LambdaQueryWrapper<>();
        queryWrapper.eq(DishFlavor::getDishId, dishDto.getId());
        dishFlavorService.remove(queryWrapper);

        //添加当前提交过来的口味数据---dish_flavor表的insert操作
        List<DishFlavor> flavors = dishDto.getFlavors();
        //新添加的flavor中没有dishId
        flavors = flavors.stream().map((item) -> {
            item.setDishId(dishDto.getId());
            return item;
        }).collect(Collectors.toList());

        dishFlavorService.saveBatch(flavors);

    }
/**
     * 修改菜品
     * @param dishDto
     * @return
     */
    @PutMapping
    public R<String> update(@RequestBody DishDto dishDto){
        dishService.updateWithFlavor(dishDto);
        return R.success("修改成功");
    }
如果不删除直接保存,且在原有口味上加了新口味,则dish_flavor表中已经有的id会和前端传过来未经修改的flavors中的id相同,出现duplicate key异常

标签:flavors,return,修改,菜品,dish,dishDto,id
From: https://www.cnblogs.com/fxzm/p/17207239.html

相关文章

  • Zabbix监控Tomcat开启JMX时修改catalina.sh文件后tomcat服务起不来/配置catalian.sh不
    zabbix监控tomcat,开启JMX修改catalina.sh文件,tomcat服务起不来问题现象(配置Catalina.sh脚本,开启JMX不起效)问题一:配置完脚本,重启tomcattomcat服务启动失败查看tomcat的ca......
  • 菜品信息的分页查询
    需求分析:系统中的菜品数据很多时,如果在一个页面中全部展示出来会显得比较乱,不便于查看,所以一般的系统中都会以分页的方式来展示列表数据代码开发梳理:1、页面发......
  • 【ASP.NET Core】修改Blazor.Server的Hub地址后引发的问题
    BlazorServer,即运行在服务器上的Blazor应用程序,它的优点是应用程序在首次运行时,客户端不需要下载运行时。但它的代码是在服务器上执行的,然后通过SignalR通信来更新客......
  • 《渗透测试》HTTP数据包&Postman构造&请求方法&请求头修改&状态码判断 2023 Day10
    1    2请求头各参数及解释  3响应头参数及解释  4get请求  4post请求   -方法1、常规请求-Get2、用户登录-Post•get:向特定资......
  • gcc 10+ 编译 git第一个提交(本文会持续修改)
    安装gcc10+在编译的时候有时会出现multiple-definition的错误。(会从源码编译gcc的可以路过)。 实在想不出解决重定义的办法。但有一种凑活的办法:cache.h中添加#includ......
  • 修改docker的镜像地址
    Docker设置国内镜像地址-知乎(zhihu.com)C:\Users\clu\.docker\daemon.json Docker修改镜像源地址-星朝-博客园(cnblogs.com)从网上找了几个速度比较快的镜......
  • 修改node项目自动重启 | nodemon工具包
    1、为什么使用nodemon(1)在编写调试Node.js项目的时候,如果修改了项目的代码,则需要频繁的手动close掉,然后再重新启动,非常繁琐。现在,我们可以使用nodemon工具包这个工......
  • git修改分支名称
    假设分支名称为oldName,想要修改为newName。1.本地分支重命名(还没有推送到远程)gitbranch-moldNamenewName2.远程分支重命名(已经推送远程-假设本地分支和远程对应......
  • 可修改性战术
    4.可修改性战术软件怎样具有可修改性,这里将介绍两种战术。首先说明一下可修改性战术。可修改性战术的目标是控制实现、测试和部署变更的时间和成本。在具体的解释为根据......
  • XCode修改工程名(完美版)
    1.修改工程名字.打开工程点击工程名称回车直接修改  .此时会弹出一个对话框,点击Rename 2.修改scheme名称.点击Xcode上面的工具栏Product->Sechme->EditSe......