package cn.cslg.report.service;

import cn.cslg.report.common.model.dto.ProductDTO;
import cn.cslg.report.common.model.dto.ProductIncludeFilesDTO;
import cn.cslg.report.common.model.vo.ProductIncludeFilesVO;
import org.springframework.transaction.annotation.Propagation;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.multipart.MultipartFile;

import java.util.List;

/**
 * 产品的Service层接口
 *
 * @Author chenyu
 * @Date 2022/12/20
 */
public interface IProductService {
    /**
     * 新增产品
     *
     * @param productDTO 新增产品的前端传输DTO数据对象
     * @param files      产品附件
     */
    @Transactional
    void addProduct(ProductDTO productDTO, List<MultipartFile> files);

    /**
     * 修改产品
     *
     * @param productIncludeFilesDTO 修改产品的前端传输DTO数据对象
     * @param files                  产品附件
     */
    @Transactional
    void updateProduct(ProductIncludeFilesDTO productIncludeFilesDTO, List<MultipartFile> files);

    /**
     * 根据报告reportId关联查询产品和产品附件数据(产品表、产品文件关联表、报告系统文件表)
     *
     * @param reportId 报告id
     * @return 返回查询到的产品和产品附件数据对象
     */
    ProductIncludeFilesVO getProduct(Integer reportId);

    /**
     * 根据报告reportId删除产品及所有关联数据
     *
     * @param reportId 报告id
     */
    void deleteProduct(Integer reportId);

}
