瑞吉外卖之新增菜品

138 阅读1分钟

一、接口详情

image.png

二、判断业务逻辑

1、新增菜品,设计到两张表dish和dish_flavor表,一下是参数传递:

image.png

2、新建参数实体类dto继承dish实体类

@Data
public class DishDto extends Dish {
    private List<DishFlavor> flavors = new ArrayList<>();
    private String categoryName;
    private Integer copies;
}

3、新建mapper和service和serviceImp类

4、创建controller,参数传递记得查看参数类型,比如这个是JSON类型的需要@RequestBody来进行接收

@PostMapping
public Message save(@RequestBody DishDto dishDto){
    log.info(dishDto.toString());
    dishService.saveWithFlavor(dishDto);
    return Message.success("新增菜品成功!");
}

打断点并查看接受参数是否有误!然后发现菜品id即DishId没有被封装进去;

5、新增要新增两张表的数据所以,在DishService中添加saveWithFlavor(DishDto dishDto)方法,直接在controller调用即可;

@Service
public class DishServiceImp extends ServiceImpl<DishMapper, Dish> implements DishService {

 @Autowired
 private DishFlavorService dishFlavorService;
 /**
  * 新增菜品同时保存菜品口味
  * @param dishDto
  */
 @Override
 public void saveWithFlavor(DishDto dishDto) {
     //保存菜品的基本信息,到Dish表当中
     this.save(dishDto);

     //保存菜品口味,因为传递过来的参数没有id所以先处理

     //先获取菜品的ID
     Long dishId = dishDto.getId();
     //遍历这个口味集合将disId赋值
     List<DishFlavor> flavorList = dishDto.getFlavors().stream().map(item -> {
         item.setDishId(dishId);
         return item;
     }).collect(Collectors.toList());

     dishFlavorService.saveBatch(flavorList);
 }
}