| 版本 | 日期 | 描述 | 作者 |
|---|---|---|---|
| 2.4 | 2025-09-20 | 与主架构文档版本一致 | Winston |
用户模型:
id: number - 主键标识符username: string - 唯一用户名(主要登录标识)email: string | null - 可选邮箱地址password: string - 加密密码(bcrypt哈希)avatarFileId: number | null - 头像文件IDroles: Role[] - 用户角色多对多关系文件管理模型:
id: number - 主键标识符name: string - 文件名path: string - MinIO存储路径size: number - 文件大小(字节)type: string - 文件类型uploadUserId: number - 上传用户IDuploadTime: Date - 上传时间优化重点: 保持现有数据模型不变,新增文件管理功能,优化查询性能和验证逻辑
// 用户实体接口
export interface User {
id: number;
username: string;
email: string | null;
password: string;
roles: Role[];
createdAt: Date;
updatedAt: Date;
}
// 角色实体接口
export interface Role {
id: number;
name: string;
permissions: string[];
users: User[];
createdAt: Date;
updatedAt: Date;
}
// 用户创建DTO
export interface CreateUserDto {
username: string;
email?: string;
password: string;
roleIds?: number[];
}
// 用户更新DTO
export interface UpdateUserDto {
username?: string;
email?: string | null;
password?: string;
roleIds?: number[];
}
// 文件实体接口
export interface File {
id: number;
name: string;
type: string | null;
size: number | null;
path: string;
description: string | null;
uploadUserId: number;
uploadUser: User;
uploadTime: Date;
lastUpdated: Date | null;
createdAt: Date;
updatedAt: Date;
fullUrl: Promise<string>; // 异步获取预签名URL
}
// 文件创建DTO
export interface CreateFileDto {
name: string;
type?: string;
size?: number;
description?: string;
uploadUserId: number;
}
// 多部分上传策略响应
export interface MultipartUploadPolicy {
uploadId: string;
bucket: string;
key: string;
host: string;
partUrls: string[];
}
// 上传策略响应
export interface UploadPolicy {
uploadPolicy: {
'x-amz-algorithm': string;
'x-amz-credential': string;
'x-amz-date': string;
'x-amz-security-token'?: string;
policy: string;
'x-amz-signature': string;
host: string;
key: string;
bucket: string;
};
}
// 分页响应接口
export interface PaginatedResponse<T> {
data: T[];
pagination: {
total: number;
current: number;
pageSize: number;
totalPages: number;
};
}