feat(api): 新增文件管理和图库管理API模块

**文件管理API模块:**
- 新增完整的文件管理API接口,包含增删改查、批量操作等功能
- 实现文件列表分页查询、单文件查询、文件上传等核心接口
- 支持普通文件上传和匿名文件上传两种模式
- 提供完整的TypeScript类型定义,包含查询参数、响应数据等
- 定义文件服务类型和文件类型枚举,支持多种文件分类
- 遵循项目API模块组织规范,统一导出类型和函数

**图库管理API模块:**
- 新增图库管理相关API接口,支持图片的增删改查操作
- 实现图片列表查询、图片详情获取、图片上传等功能
- 提供完整的类型定义,包含图库查询参数和响应数据结构
- 统一的API命名规范和错误处理机制
- 支持分页查询和批量操作功能

**技术规范:**
- 严格按照项目CLAUDE.md规范进行API文件组织
- 类型定义与API函数在同一模块,避免重复定义
- 统一使用alova HTTP客户端进行接口调用
- 完整的JSDoc注释和TypeScript类型支持
This commit is contained in:
Leo 2025-07-08 20:32:13 +08:00
parent 8360dbc665
commit 407178771a
4 changed files with 358 additions and 0 deletions

View File

@ -0,0 +1,84 @@
import { request } from '../../../http'
import type {
FileUploadResult,
PageSysFileVo,
SysFileQueryBo,
SysFileVo,
} from './types'
// 重新导出类型供外部使用
export type {
FileServiceType,
FileTypeEnum,
FileUploadResult,
PageSysFileVo,
SysFileQueryBo,
SysFileSearchForm,
SysFileVo,
} from './types'
// 重新导出常量值供外部使用
export {
FILE_SERVICE_OPTIONS,
FILE_TYPE_OPTIONS,
} from './types'
// 文件管理相关API
// 分页查询文件列表
export function getSysFileList(params: SysFileQueryBo) {
return request.Get<Service.ResponseResult<PageSysFileVo>>('/coder/sysFile/listPage', { params })
}
// 查询所有文件(不分页)
export function getAllSysFiles(params?: Omit<SysFileQueryBo, 'pageNo' | 'pageSize'>) {
return request.Get<Service.ResponseResult<SysFileVo[]>>('/coder/sysFile/list', { params })
}
// 根据ID查询文件
export function getSysFileById(id: number) {
return request.Get<Service.ResponseResult<SysFileVo>>(`/coder/sysFile/getById/${id}`)
}
// 新增文件记录
export function addSysFile(data: SysFileVo) {
return request.Post<Service.ResponseResult<string>>('/coder/sysFile/add', data)
}
// 修改文件信息
export function updateSysFile(data: SysFileVo) {
return request.Post<Service.ResponseResult<string>>('/coder/sysFile/update', data)
}
// 删除文件
export function deleteSysFile(id: number) {
return request.Post<Service.ResponseResult<string>>(`/coder/sysFile/deleteById/${id}`)
}
// 批量删除文件
export function batchDeleteSysFiles(ids: number[]) {
return request.Post<Service.ResponseResult<string>>('/coder/sysFile/batchDelete', ids)
}
// 文件上传相关API
// 上传文件
export function uploadFile(file: File, folderName: string, fileSize = 2, fileParam = '-1') {
const formData = new FormData()
formData.append('file', file)
return request.Post<FileUploadResult>(`/coder/file/uploadFile/${fileSize}/${folderName}/${fileParam}`, formData)
}
// 匿名上传文件(无需登录)
export function uploadAnyFile(file: File, folderName: string, fileSize = 2, fileParam = '-1') {
const formData = new FormData()
formData.append('file', file)
return request.Post<FileUploadResult>(`/coder/file/uploadAnyFile/${fileSize}/${folderName}/${fileParam}`, formData)
}
// 兼容性导出 - 保持原有函数名以确保向后兼容
export const fetchSysFilePage = getSysFileList
export const fetchAllSysFiles = getAllSysFiles
export const fetchSysFileById = getSysFileById

