package com.moka.gdtauto.service;

import org.springframework.web.multipart.MultipartFile;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import com.moka.gdtauto.entity.OssFile;

/**
 * OSS文件Service接口
 *
 * @author moka
 * @since 2026-02-26
 */
public interface OssFileService extends IService<OssFile> {

    /**
     * 上传文件
     *
     * @param file 文件
     * @param folder 存储文件夹
     * @param fileType 文件类型
     * @param businessType 业务分类(1:创意 2:品牌形象)
     * @param userId 用户ID
     * @param userName 用户姓名
     * @return 文件记录
     */
    OssFile uploadFile(MultipartFile file, String folder, String fileType, Integer businessType, Long userId, String userName);

    /**
     * 删除文件（同时删除OSS和数据库记录）
     *
     * @param fileId 文件ID
     * @return 是否成功
     */
    boolean deleteFile(Long fileId);

    /**
     * 批量删除文件
     *
     * @param fileIds 文件ID列表
     * @return 是否全部成功
     */
    boolean batchDeleteFiles(Long[] fileIds);

    /**
     * 分页查询文件列表
     *
     * @param page 页码
     * @param size 每页数量
     * @param fileType 文件类型
     * @param businessType 业务分类
     * @param fileName 文件名（模糊查询）
     * @param userId 创建人id
     * @param sortField 排序字段
     * @param sortOrder 排序方式
     * @return 分页结果
     */
    Page<OssFile> listFiles(Long page, Long size, String fileType, Integer businessType, String fileName, Long userId, String sortField, String sortOrder);
}
