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
*/
@Override
public DishVO getByIdWithFlavor(Long id) {
//根据id查询菜品数据
Dish dish = dishMapper.getById(id);
//根据菜品id查询口味数据
List<DishFlavor> dishFlavors = dishFlavorMapper.getByDishId(id);
//将查询到的数据封装到VO
DishVO 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
*/
@Override
public 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>

被折叠的 条评论
为什么被折叠?