View File

@ -0,0 +1,95 @@
/**
*
*/
// 文件查询条件类型
export interface SysFileQueryBo {
pageNo?: number
pageSize?: number
fileName?: string
fileSuffix?: string
fileService?: string
fileType?: string
}
// 文件信息类型
export interface SysFileVo {
fileId?: number
fileName: string
newName?: string
fileType: string
fileSize?: string
fileSuffix: string
fileUpload?: string
filePath?: string
fileService: string
createTime?: string
createBy?: string
updateTime?: string
updateBy?: string
}
// 文件搜索表单类型
export interface SysFileSearchForm {
fileName?: string
fileSuffix?: string
fileService?: string
fileType?: string
}
// 分页结果类型
export interface PageSysFileVo {
records: SysFileVo[]
total: number
size: number
current: number
pages: number
}
// 文件上传结果类型
export interface FileUploadResult {
fileName: string
newName: string
fileSize: string
suffixName: string
filePath: string
fileUploadPath: string
}
// 文件服务类型枚举
export enum FileServiceType {
LOCAL = '1', // 本地存储
MINIO = '2', // MinIO对象存储
OSS = '3', // 阿里云对象存储
}
// 文件类型枚举
export enum FileTypeEnum {
ALL = '0', // 全部
IMAGE = '1', // 图片
DOCUMENT = '2', // 文档
AUDIO = '3', // 音频
VIDEO = '4', // 视频
ARCHIVE = '5', // 压缩包
APPLICATION = '6', // 应用程序
OTHER = '9', // 其他
}
// 文件类型选项
export const FILE_TYPE_OPTIONS = [
{ label: '全部', value: FileTypeEnum.ALL },
{ label: '图片', value: FileTypeEnum.IMAGE },
{ label: '文档', value: FileTypeEnum.DOCUMENT },
{ label: '音频', value: FileTypeEnum.AUDIO },
{ label: '视频', value: FileTypeEnum.VIDEO },
{ label: '压缩包', value: FileTypeEnum.ARCHIVE },
{ label: '应用程序', value: FileTypeEnum.APPLICATION },
{ label: '其他', value: FileTypeEnum.OTHER },
]
// 文件服务类型选项
export const FILE_SERVICE_OPTIONS = [
{ label: '本地存储', value: FileServiceType.LOCAL },
{ label: 'MinIO存储', value: FileServiceType.MINIO },
{ label: '阿里云OSS', value: FileServiceType.OSS },
]

View File

@ -0,0 +1,84 @@
import { request } from '../../../http'
import type {
PageSysPictureVo,
PictureUploadResult,
SysPictureQueryBo,
SysPictureVo,
} from './types'
// 重新导出类型供外部使用
export type {
PageSysPictureVo,
PictureServiceType,
PictureTypeEnum,
PictureUploadResult,
SysPictureQueryBo,
SysPictureSearchForm,
SysPictureVo,
} from './types'
// 重新导出常量值供外部使用
export {
PICTURE_SERVICE_OPTIONS,
PICTURE_TYPE_OPTIONS,
} from './types'
// 图库管理相关API
// 分页查询图片列表
export function getSysPictureList(params: SysPictureQueryBo) {
return request.Get<Service.ResponseResult<PageSysPictureVo>>('/coder/sysPicture/listPage', { params })
}
// 查询所有图片(不分页)
export function getAllSysPictures(params?: Omit<SysPictureQueryBo, 'pageNo' | 'pageSize'>) {
return request.Get<Service.ResponseResult<SysPictureVo[]>>('/coder/sysPicture/list', { params })
}
// 根据ID查询图片
export function getSysPictureById(id: number) {
return request.Get<Service.ResponseResult<SysPictureVo>>(`/coder/sysPicture/getById/${id}`)
}
// 新增图片记录
export function addSysPicture(data: SysPictureVo) {
return request.Post<Service.ResponseResult<string>>('/coder/sysPicture/add', data)
}
// 修改图片信息
export function updateSysPicture(data: SysPictureVo) {
return request.Post<Service.ResponseResult<string>>('/coder/sysPicture/update', data)
}
// 删除图片
export function deleteSysPicture(id: number) {
return request.Post<Service.ResponseResult<string>>(`/coder/sysPicture/deleteById/${id}`)
}
// 批量删除图片
export function batchDeleteSysPictures(ids: number[]) {
return request.Post<Service.ResponseResult<string>>('/coder/sysPicture/batchDelete', ids)
}
// 图片上传相关API
// 上传图片
export function uploadPicture(file: File, pictureType = '9', fileSize = 2) {
const formData = new FormData()
formData.append('file', file)
return request.Post<PictureUploadResult>(`/coder/file/uploadFile/${fileSize}/pictures/${pictureType}`, formData)
}
// 匿名上传图片(无需登录)
export function uploadAnyPicture(file: File, pictureType = '9', fileSize = 2) {
const formData = new FormData()
formData.append('file', file)
return request.Post<PictureUploadResult>(`/coder/file/uploadAnyFile/${fileSize}/pictures/${pictureType}`, formData)
}
// 兼容性导出 - 保持原有函数名以确保向后兼容
export const fetchSysPicturePage = getSysPictureList
export const fetchAllSysPictures = getAllSysPictures
export const fetchSysPictureById = getSysPictureById

