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