package cn.edu.hactcm.service.impl;

import cn.edu.hactcm.dto.DishDto;
import cn.edu.hactcm.entity.Dish;
import cn.edu.hactcm.entity.DishFlavor;
import cn.edu.hactcm.mapper.DishMapper;
import cn.edu.hactcm.service.DishFlavorService;
import cn.edu.hactcm.service.DishService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

import java.util.List;

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

    @Autowired
    private DishFlavorService dishFlavorService;

    /**
     *新增菜品，对两张表进行操作（基本信息，口配配置信息）
     * @param dishDto
     */
    @Override
    @Transactional
    public void saveWithFlavor(DishDto dishDto) {

        //保存菜品的基本信息（dish表）保存操作完成后，框架会自动将dishDto的id回填，
        boolean savaWithDish = this.save(dishDto);

        //DishFlavor表中含有dishId属性，而前端提交数据后在DishController的save方法参数上通过DishDto类型接收参数时
        // 没有给dishFlavor对象的dishId属性赋值，所以需要在这里手动赋值
        List<DishFlavor> flavors = dishDto.getFlavors();
        for (DishFlavor flavor : flavors) {
            //这里可以取出回填的id
            flavor.setDishId(dishDto.getId());
        }
//        log.info(flavors.toString());

        //保存菜品口味配置（dish_flavor表）
        boolean saveBatchWithFlavor = dishFlavorService.saveBatch(dishDto.getFlavors());

    }



}
