package com.njcn.gather.user.user.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.njcn.gather.user.user.pojo.po.SysFile;
import org.springframework.web.multipart.MultipartFile;

import java.util.List;

/**
 * 通用文件服务。
 */
public interface ISysFileService extends IService<SysFile> {

    /**
     * 上传并保存 MinIO 文件记录。
     *
     * @param bizType   业务类型
     * @param bucketKey 桶配置键
     * @param bizDir    MinIO 目录
     * @param ownerId   业务归属ID
     * @param file      上传文件
     * @return 文件记录
     */
    SysFile saveMinioFile(String bizType, String bucketKey, String bizDir, String ownerId, MultipartFile file);

    /**
     * 根据 ID 查询有效文件。
     *
     * @param fileId 文件ID
     * @return 文件记录
     */
    SysFile getActiveById(String fileId);

    /**
     * 按文件 ID 列表查询有效文件。
     *
     * @param fileIds 文件ID列表
     * @return 文件记录
     */
    List<SysFile> listActiveByIds(List<String> fileIds);

    /**
     * 逻辑删除文件记录。
     *
     * @param file 文件记录
     */
    void markDeleted(SysFile file);

    /**
     * 删除 MinIO 对象。
     *
     * @param file 文件记录
     */
    void deleteObjectQuietly(SysFile file);
}
