package com.vetti.hotake.service;

import com.vetti.hotake.domain.HotakeSysFile;
import com.vetti.hotake.domain.dto.HotakeSysFileDto;
import com.vetti.hotake.domain.vo.HotakeSysFileVo;
import org.springframework.web.multipart.MultipartFile;

import java.util.List;
import java.util.Map;

/**
 * 文件管理Service接口
 *
 * @author ID
 * @date 2025-09-06
 */
public interface IHotakeSysFileService {
    /**
     * 查询文件管理
     *
     * @param id 文件管理主键
     * @return 文件管理
     */
    public HotakeSysFile selectHotakeSysFileById(Long id);

    /**
     * 查询文件管理列表
     *
     * @param hotakeSysFile 文件管理
     * @return 文件管理集合
     */
    public List<HotakeSysFileDto> selectHotakeSysFileList(HotakeSysFile hotakeSysFile);

    public HotakeSysFile uploadFile(MultipartFile file,String minioBucketName);

    /**
     * 新增文件管理
     *
     * @param fileVo 文件请求对象
     * @return 结果
     */
    public HotakeSysFile insertHotakeSysFile(MultipartFile file, HotakeSysFileVo fileVo);

    /**
     * 修改文件管理
     *
     * @param hotakeSysFile 文件管理
     * @return 结果
     */
    public int updateHotakeSysFile(MultipartFile file, HotakeSysFile hotakeSysFile);

    /**
     * 批量删除文件管理
     *
     * @param ids 需要删除的文件管理主键集合
     * @return 结果
     */
    public int deleteHotakeSysFileByIds(Long[] ids);

    /**
     * 删除文件管理信息
     *
     * @param id 文件管理主键
     * @return 结果
     */
    public int deleteHotakeSysFileById(Long id);

    /**
     * 批量新增文件管理
     *
     * @param hotakeSysFileList 文件管理列表
     * @return 结果
     */
    public int batchInsertHotakeSysFile(List<HotakeSysFile> hotakeSysFileList);

    int availableSysFile(Long id);

    /**
     * 获取文件url
     *
     * @param data
     * @return
     */
    String url(HotakeSysFile data);

    /**
     * 获取文件url
     *
     * @param id
     * @return
     */
    String url(Long id);

    /**
     * 获取文件url
     *
     * @param ids
     * @return
     */
    Map<Long, String> url(Long[] ids);

    public void updateData(MultipartFile file, HotakeSysFile hotakeSysFile);


}
