基于 Spring Boot 瑞吉外卖系统开发(十)
修改菜品
修改菜品是在原有的菜品信息的上对菜品信息进行更新,对此修改菜品信息之前需要将原有的菜品信息在修改界面进行展示,然后再对菜品信息进行修改。
修改菜品分为回显菜品信息
和更新菜品信息
。
回显菜品信息
点击"修改"菜品按钮,请求携带菜品id以get请求方式向"/dish"发送请求。
DishController类中添加查询菜品信息的方法
java
@GetMapping("/{id}")
public R<DishDto> getDishDtoById(@PathVariable("id") Long id){
Dish dish = dishService.getById(id);
DishDto dishDto = new DishDto();
BeanUtils.copyProperties(dish,dishDto);
QueryWrapper<DishFlavor> query = new QueryWrapper<>();//条件构造器
query.eq("dish_id",id);
List<DishFlavor> list = dishFlavorService.list(query);
dishDto.setFlavors(list);
return R.success(dishDto);
}
运行测试
重新启动项目,成功登录管理端之后,在菜品管理页面单击牛肉面的"修改"按钮,请求修改信息,数据可以正常回显。
更新菜品信息
点击"保存"按钮,请求携带表单中的菜品信息以put请求方式向"/dish"发送请求。
DishController类中添加修改菜品信息的方法
java
@PutMapping
public R<String> update(@RequestBody DishDto dishDto){
dishService.updateWithFlavor(dishDto);
return R.success("更新菜品成功");
}
DishService接口中添加updateWithFlavor()方法
java
void updateWithFlavor(DishDto dishDto);
DishServiceImpl类中实现DishService接口中的updateWithFlavor()方法
java
@Override
@Transactional
public void updateWithFlavor(DishDto dishDto) {
//更新基本信息
this.updateById(dishDto);
//删除原有口味
QueryWrapper<DishFlavor> query = new QueryWrapper<>();
query.eq("dish_id",dishDto.getId());
dishFlavorService.remove(query);
//菜品口味
List<DishFlavor> flavors = dishDto.getFlavors();
for(DishFlavor flavor:flavors){
flavor.setDishId(dishDto.getId());
}
//新增菜品口味数据到菜品口味表dish_flavor
dishFlavorService.saveBatch(flavors);
}
运行测试
重新启动项目,成功登录管理端之后,在修改菜品页面中将牛肉面的价格修改为"20"后,单击"保存"按钮。