本文主要是介绍新增套餐——后端,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
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*/@PostMappingpublic R<String> save(@RequestBody SetmealDto setmealDto){log.info("套餐信息:{}", setmealDto);setmealService.saveWithDish(setmealDto);return R.success("新增套餐成功");}
SetmealServiceImpl.java中:
@Autowiredprivate SetmealDishService setmealDishService;/*** 新增套餐,同时需要保存套餐和菜品的关联关系* @param setmealDto*/@Transactionalpublic 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);}
这篇关于新增套餐——后端的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!