当前位置:   article > 正文

新增套餐——后端

新增套餐——后端

1.交互逻辑

        新增套餐,就是将新增页面的套餐信息插入到setmeal表,并向setmeal_dish中插入套餐和菜品关联数据。涉及setmeal, setmeal_dish两张表。

        页面发送ajax请求,请求服务端获取套餐分类数据并展示到下拉框中;获取菜品分类数据并展示到菜品窗口中;根据菜品分类查询对应的菜品数据并展示到添加菜品窗口中;进行图片上传,将图片保存到服务器并进行图片下载,将上传的图片进行回显;点击保存按钮,页面发送ajax请求,将套餐相关数据以json形式提交到服务端。

        服务端需要处理以上页面发送的请求。

2.代码实现

2.1 根据分类查询菜品

  1. /**
  2. * 根据条件查询对应的菜品数据
  3. * @param dish
  4. * @return
  5. */
  6. @GetMapping("/list")
  7. public R<List<Dish>> list(Dish dish){
  8. //构造查询条件
  9. LambdaQueryWrapper<Dish> queryWrapper = new LambdaQueryWrapper<>();
  10. queryWrapper.eq(dish.getCategoryId() != null, Dish::getCategoryId, dish.getCategoryId());
  11. //添加条件,查询状态为1(起售状态)的菜品
  12. queryWrapper.eq(Dish::getStatus, 1);
  13. //添加排序条件
  14. queryWrapper.orderByAsc(Dish::getSort).orderByDesc(Dish::getUpdateTime);
  15. List<Dish> list = dishService.list(queryWrapper);
  16. return R.success(list);
  17. }

2.2 服务端接收数据并保存

SetmealController.java中:

  1. /**
  2. * 新增套餐
  3. * @param setmealDto
  4. * @return
  5. */
  6. @PostMapping
  7. public R<String> save(@RequestBody SetmealDto setmealDto){
  8. log.info("套餐信息:{}", setmealDto);
  9. setmealService.saveWithDish(setmealDto);
  10. return R.success("新增套餐成功");
  11. }

SetmealServiceImpl.java中:

  1. @Autowired
  2. private SetmealDishService setmealDishService;
  3. /**
  4. * 新增套餐,同时需要保存套餐和菜品的关联关系
  5. * @param setmealDto
  6. */
  7. @Transactional
  8. public void saveWithDish(SetmealDto setmealDto) {
  9. //保存套餐的基本信息,setmeal表
  10. this.save(setmealDto);
  11. //保存套餐和菜品的关联关系
  12. List<SetmealDish> setmealDishes = setmealDto.getSetmealDishes();
  13. setmealDishes.stream().map((item) -> {
  14. item.setSetmealId(setmealDto.getId());
  15. return item;
  16. }).collect(Collectors.toList());
  17. setmealDishService.saveBatch(setmealDishes);
  18. }

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

闽ICP备14008679号