From 407178771a8feacdc02dc8a25282b6cbd18304f4 Mon Sep 17 00:00:00 2001 From: Leo <98382335+gaoziman@users.noreply.github.com> Date: Tue, 8 Jul 2025 20:32:13 +0800 Subject: [PATCH] =?UTF-8?q?feat(api):=20=E6=96=B0=E5=A2=9E=E6=96=87?= =?UTF-8?q?=E4=BB=B6=E7=AE=A1=E7=90=86=E5=92=8C=E5=9B=BE=E5=BA=93=E7=AE=A1?= =?UTF-8?q?=E7=90=86API=E6=A8=A1=E5=9D=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit **文件管理API模块:** - 新增完整的文件管理API接口,包含增删改查、批量操作等功能 - 实现文件列表分页查询、单文件查询、文件上传等核心接口 - 支持普通文件上传和匿名文件上传两种模式 - 提供完整的TypeScript类型定义,包含查询参数、响应数据等 - 定义文件服务类型和文件类型枚举,支持多种文件分类 - 遵循项目API模块组织规范,统一导出类型和函数 **图库管理API模块:** - 新增图库管理相关API接口,支持图片的增删改查操作 - 实现图片列表查询、图片详情获取、图片上传等功能 - 提供完整的类型定义,包含图库查询参数和响应数据结构 - 统一的API命名规范和错误处理机制 - 支持分页查询和批量操作功能 **技术规范:** - 严格按照项目CLAUDE.md规范进行API文件组织 - 类型定义与API函数在同一模块,避免重复定义 - 统一使用alova HTTP客户端进行接口调用 - 完整的JSDoc注释和TypeScript类型支持 --- src/service/api/system/file/index.ts | 84 ++++++++++++++++++++++ src/service/api/system/file/types.ts | 95 +++++++++++++++++++++++++ src/service/api/system/picture/index.ts | 84 ++++++++++++++++++++++ src/service/api/system/picture/types.ts | 95 +++++++++++++++++++++++++ 4 files changed, 358 insertions(+) create mode 100644 src/service/api/system/file/index.ts create mode 100644 src/service/api/system/file/types.ts create mode 100644 src/service/api/system/picture/index.ts create mode 100644 src/service/api/system/picture/types.ts diff --git a/src/service/api/system/file/index.ts b/src/service/api/system/file/index.ts new file mode 100644 index 0000000..b71d9ef --- /dev/null +++ b/src/service/api/system/file/index.ts @@ -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>('/coder/sysFile/listPage', { params }) +} + +// 查询所有文件(不分页) +export function getAllSysFiles(params?: Omit) { + return request.Get>('/coder/sysFile/list', { params }) +} + +// 根据ID查询文件 +export function getSysFileById(id: number) { + return request.Get>(`/coder/sysFile/getById/${id}`) +} + +// 新增文件记录 +export function addSysFile(data: SysFileVo) { + return request.Post>('/coder/sysFile/add', data) +} + +// 修改文件信息 +export function updateSysFile(data: SysFileVo) { + return request.Post>('/coder/sysFile/update', data) +} + +// 删除文件 +export function deleteSysFile(id: number) { + return request.Post>(`/coder/sysFile/deleteById/${id}`) +} + +// 批量删除文件 +export function batchDeleteSysFiles(ids: number[]) { + return request.Post>('/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(`/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(`/coder/file/uploadAnyFile/${fileSize}/${folderName}/${fileParam}`, formData) +} + +// 兼容性导出 - 保持原有函数名以确保向后兼容 +export const fetchSysFilePage = getSysFileList +export const fetchAllSysFiles = getAllSysFiles +export const fetchSysFileById = getSysFileById diff --git a/src/service/api/system/file/types.ts b/src/service/api/system/file/types.ts new file mode 100644 index 0000000..41d8632 --- /dev/null +++ b/src/service/api/system/file/types.ts @@ -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 }, +] diff --git a/src/service/api/system/picture/index.ts b/src/service/api/system/picture/index.ts new file mode 100644 index 0000000..6860f4d --- /dev/null +++ b/src/service/api/system/picture/index.ts @@ -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>('/coder/sysPicture/listPage', { params }) +} + +// 查询所有图片(不分页) +export function getAllSysPictures(params?: Omit) { + return request.Get>('/coder/sysPicture/list', { params }) +} + +// 根据ID查询图片 +export function getSysPictureById(id: number) { + return request.Get>(`/coder/sysPicture/getById/${id}`) +} + +// 新增图片记录 +export function addSysPicture(data: SysPictureVo) { + return request.Post>('/coder/sysPicture/add', data) +} + +// 修改图片信息 +export function updateSysPicture(data: SysPictureVo) { + return request.Post>('/coder/sysPicture/update', data) +} + +// 删除图片 +export function deleteSysPicture(id: number) { + return request.Post>(`/coder/sysPicture/deleteById/${id}`) +} + +// 批量删除图片 +export function batchDeleteSysPictures(ids: number[]) { + return request.Post>('/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(`/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(`/coder/file/uploadAnyFile/${fileSize}/pictures/${pictureType}`, formData) +} + +// 兼容性导出 - 保持原有函数名以确保向后兼容 +export const fetchSysPicturePage = getSysPictureList +export const fetchAllSysPictures = getAllSysPictures +export const fetchSysPictureById = getSysPictureById diff --git a/src/service/api/system/picture/types.ts b/src/service/api/system/picture/types.ts new file mode 100644 index 0000000..09329a9 --- /dev/null +++ b/src/service/api/system/picture/types.ts @@ -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 }, +]