基于 Spring Boot 瑞吉外賣系統開發(十)
修改菜品
修改菜品是在原有的菜品信息的上對菜品信息進行更新,對此修改菜品信息之前需要將原有的菜品信息在修改界面進行展示,然后再對菜品信息進行修改。
修改菜品分為回顯菜品信息
和更新菜品信息
。
回顯菜品信息
點擊"修改"菜品按鈕,請求攜帶菜品id以get請求方式向“/dish”發送請求。
DishController類中添加查詢菜品信息的方法
@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類中添加修改菜品信息的方法
@PutMappingpublic R<String> update(@RequestBody DishDto dishDto){dishService.updateWithFlavor(dishDto);return R.success("更新菜品成功");}
DishService接口中添加updateWithFlavor()方法
void updateWithFlavor(DishDto dishDto);
DishServiceImpl類中實現DishService接口中的updateWithFlavor()方法
@Override@Transactionalpublic 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_flavordishFlavorService.saveBatch(flavors);}
運行測試
重新啟動項目,成功登錄管理端之后,在修改菜品頁面中將牛肉面的價格修改為"20"后,單擊“保存”按鈕。