赞
踩
1.交互逻辑
新增套餐,就是将新增页面的套餐信息插入到setmeal表,并向setmeal_dish中插入套餐和菜品关联数据。涉及setmeal, setmeal_dish两张表。
页面发送ajax请求,请求服务端获取套餐分类数据并展示到下拉框中;获取菜品分类数据并展示到菜品窗口中;根据菜品分类查询对应的菜品数据并展示到添加菜品窗口中;进行图片上传,将图片保存到服务器并进行图片下载,将上传的图片进行回显;点击保存按钮,页面发送ajax请求,将套餐相关数据以json形式提交到服务端。
服务端需要处理以上页面发送的请求。
2.代码实现
2.1 根据分类查询菜品
- /**
- * 根据条件查询对应的菜品数据
- * @param dish
- * @return
- */
- @GetMapping("/list")
- public R<List<Dish>> list(Dish dish){
- //构造查询条件
- LambdaQueryWrapper<Dish> queryWrapper = new LambdaQueryWrapper<>();
- queryWrapper.eq(dish.getCategoryId() != null, Dish::getCategoryId, dish.getCategoryId());
- //添加条件,查询状态为1(起售状态)的菜品
- queryWrapper.eq(Dish::getStatus, 1);
- //添加排序条件
- queryWrapper.orderByAsc(Dish::getSort).orderByDesc(Dish::getUpdateTime);
-
- List<Dish> list = dishService.list(queryWrapper);
-
- return R.success(list);
- }

2.2 服务端接收数据并保存
SetmealController.java中:
- /**
- * 新增套餐
- * @param setmealDto
- * @return
- */
- @PostMapping
- public R<String> save(@RequestBody SetmealDto setmealDto){
- log.info("套餐信息:{}", setmealDto);
-
- setmealService.saveWithDish(setmealDto);
- return R.success("新增套餐成功");
- }
SetmealServiceImpl.java中:
- @Autowired
- private SetmealDishService setmealDishService;
- /**
- * 新增套餐,同时需要保存套餐和菜品的关联关系
- * @param setmealDto
- */
- @Transactional
- public void saveWithDish(SetmealDto setmealDto) {
- //保存套餐的基本信息,setmeal表
- this.save(setmealDto);
- //保存套餐和菜品的关联关系
- List<SetmealDish> setmealDishes = setmealDto.getSetmealDishes();
- setmealDishes.stream().map((item) -> {
- item.setSetmealId(setmealDto.getId());
- return item;
- }).collect(Collectors.toList());
-
- setmealDishService.saveBatch(setmealDishes);
- }

Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。