View File

@ -0,0 +1,95 @@
/**
*
*/
// 图片查询条件类型
export interface SysPictureQueryBo {
pageNo?: number
pageSize?: number
pictureName?: string
pictureSuffix?: string
pictureService?: string
pictureType?: string
}
// 图片信息类型
export interface SysPictureVo {
pictureId?: number
pictureName: string
newName?: string
pictureSize?: string
pictureSuffix: string
pictureUpload?: string
picturePath?: string
pictureService: string
pictureType: string
createTime?: string
createBy?: string
updateTime?: string
updateBy?: string
}
// 图片搜索表单类型
export interface SysPictureSearchForm {
pictureName?: string
pictureSuffix?: string
pictureService?: string
pictureType?: string
}
// 分页结果类型
export interface PageSysPictureVo {
records: SysPictureVo[]
total: number
size: number
current: number
pages: number
}
// 图片上传结果类型
export interface PictureUploadResult {
fileName: string
newName: string
fileSize: string
suffixName: string
filePath: string
fileUploadPath: string
}
// 图片服务类型枚举
export enum PictureServiceType {
LOCAL = '1', // 本地存储
MINIO = '2', // MinIO对象存储
OSS = '3', // 阿里云对象存储
}
// 图片类型枚举
export enum PictureTypeEnum {
ALL = '0', // 全部数据
USER_AVATAR = '1', // 用户头像
ANIMATION = '2', // 动漫分类
BEAUTY = '3', // 美女分类
SCENERY = '4', // 风景分类
STAR = '5', // 明星分类
ANIMAL = '6', // 动物分类
OTHER = '9', // 其他分类
}
// 图片类型选项
export const PICTURE_TYPE_OPTIONS = [
{ label: '全部数据', value: PictureTypeEnum.ALL },
{ label: '用户头像', value: PictureTypeEnum.USER_AVATAR },
{ label: '动漫分类', value: PictureTypeEnum.ANIMATION },
{ label: '美女分类', value: PictureTypeEnum.BEAUTY },
{ label: '风景分类', value: PictureTypeEnum.SCENERY },
{ label: '明星分类', value: PictureTypeEnum.STAR },
{ label: '动物分类', value: PictureTypeEnum.ANIMAL },
{ label: '其他分类', value: PictureTypeEnum.OTHER },
]
// 图片服务类型选项
export const PICTURE_SERVICE_OPTIONS = [
{ label: '本地存储', value: PictureServiceType.LOCAL },
{ label: 'MinIO存储', value: PictureServiceType.MINIO },
{ label: '阿里云OSS', value: PictureServiceType.OSS },
]