package com.gic.haoban.manage.api.service;

import com.gic.api.base.commons.Page;
import com.gic.haoban.base.api.common.BasePageInfo;
import com.gic.haoban.base.api.common.ServiceResponse;
import com.gic.haoban.manage.api.dto.BatchAddMaterialDTO;
import com.gic.haoban.manage.api.dto.ContentMaterialDTO;
import com.gic.haoban.manage.api.dto.MaterialCategoryDTO;
import com.gic.haoban.manage.api.dto.MaterialDTO;
import com.gic.haoban.manage.api.dto.qdto.MaterialCategorySortQDTO;
import com.gic.haoban.manage.api.qdto.combined.CombinedQDTO;

import java.util.List;

public interface MaterialApiService {

    boolean hasCategoryNameExsit(String categoryName, String categoryParentId, String categoryId,String wxEnterpriseId);

    void insertCategory(MaterialCategoryDTO materialCategoryDTO);

    List<MaterialCategoryDTO> listCategory(String wxEnterpriseId);

    MaterialCategoryDTO selectMaterialCategoryById(String categoryId);

    void editCategory(MaterialCategoryDTO materialCategoryDTO);

    List<MaterialDTO> listMaterialByCategoryId(String categoryId);

    void insertMaterial(MaterialDTO materialDTO);

    MaterialDTO selectMaterialById(String materialId);

    List<MaterialDTO> listMaterialByIds(List<String> materialIds);

    List<MaterialDTO> listContentMaterialByIds(List<String> materialIds);

    List<MaterialDTO> listMaterialByIds(List<String> materialIds,Integer materialFrom);

    void editMaterial(MaterialDTO materialDTO);

    Page<MaterialDTO> listMaterial(String wxEnterpriseId, String keyword, String categoryId, Integer materialType, BasePageInfo pageInfo);

    String reUpdalodMetail(String materialId);

    List<MaterialCategoryDTO> listByParentCategory(String categoryId);

    /**
     * 分析素材
     *
     * @param toWxEnterpriseId
     * @param wxEnterpriseId
     * @param materialId
     */
    ServiceResponse<Void> shareMaterial(String wxEnterpriseId, String toWxEnterpriseId, String materialId);

    /**
     * 素材关联的已分配企业
     *
     * @param materialId
     */
    List<MaterialDTO> listByFromMaterialId(String materialId);

    /**
     * 删除
     *
     * @param ids
     */
    void delMaterial(List<String> ids);

    /**
     * 自动刷新madiaid的 获取素材
     *
     * @param materialId
     * @return
     */
    MaterialDTO getHasChangeMadieMaterialById(String materialId);

    /**
     * 批量新增素材
     *
     * @param dto dto
	 * @author: YongEn
     */
    void batchInsertMaterial(BatchAddMaterialDTO dto);
    
    public com.gic.api.base.commons.ServiceResponse<String> getMaterialId(String wxEnterpriseId, ContentMaterialDTO dto) ;

    com.gic.api.base.commons.ServiceResponse<String> getMaterialIdByUrl(String wxEnterpriseId, ContentMaterialDTO dto) ;

    com.gic.api.base.commons.ServiceResponse<String> getMaterialIdByCombined(String wxEnterpriseId, CombinedQDTO combinedQDTO);

    /**
     * 排序
     * @param qdto
     */
    void materialSortCategory(MaterialCategorySortQDTO qdto);
}
