赞
踩
s1.交互逻辑:
页面发送ajax请求,请求服务端获取分类数据,用于菜品分类下拉框中数据显示,由于修改也在add.html和服务端进行交互,之前添加菜品的时候该请求已经得到处理;
页面发送ajax请求,请求服务端根据id查询菜品信息并回显,进行图片下载并回显(添加菜品的时候也写过了);
点击保存按钮,发送ajax请求,将修改后的菜品相关数据以json形式提交到服务端。
2.代码编写
2.1. 根据id查询菜品信息并回显:
- /**
- * 根据id查询菜品信息以及对应口味信息
- * @param id
- * @return
- */
- @GetMapping("/{id}")
- public R<DishDto> get(@PathVariable Long id){
- DishDto dishDto = dishService.getByIdWithFlavor(id);
-
- return R.success(dishDto);
- }
由于菜品dish里不含有味道flavor的属性,因此仍然使用DishDto封装类作为结果返回。
在DishService.java里声明方法:
- public interface DishService extends IService<Dish> {
-
- //新增菜品,同时插入菜品对应的口味数据,操作dish、dishFlavor两张表
- public void saveWithFlavor(DishDto dishDto);
-
- //根据id查询菜品信息和对应的口味信息
- public DishDto getByIdWithFlavor(Long id);
- }
并在DishServiceImpl.java里实现:
- /**
- * 根据id查询菜品信息和对应的口味信息
- * @param id
- * @return
- */
- public DishDto getByIdWithFlavor(Long id) {
- //查询菜品基本信息, dish表中查询
- Dish dish = this.getById(id);
-
- DishDto dishDto = new DishDto();
- BeanUtils.copyProperties(dish, dishDto);
-
- //查询当前菜品口味信息, dishFlavor表中查询
- LambdaQueryWrapper<DishFlavor> queryWrapper = new LambdaQueryWrapper<>();
- queryWrapper.eq(DishFlavor::getDishId, dish.getId());
- List<DishFlavor> flavors = dishFlavorService.list(queryWrapper);
- dishDto.setFlavors(flavors);
-
- return dishDto;
- }
2.2 保存修改后的菜品信息
在dishService.java中声明方法并实现:
- //更新菜品信息以及口味信息
- public void updateWithFlavor(DishDto dishDto);
- @Override
- @Transactional
- public void updateWithFlavor(DishDto dishDto) {
- //更新dish表基本信息
- this.updateById(dishDto);
-
- //清理当前菜品对应口味数据--dish_flavor中的delete
- LambdaQueryWrapper<DishFlavor> queryWrapper = new LambdaQueryWrapper<>();
- queryWrapper.eq(DishFlavor::getDishId, dishDto.getId());
-
- dishFlavorService.remove(queryWrapper);
-
- //添加当前提交过来的口味数据--insert
- List<DishFlavor> flavors = dishDto.getFlavors();
-
- flavors = flavors.stream().map((item) -> {
- item.setDishId(dishDto.getId());
- return item;
- }).collect(Collectors.toList());
-
- dishFlavorService.saveBatch(flavors);
-
- }
如上代码的口味id要单独赋值。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。