package com.fs.file.service;

import com.fs.file.domain.SysUploadFile;
import com.fs.file.dto.FileUploadDTO;
import com.fs.file.vo.FileUploadVO;
import org.springframework.web.multipart.MultipartFile;

import java.util.List;

/**
 * 文件服务接口
 */
public interface ISysFileService {

    /**
     * 通用文件上传
     */
    FileUploadVO upload(FileUploadDTO dto);

    /**
     * 快速上传（简化版）
     */
    FileUploadVO upload(MultipartFile file, String bizType);

    /**
     * 快速上传并绑定业务
     */
    FileUploadVO upload(MultipartFile file, String bizType, String bizId);

    /**
     * 批量上传
     */
    List<FileUploadVO> uploadBatch(List<MultipartFile> files, String bizType, String bizId);

    /**
     * 绑定业务ID（上传后再绑定场景）
     */
    boolean bindBizId(Long fileId, String bizId);

    /**
     * 批量绑定业务ID
     */
    boolean bindBizIdBatch(List<Long> fileIds, String bizId);

    /**
     * 根据业务查询文件列表
     */
    List<SysUploadFile> listByBiz(String bizType, String bizId);

    /**
     * 根据ID获取文件
     */
    SysUploadFile getById(Long id);

    /**
     * 删除文件（逻辑删除）
     */
    boolean deleteById(Long id);

    /**
     * 批量删除
     */
    boolean deleteByIds(List<Long> ids);

    /**
     * 根据业务删除所有文件
     */
    boolean deleteByBiz(String bizType, String bizId);

    /**
     * 秒传检查
     */
    FileUploadVO checkFastUpload(String md5, String bizType, String bizId);
}
