package cn.com.tenlion.buildingpictures.service.picturestemplatebuilding;

import cn.com.tenlion.buildingpictures.pojo.dtos.picturestemplate.PicturesTemplateBuildingDTO;
import cn.com.tenlion.buildingpictures.util.CreateImageBean;
import ink.wgink.exceptions.SaveException;
import ink.wgink.exceptions.SearchException;

import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import java.util.List;
import java.util.Map;

/**
 * @ClassName: IPicturesTemplateBuildingService
 * @Description: 图片套版的模板生成管理
 * @Author: WenG
 * @Date: 2020-10-20 10:49
 * @Version: 1.0
 **/
public interface IPicturesTemplateBuildingService {

    /**
     * 将Base64存为文件
     * @param base64
     * @return 返回File的Id
     * @throws SaveException
     */
    String saveBase64ToFile(String base64) throws IOException ;

    /**
     * 将BufferImage存为Base64
     * @param bufferedImage
     * @return 返回File的Id
     * @throws SaveException
     */
    String saveBufferImageToBase64(BufferedImage bufferedImage) throws IOException ;

    /**
     * 将BufferImage存储到File表中
     * @param bufferedImage
     * @return 返回File的Id
     * @throws SaveException
     */
    String saveBufferImageToFile(BufferedImage bufferedImage) ;

    /**
     * 生成套版文件(供其他模块的Service使用)
     * @param picturesTemplateCode 使用的套版编码
     * @param bean 注入的参数map
     * @return 返回图片的Base64
     * @throws SaveException
     */
    String buildingPictures(String picturesTemplateCode , Map<String, String> bean) throws Exception;

    /**
     * 生成套版文件(供其他模块的Service使用)
     * @param picturesTemplateCode 使用的套版编码
     * @param bean 注入的参数实体类
     * @return 返回图片的Base64
     * @throws SaveException
     */
    String buildingPictures(String picturesTemplateCode , Object bean) throws Exception;

    /**
     * 创建Base64图片(底层使用)
     * @param list
     * @param backFile
     * @param backWidth
     * @param backHeight
     * @return
     * @throws IOException
     */
    String createImage(List<CreateImageBean> list, File backFile, int backWidth, int backHeight) throws IOException;

    /**
     * 创建缓存图片(底层使用)
     * @param list
     * @param backFile
     * @param backWidth
     * @param backHeight
     * @return
     * @throws IOException
     */
    BufferedImage createBufferImage(List<CreateImageBean> list, File backFile, int backWidth, int backHeight) throws IOException;

    /**
     * 套版详情(包含每个套版区域)查询(供其他模块的Service使用)
     * @param picturesTemplateId 套版ID
     * @return 返回套版详情
     * @throws SearchException
     */
    PicturesTemplateBuildingDTO getPicturesTemplate(String picturesTemplateId);

    /**
     * 套版列表查询(供其他模块的Service使用)
     * @param queryParams 查询条件
     * @return 返回套版集合
     * @throws SearchException
     */
    List<PicturesTemplateBuildingDTO> getPicturesTemplateList(Map<String, Object> queryParams) ;

    /**
     * 套版列表(包含每个套版区域)查询(供其他模块的Service使用)
     * @param queryParams 查询条件
     * @return 返回套版集合
     * @throws SearchException
     */
    List<PicturesTemplateBuildingDTO> getPicturesTemplateAreaList(Map<String, Object> queryParams) ;

}