package com.ai.da.service;

import com.ai.da.common.response.PageBaseResponse;
import com.ai.da.mapper.primary.entity.Library;
import com.ai.da.model.dto.*;
import com.ai.da.model.vo.LibraryUpdateVo;
import com.ai.da.model.vo.LibraryVo;
import com.ai.da.model.vo.QueryLibraryPageVO;
import com.baomidou.mybatisplus.extension.service.IService;

import java.text.ParseException;
import java.util.List;
import java.util.Map;

/**
 * 服务类
 *
 * @author yanglei
 * @since 2022-09-11
 */
public interface LibraryService extends IService<Library> {
    /**
     * 根据用户id和一等级查询
     *
     * @param accountId
     * @param level1Types
     * @return
     */
    List<LibraryVo> selectByAccountIdAnd1TypeList(Long accountId, List<String> level1Types);

    /**
     * 分页查询library
     *
     * @param query
     * @return
     */
    PageBaseResponse<QueryLibraryPageVO> queryLibraryPage(QueryLibraryPageServiceDTO query);

    /**
     * 上传library图片
     *
     * @param libraryUploadDTO
     * @return
     */
    LibraryUpdateVo upload(LibraryUploadDTO libraryUploadDTO);

    void checkModel(String value, List<Long> modelIds, Integer deleteModelConfirm);

    /**
     * 编辑library 文件名
     *
     * @param libraryUpdateDTO
     */
    void updateLibraryName(LibraryUpdateDTO libraryUpdateDTO);

    /**
     * 跟进ids批量查询
     *
     * @param ids
     */
    List<Library> getByIds(List<Long> ids);

    /**
     * 根据md5集合查询
     *
     * @param md5List
     */
    List<Library> getByMD5List(List<String> md5List);

    /**
     * 根据集合url查询
     *
     * @param urlList
     */
    List<LibraryVo> getByUrlList(List<String> urlList, Long userId);

    Boolean updateLibraryLevel2Type(LibraryLevel2TypeUpdateDTO libraryLevel2TypeUpdateDTO);

    String processMannequins(String uploadPath);


    void processSketchBoards(String filePath, String category);

    Boolean checkMd5(String level1Type, String level2Type, String sex, String md5);

    void batchDeleteLibrary(LibraryDeleteDTO deleteDTO);

    void deleteTrialData(Long id);

    void moveLibraryDate() throws ParseException;

    Map<String, String> addSysModelToLib(long sysModelId);

    boolean saveToOrganizationLibrary(Long libraryId);

    void deleteFromPublicLib(Long libraryId);

    PageBaseResponse<Library> getPublicLib(String order, long page, long size);

    PageBaseResponse<Library> getAllSubAccLib(String order, long page, long size);

    String addSysSketchToLibrary(Long clothId, String path);
}
