当前位置:   article > 正文

修改菜品——后端Java

修改菜品——后端Java

s1.交互逻辑:

        页面发送ajax请求,请求服务端获取分类数据,用于菜品分类下拉框中数据显示,由于修改也在add.html和服务端进行交互,之前添加菜品的时候该请求已经得到处理;

        页面发送ajax请求,请求服务端根据id查询菜品信息并回显,进行图片下载并回显(添加菜品的时候也写过了);

        点击保存按钮,发送ajax请求,将修改后的菜品相关数据以json形式提交到服务端。

2.代码编写

2.1. 根据id查询菜品信息并回显:

  1. /**
  2. * 根据id查询菜品信息以及对应口味信息
  3. * @param id
  4. * @return
  5. */
  6. @GetMapping("/{id}")
  7. public R<DishDto> get(@PathVariable Long id){
  8. DishDto dishDto = dishService.getByIdWithFlavor(id);
  9. return R.success(dishDto);
  10. }

        由于菜品dish里不含有味道flavor的属性,因此仍然使用DishDto封装类作为结果返回。

        在DishService.java里声明方法:

  1. public interface DishService extends IService<Dish> {
  2. //新增菜品,同时插入菜品对应的口味数据,操作dish、dishFlavor两张表
  3. public void saveWithFlavor(DishDto dishDto);
  4. //根据id查询菜品信息和对应的口味信息
  5. public DishDto getByIdWithFlavor(Long id);
  6. }

        并在DishServiceImpl.java里实现:

  1. /**
  2. * 根据id查询菜品信息和对应的口味信息
  3. * @param id
  4. * @return
  5. */
  6. public DishDto getByIdWithFlavor(Long id) {
  7. //查询菜品基本信息, dish表中查询
  8. Dish dish = this.getById(id);
  9. DishDto dishDto = new DishDto();
  10. BeanUtils.copyProperties(dish, dishDto);
  11. //查询当前菜品口味信息, dishFlavor表中查询
  12. LambdaQueryWrapper<DishFlavor> queryWrapper = new LambdaQueryWrapper<>();
  13. queryWrapper.eq(DishFlavor::getDishId, dish.getId());
  14. List<DishFlavor> flavors = dishFlavorService.list(queryWrapper);
  15. dishDto.setFlavors(flavors);
  16. return dishDto;
  17. }

2.2 保存修改后的菜品信息

        在dishService.java中声明方法并实现:

  1. //更新菜品信息以及口味信息
  2. public void updateWithFlavor(DishDto dishDto);
  1. @Override
  2. @Transactional
  3. public void updateWithFlavor(DishDto dishDto) {
  4. //更新dish表基本信息
  5. this.updateById(dishDto);
  6. //清理当前菜品对应口味数据--dish_flavor中的delete
  7. LambdaQueryWrapper<DishFlavor> queryWrapper = new LambdaQueryWrapper<>();
  8. queryWrapper.eq(DishFlavor::getDishId, dishDto.getId());
  9. dishFlavorService.remove(queryWrapper);
  10. //添加当前提交过来的口味数据--insert
  11. List<DishFlavor> flavors = dishDto.getFlavors();
  12. flavors = flavors.stream().map((item) -> {
  13. item.setDishId(dishDto.getId());
  14. return item;
  15. }).collect(Collectors.toList());
  16. dishFlavorService.saveBatch(flavors);
  17. }

        如上代码的口味id要单独赋值。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/从前慢现在也慢/article/detail/698252
推荐阅读
相关标签
  

闽ICP备14008679号