Files
senmesh-zc/src/main/java/com/senmesh/sfile/service/UserFileService.java

125 lines
3.1 KiB
Java
Raw Normal View History

2025-12-31 18:10:10 +08:00
package com.senmesh.sfile.service;
import com.senmesh.sfile.dto.ExpandUserFileCreateDTO;
2026-01-05 16:35:46 +08:00
import com.senmesh.sfile.dto.ExpandUserFileDTO;
2025-12-31 18:10:10 +08:00
import com.senmesh.sfile.dto.UserFileCreateDTO;
import com.senmesh.sfile.dto.UserFileDTO;
import com.senmesh.sfile.dto.UserFileModifyDTO;
import com.senmesh.sfile.dto.UserFileModifyStatusDTO;
import com.senmesh.sfile.dto.UserFileQueryDTO;
2026-01-08 14:33:33 +08:00
import com.senmesh.sfile.dto.UserFileStatisticsDTO;
2025-12-31 18:10:10 +08:00
import java.util.List;
/**
* 用户文件Service
*/
public interface UserFileService {
/**
* 创建用户文件
*
* @param createDTO 创建DTO
2026-01-05 16:35:46 +08:00
* @return UserFileDTO
2025-12-31 18:10:10 +08:00
*/
2026-01-05 16:35:46 +08:00
UserFileDTO create(UserFileCreateDTO createDTO);
2025-12-31 18:10:10 +08:00
/**
* 根据普通文件创建新的文件(复制)
* 创建一个文件夹,文件名为原文件名+时间戳,然后复制原文件下所有文件类型的子文件
*
* @param expandCreateDTO 扩展创建DTO
2026-01-05 16:35:46 +08:00
* @return 扩展用户文件DTO(包含文件夹信息和文件列表)
2025-12-31 18:10:10 +08:00
*/
2026-01-05 16:35:46 +08:00
ExpandUserFileDTO create(ExpandUserFileCreateDTO expandCreateDTO);
/**
* 根据文件夹和文件列表创建文件夹和文件(用于传输文件解包)
* 1. 从 folder 中获取 userId 和 rootType
* 2. 创建文件夹
* 3. 遍历文件列表,通过 fileCode 获取文件流,上传文件获取新的 fileCode,然后创建用户文件记录
*
* @param folder 文件夹信息(包含 userId、rootType、fileName 等)
* @param files 文件列表(每个文件包含 fileCode、fileName 等)
* @return 扩展用户文件DTO(包含创建后的文件夹信息和文件列表)
*/
ExpandUserFileDTO create(UserFileDTO folder, List<UserFileDTO> files);
2025-12-31 18:10:10 +08:00
/**
* 修改用户文件
*
* @param modifyDTO 修改DTO
*/
void modify(UserFileModifyDTO modifyDTO);
/**
* 修改用户文件状态
*
* @param modifyStatusDTO 修改状态DTO
*/
void modifyStatus(UserFileModifyStatusDTO modifyStatusDTO);
/**
* 修改用户文件状态(校验用户权限)
*
* @param modifyStatusDTO 修改状态DTO
* @param userId 用户ID
*/
void modifyStatus(UserFileModifyStatusDTO modifyStatusDTO, Long userId);
/**
* 删除用户文件
*
* @param id 主键ID
*/
void remove(Long id);
/**
* 删除用户文件(校验用户权限)
*
* @param id 主键ID
* @param userId 用户ID
*/
void remove(Long id, Long userId);
/**
* 列表查询
*
* @param queryDTO 查询DTO
* @return List<UserFileDTO>
*/
List<UserFileDTO> list(UserFileQueryDTO queryDTO);
/**
* 分页查询
*
* @param queryDTO 查询DTO
*/
void page(UserFileQueryDTO queryDTO);
/**
* 单个查询
*
* @param queryDTO 查询DTO
* @return UserFileDTO
*/
UserFileDTO find(UserFileQueryDTO queryDTO);
/**
* 单个查询(不存在抛异常)
*
* @param queryDTO 查询DTO
* @return UserFileDTO
*/
UserFileDTO findOne(UserFileQueryDTO queryDTO);
2026-01-08 14:33:33 +08:00
/**
* 按文件种类统计文件个数和总大小
*
* @param queryDTO 查询DTO
* @return List<UserFileStatisticsDTO>
*/
List<UserFileStatisticsDTO> statisticsByCategory(UserFileQueryDTO queryDTO);
2025-12-31 18:10:10 +08:00
}