修改菜品——后端Java

作者 : admin 本文共1714个字,预计阅读时间需要5分钟 发布时间: 2024-06-10 共2人阅读

s1.交互逻辑:

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

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

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

2.代码编写

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

    /**
     * 根据id查询菜品信息以及对应口味信息
     * @param id
     * @return
     */
    @GetMapping("/{id}")
    public R get(@PathVariable Long id){
        DishDto dishDto = dishService.getByIdWithFlavor(id);

        return R.success(dishDto);
    }

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

        在DishService.java里声明方法:

public interface DishService extends IService {

    //新增菜品,同时插入菜品对应的口味数据,操作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 queryWrapper = new LambdaQueryWrapper();
        queryWrapper.eq(DishFlavor::getDishId, dish.getId());
        List 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 queryWrapper = new LambdaQueryWrapper();
        queryWrapper.eq(DishFlavor::getDishId, dishDto.getId());

        dishFlavorService.remove(queryWrapper);

        //添加当前提交过来的口味数据--insert
        List flavors = dishDto.getFlavors();

        flavors = flavors.stream().map((item) -> {
            item.setDishId(dishDto.getId());
            return item;
        }).collect(Collectors.toList());

        dishFlavorService.saveBatch(flavors);

    }

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

本站无任何商业行为
个人在线分享 » 修改菜品——后端Java
E-->