苍穹外卖--修改菜品
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>