feat(api): 新增文件管理和图库管理API模块
**文件管理API模块:** - 新增完整的文件管理API接口,包含增删改查、批量操作等功能 - 实现文件列表分页查询、单文件查询、文件上传等核心接口 - 支持普通文件上传和匿名文件上传两种模式 - 提供完整的TypeScript类型定义,包含查询参数、响应数据等 - 定义文件服务类型和文件类型枚举,支持多种文件分类 - 遵循项目API模块组织规范,统一导出类型和函数 **图库管理API模块:** - 新增图库管理相关API接口,支持图片的增删改查操作 - 实现图片列表查询、图片详情获取、图片上传等功能 - 提供完整的类型定义,包含图库查询参数和响应数据结构 - 统一的API命名规范和错误处理机制 - 支持分页查询和批量操作功能 **技术规范:** - 严格按照项目CLAUDE.md规范进行API文件组织 - 类型定义与API函数在同一模块,避免重复定义 - 统一使用alova HTTP客户端进行接口调用 - 完整的JSDoc注释和TypeScript类型支持
This commit is contained in:
parent
8360dbc665
commit
407178771a
84
src/service/api/system/file/index.ts
Normal file
84
src/service/api/system/file/index.ts
Normal 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
|
||||
95
src/service/api/system/file/types.ts
Normal file
95
src/service/api/system/file/types.ts
Normal 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 },
|
||||
]
|
||||
84
src/service/api/system/picture/index.ts
Normal file
84
src/service/api/system/picture/index.ts
Normal 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
|
||||
95
src/service/api/system/picture/types.ts
Normal file
95
src/service/api/system/picture/types.ts
Normal 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 },
|
||||
]
|
||||
Loading…
Reference in New Issue
Block a user