赞
踩
交互逻辑:
核心:
新增菜品功能,实质就是在服务端处理前端页面发送的4次请求。
代码:
1.查询分类数据
在CategoryController.java中:
- /**
- * 根据条件来查询分类数据
- * @param category
- * @return
- */
- @GetMapping("/list")
- public R<List<Category>> list(Category category){
- //条件构造器
- LambdaQueryWrapper<Category> queryWrapper = new LambdaQueryWrapper<>();
- //添加条件
- queryWrapper.eq(category.getType()!=null, Category::getType, category.getType());
- //添加排序条件
- queryWrapper.orderByAsc(Category::getSort).orderByDesc(Category::getUpdateTime);
-
- List<Category> list = categoryService.list(queryWrapper);
- return R.success(list);
- }

2.接收页面提交的数据
封装页面提交的数据:
- @Data
- public class DishDto extends Dish {
-
- private List<DishFlavor> flavors = new ArrayList<>();
-
- private String categoryName;
-
- private Integer copies;
- }
在dishController.java中保存数据:
-
- @RestController
- @RequestMapping("/dish")
- @Slf4j
- public class DishController {
- @Autowired
- private DishService dishService;
-
- @Autowired
- private DishFlavorService dishFlavorService;
-
- /**
- * 新增菜品
- * @param dishDto
- * @return
- */
- @PostMapping
- public R<String> save(@RequestBody DishDto dishDto){
- log.info(dishDto.toString());
-
- return null;
- }
- }

3.保存数据
需要操作dish、dishFlavor两张表,即同时插入菜品对应的口味数据:
3.1 接口dishService处声明:
- public interface DishService extends IService<Dish> {
-
- //新增菜品,同时插入菜品对应的口味数据,操作dish、dishFlavor两张表
- public void saveWithFlavor(DishDto dishDto);
- }
3.2 实现类处实现:
DishFlavor中的dishId要赋好值。
@Transactional注解作用是确保保存菜品基本信息和保存菜品口味数据的过程实是在一个事务中完成的。
- @Autowired
- private DishFlavorService dishFlavorService;
- /**
- * 新增菜品,同时保存对应的口味数据
- * @param dishDto
- */
-
- @Transactional
- public void saveWithFlavor(DishDto dishDto) {
- //保存菜品的基本信息到dish表
- this.save(dishDto);
-
- Long dishId = dishDto.getId(); //菜品id
-
- //菜品口味
- List<DishFlavor> flavors = dishDto.getFlavors();
- flavors = flavors.stream().map((item) ->{
- item.setDishId(dishId);
- return item;
- }).collect(Collectors.toList());
- //获取菜品口味集合中的Stream流,遍历每个DishFlavor对象,将其id赋值为dishDto里的菜品id
- //最后通过Collectors.toList()收集器将流中的元素收集到一个新的List集合中
-
- //保存菜品的口味数据到dish_flavor表中
- dishFlavorService.saveBatch(flavors);
- }

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