当前位置: 首页 > news >正文

苍穹外卖--修改菜品

1.需求分析和设计

 产品原型:

接口设计:

根据id查询菜品

根据类型查询分类(以实现)

文件上传

修改菜品

2.代码开发

根据id查询菜品:

Controll层代码:

/*** 根据id查询菜品* @return*/@GetMapping("/{id}")@ApiOperation("根据id查询菜品")public Result<DishVO> getById(@PathVariable Long id){log.info("根据id查询菜品:{}",id);DishVO dishVO = dishService.getByIdWithFlavor(id);return Result.success(dishVO);}

Service层代码:

/*** 根据id查询菜品和对应的口味数据* @param id* @return*/DishVO getByIdWithFlavor(Long id);
/*** 根据id查询菜品和对应的口味数据* @param id* @return*/@Overridepublic DishVO getByIdWithFlavor(Long id) {//根据id查询菜品数据Dish dish = dishMapper.getById(id);//根据菜品id查询口味数据List<DishFlavor> dishFlavors = dishFlavorMapper.getByDishId(id);//将查询到的数据封装到VODishVO dishVO = new DishVO();BeanUtils.copyProperties(dish,dishVO);dishVO.setFlavors(dishFlavors);return dishVO;}

Mapper层代码:

/*** 根据菜品id查询对应的口味数据* @param dishId* @return*/@Select("SELECT * FROM dish_flavor WHERE dish_id = #{dishId}")List<DishFlavor> getByDishId(Long dishId);

修改菜品代码:

Controll层代码:

/*** 修改菜品* @param dishDTO* @return*/@PutMapping@ApiOperation("修改菜品")public Result update(@RequestBody DishDTO dishDTO){log.info("修改菜品:{}",dishDTO);dishService.updateWithFlavor(dishDTO);return Result.success();}

Service层代码:

/*** 根据id修改菜品基本信息和对应的口味信息* @param dishDTO*/void updateWithFlavor(DishDTO dishDTO);
/*** 根据id修改菜品基本信息和对应的口味信息* @param dishDTO*/@Overridepublic void updateWithFlavor(DishDTO dishDTO) {Dish dish = new Dish();BeanUtils.copyProperties(dishDTO,dish);//修改菜品表基本信息dishMapper.update(dish);//删除原有的口味数据dishFlavorMapper.deleteByDishId(dishDTO.getId());//重新插入口味数据List<DishFlavor> flavors = dishDTO.getFlavors();if(flavors != null && flavors.size() > 0){//是否有口味数据flavors.forEach(dishFlavor -> {dishFlavor.setDishId(dishDTO.getId());//遍历获取菜品对应的口味表id,好进行插入});//向口味表插入n条数据dishFlavorMapper.insertBatch(flavors);}}

Mapper层代码:

/*** 根据id动态修改菜品数据* @param dish*/@AutoFill(value = OperationType.UPDATE)void update(Dish dish);

XML代码:

<!--根据id修改菜品信息--><update id="update">UPDATE dish<set><if test="name != null">name = #{name},</if><if test="categoryId != null">category_id = #{categoryId},</if><if test="price != null">price = #{price},</if><if test="image != null">image = #{image},</if><if test="description != null">description = #{description},</if><if test="status != null">status = #{status},</if><if test="updateTime != null">update_time = #{updateTime},</if><if test="updateUser != null">update_user = #{updateUser},</if></set>WHERE id = #{id}</update>

相关文章:

  • 【超详细】面试中问到事件循环(Event Loop)机制?
  • 如何本地部署Qwen3系列的大小模型235B/32B并进行推理服务及并发测试?
  • C#自定义扩展方法 及 EventHandler<TEventArgs> 委托
  • 【linux驱动】【设备树】按键设备树讲解
  • WaterStamp —— 一个实用的网页水印生成器开发记
  • 【周输入】510周阅读推荐-3
  • c/c++数据类型转换.
  • 二:操作系统之进程控制块(PCB)
  • Selinux权限问题处理指导文档分享
  • 菱形继承原理
  • 中国与全球电子取证行业市场报告(公开信息版)
  • 暴雨大讲堂:高性能计算面临的芯片挑战
  • 牛客网NC210769: 字母大小写转换问题解析
  • HJ5 进制转换【牛客网】
  • Python 中二维列表(list)(嵌套列表)详解
  • uWSGI是什么?
  • Java中关于方法的调用和递归
  • 【cursor】有效解决
  • Appium自动化测试环境搭建及配置
  • 西门子1200/1500博图(TIA Portal)寻址方式详解
  • 周慧芳任上海交通大学医学院附属上海儿童医学中心党委书记
  • 中方是否担忧美国主权信用评级下调?外交部:美国应采取负责任的政策措施
  • 上海青少年书法学习园开园:少年以巨笔书写《祖国万岁》
  • 坐标大零号湾科创策源区,上海瑞金医院闵行院区正式启动建设
  • 福建、广西等地有大暴雨,国家防总启动防汛四级应急响应
  • 没有握手,采用翻译:俄乌三年来首次直接会谈成效如何?