Просмотр исходного кода

refactor(core-module): 将FileServiceMt重命名为FileService

- 将FileServiceMt类重命名为FileService
- 更新所有引用FileServiceMt的文件
- 更新auth-module中的mini-auth.service.ts引用
- 更新文件模块的导出和路由文件
- 更新测试文件中的引用和描述

🤖 Generated with [Claude Code](https://claude.ai/code)
via [Happy](https://happy.engineering)

Co-Authored-By: Claude <noreply@anthropic.com>
Co-Authored-By: Happy <yesreply@happy.engineering>
yourname 3 недель назад
Родитель
Сommit
437c23bb68

+ 3 - 3
packages/core-module/auth-module/src/services/mini-auth.service.ts

@@ -1,6 +1,6 @@
 import { DataSource, Repository } from 'typeorm';
 import { DataSource, Repository } from 'typeorm';
 import { UserEntity } from '@d8d/core-module/user-module';
 import { UserEntity } from '@d8d/core-module/user-module';
-import { FileServiceMt } from '@d8d/core-module/file-module';
+import { FileService } from '@d8d/core-module/file-module';
 import { SystemConfigService } from '@d8d/core-module/system-config-module';
 import { SystemConfigService } from '@d8d/core-module/system-config-module';
 import { JWTUtil, redisUtil } from '@d8d/shared-utils';
 import { JWTUtil, redisUtil } from '@d8d/shared-utils';
 import axios from 'axios';
 import axios from 'axios';
@@ -8,12 +8,12 @@ import process from 'node:process'
 
 
 export class MiniAuthService {
 export class MiniAuthService {
   private userRepository: Repository<UserEntity>;
   private userRepository: Repository<UserEntity>;
-  private fileService: FileServiceMt;
+  private fileService: FileService;
   private systemConfigService: SystemConfigService;
   private systemConfigService: SystemConfigService;
 
 
   constructor(dataSource: DataSource) {
   constructor(dataSource: DataSource) {
     this.userRepository = dataSource.getRepository(UserEntity);
     this.userRepository = dataSource.getRepository(UserEntity);
-    this.fileService = new FileServiceMt(dataSource);
+    this.fileService = new FileService(dataSource);
     this.systemConfigService = new SystemConfigService(dataSource);
     this.systemConfigService = new SystemConfigService(dataSource);
   }
   }
 
 

+ 1 - 1
packages/core-module/file-module/src/index.ts

@@ -2,7 +2,7 @@
 export { File } from './entities';
 export { File } from './entities';
 
 
 // 导出服务
 // 导出服务
-export { FileServiceMt, MinioService } from './services';
+export { FileService, MinioService } from './services';
 
 
 // 导出Schema
 // 导出Schema
 export * from './schemas';
 export * from './schemas';

+ 2 - 2
packages/core-module/file-module/src/routes/[id]/delete.ts

@@ -1,5 +1,5 @@
 import { createRoute, OpenAPIHono, z } from '@hono/zod-openapi';
 import { createRoute, OpenAPIHono, z } from '@hono/zod-openapi';
-import { FileServiceMt } from '../../services/index';
+import { FileService } from '../../services/index';
 import { ErrorSchema } from '@d8d/shared-utils';
 import { ErrorSchema } from '@d8d/shared-utils';
 import { AppDataSource } from '@d8d/shared-utils';
 import { AppDataSource } from '@d8d/shared-utils';
 import { AuthContext } from '@d8d/shared-types';
 import { AuthContext } from '@d8d/shared-types';
@@ -57,7 +57,7 @@ const app = new OpenAPIHono<AuthContext>().openapi(deleteFileRoute, async (c) =>
     }
     }
 
 
     // 创建文件服务实例
     // 创建文件服务实例
-    const fileService = new FileServiceMt(AppDataSource);
+    const fileService = new FileService(AppDataSource);
     await fileService.deleteFile(id);
     await fileService.deleteFile(id);
     return c.json({ success: true, message: '文件删除成功' }, 200);
     return c.json({ success: true, message: '文件删除成功' }, 200);
   } catch (error) {
   } catch (error) {

+ 2 - 2
packages/core-module/file-module/src/routes/[id]/download.ts

@@ -1,5 +1,5 @@
 import { createRoute, OpenAPIHono, z } from '@hono/zod-openapi';
 import { createRoute, OpenAPIHono, z } from '@hono/zod-openapi';
-import { FileServiceMt } from '../../services/index';
+import { FileService } from '../../services/index';
 import { ErrorSchema } from '@d8d/shared-utils';
 import { ErrorSchema } from '@d8d/shared-utils';
 import { AppDataSource } from '@d8d/shared-utils';
 import { AppDataSource } from '@d8d/shared-utils';
 import { AuthContext } from '@d8d/shared-types';
 import { AuthContext } from '@d8d/shared-types';
@@ -58,7 +58,7 @@ const app = new OpenAPIHono<AuthContext>().openapi(downloadFileRoute, async (c)
     const { id } = c.req.valid('param');
     const { id } = c.req.valid('param');
 
 
     // 创建文件服务实例
     // 创建文件服务实例
-    const fileService = new FileServiceMt(AppDataSource);
+    const fileService = new FileService(AppDataSource);
     const result = await fileService.getFileDownloadUrl(id);
     const result = await fileService.getFileDownloadUrl(id);
     return c.json(result, 200);
     return c.json(result, 200);
   } catch (error) {
   } catch (error) {

+ 2 - 2
packages/core-module/file-module/src/routes/[id]/get-url.ts

@@ -1,5 +1,5 @@
 import { createRoute, OpenAPIHono, z } from '@hono/zod-openapi';
 import { createRoute, OpenAPIHono, z } from '@hono/zod-openapi';
-import { FileServiceMt } from '../../services/index';
+import { FileService } from '../../services/index';
 import { ErrorSchema } from '@d8d/shared-utils';
 import { ErrorSchema } from '@d8d/shared-utils';
 import { AppDataSource } from '@d8d/shared-utils';
 import { AppDataSource } from '@d8d/shared-utils';
 import { AuthContext } from '@d8d/shared-types';
 import { AuthContext } from '@d8d/shared-types';
@@ -54,7 +54,7 @@ const app = new OpenAPIHono<AuthContext>().openapi(getFileUrlRoute, async (c) =>
   try {
   try {
     const { id } = c.req.valid('param');
     const { id } = c.req.valid('param');
     // 创建文件服务实例
     // 创建文件服务实例
-    const fileService = new FileServiceMt(AppDataSource);
+    const fileService = new FileService(AppDataSource);
     const url = await fileService.getFileUrl(id);
     const url = await fileService.getFileUrl(id);
     return c.json({ url }, 200);
     return c.json({ url }, 200);
   } catch (error) {
   } catch (error) {

+ 2 - 2
packages/core-module/file-module/src/routes/multipart-complete/post.ts

@@ -1,5 +1,5 @@
 import { createRoute, OpenAPIHono, z } from '@hono/zod-openapi';
 import { createRoute, OpenAPIHono, z } from '@hono/zod-openapi';
-import { FileServiceMt } from '../../services/index';
+import { FileService } from '../../services/index';
 import { ErrorSchema } from '@d8d/shared-utils';
 import { ErrorSchema } from '@d8d/shared-utils';
 import { AppDataSource } from '@d8d/shared-utils';
 import { AppDataSource } from '@d8d/shared-utils';
 import { AuthContext } from '@d8d/shared-types';
 import { AuthContext } from '@d8d/shared-types';
@@ -107,7 +107,7 @@ const app = new OpenAPIHono<AuthContext>().openapi(completeMultipartUploadRoute,
     const data = await c.req.json();
     const data = await c.req.json();
 
 
     // 初始化FileService
     // 初始化FileService
-    const fileService = new FileServiceMt(AppDataSource);
+    const fileService = new FileService(AppDataSource);
     const result = await fileService.completeMultipartUpload(data);
     const result = await fileService.completeMultipartUpload(data);
 
 
     // 构建完整的响应包含host和bucket信息
     // 构建完整的响应包含host和bucket信息

+ 2 - 2
packages/core-module/file-module/src/routes/multipart-policy/post.ts

@@ -1,5 +1,5 @@
 import { createRoute, OpenAPIHono, z } from '@hono/zod-openapi';
 import { createRoute, OpenAPIHono, z } from '@hono/zod-openapi';
-import { FileServiceMt } from '../../services/index';
+import { FileService } from '../../services/index';
 import { ErrorSchema } from '@d8d/shared-utils';
 import { ErrorSchema } from '@d8d/shared-utils';
 import { AppDataSource } from '@d8d/shared-utils';
 import { AppDataSource } from '@d8d/shared-utils';
 import { AuthContext } from '@d8d/shared-types';
 import { AuthContext } from '@d8d/shared-types';
@@ -98,7 +98,7 @@ try {
   // 计算分片数量
   // 计算分片数量
   const partCount = Math.ceil(data.totalSize / data.partSize);
   const partCount = Math.ceil(data.totalSize / data.partSize);
   // 创建文件服务实例
   // 创建文件服务实例
-  const fileService = new FileServiceMt(AppDataSource);
+  const fileService = new FileService(AppDataSource);
   const result = await fileService.createMultipartUploadPolicy({
   const result = await fileService.createMultipartUploadPolicy({
     ...data,
     ...data,
     uploadUserId: user.id
     uploadUserId: user.id

+ 2 - 2
packages/core-module/file-module/src/routes/upload-policy/post.ts

@@ -1,5 +1,5 @@
 import { createRoute, OpenAPIHono, z } from '@hono/zod-openapi';
 import { createRoute, OpenAPIHono, z } from '@hono/zod-openapi';
-import { FileServiceMt } from '../../services/file.service';
+import { FileService } from '../../services/file.service';
 import { FileSchema, CreateFileDto } from '../../schemas/file.schema';
 import { FileSchema, CreateFileDto } from '../../schemas/file.schema';
 import { ErrorSchema } from '@d8d/shared-utils';
 import { ErrorSchema } from '@d8d/shared-utils';
 import { AppDataSource } from '@d8d/shared-utils';
 import { AppDataSource } from '@d8d/shared-utils';
@@ -67,7 +67,7 @@ const app = new OpenAPIHono<AuthContext>().openapi(createUploadPolicyRoute, asyn
     const user = c.get('user');
     const user = c.get('user');
 
 
     // 创建文件服务实例
     // 创建文件服务实例
-    const fileService = new FileServiceMt(AppDataSource);
+    const fileService = new FileService(AppDataSource);
 
 
     // 添加用户ID到文件数据
     // 添加用户ID到文件数据
     const fileData = {
     const fileData = {

+ 1 - 1
packages/core-module/file-module/src/services/file.service.ts

@@ -5,7 +5,7 @@ import { MinioService } from './minio.service';
 import { v4 as uuidv4 } from 'uuid';
 import { v4 as uuidv4 } from 'uuid';
 import { logger } from '@d8d/shared-utils';
 import { logger } from '@d8d/shared-utils';
 
 
-export class FileServiceMt extends GenericCrudService<File> {
+export class FileService extends GenericCrudService<File> {
   private readonly minioService: MinioService;
   private readonly minioService: MinioService;
 
 
   constructor(dataSource: DataSource) {
   constructor(dataSource: DataSource) {

+ 1 - 1
packages/core-module/file-module/src/services/index.ts

@@ -1,2 +1,2 @@
-export { FileServiceMt } from './file.service';
+export { FileService } from './file.service';
 export { MinioService } from './minio.service';
 export { MinioService } from './minio.service';

+ 16 - 16
packages/core-module/file-module/tests/unit/file.service.test.ts

@@ -1,6 +1,6 @@
 import { describe, it, expect, beforeEach, vi, afterEach } from 'vitest';
 import { describe, it, expect, beforeEach, vi, afterEach } from 'vitest';
 import { DataSource } from 'typeorm';
 import { DataSource } from 'typeorm';
-import { FileServiceMt } from '../../src/services/file.service';
+import { FileService } from '../../src/services/file.service';
 import { File } from '../../src/entities/file.entity';
 import { File } from '../../src/entities/file.entity';
 import { MinioService } from '../../src/services/minio.service';
 import { MinioService } from '../../src/services/minio.service';
 import { logger } from '@d8d/shared-utils';
 import { logger } from '@d8d/shared-utils';
@@ -18,7 +18,7 @@ vi.mock('uuid', () => ({
   v4: () => 'test-uuid-123'
   v4: () => 'test-uuid-123'
 }));
 }));
 
 
-describe('FileServiceMt', () => {
+describe('FileService', () => {
   let mockDataSource: DataSource;
   let mockDataSource: DataSource;
 
 
   beforeEach(() => {
   beforeEach(() => {
@@ -66,7 +66,7 @@ describe('FileServiceMt', () => {
         generateUploadPolicy: mockGenerateUploadPolicy
         generateUploadPolicy: mockGenerateUploadPolicy
       } as unknown as MinioService));
       } as unknown as MinioService));
 
 
-      const fileService = new FileServiceMt(mockDataSource);
+      const fileService = new FileService(mockDataSource);
 
 
       // Mock GenericCrudService methods
       // Mock GenericCrudService methods
       vi.spyOn(fileService, 'create').mockResolvedValue(mockSavedFile as File);
       vi.spyOn(fileService, 'create').mockResolvedValue(mockSavedFile as File);
@@ -96,7 +96,7 @@ describe('FileServiceMt', () => {
         generateUploadPolicy: mockGenerateUploadPolicy
         generateUploadPolicy: mockGenerateUploadPolicy
       } as unknown as MinioService));
       } as unknown as MinioService));
 
 
-      const fileService = new FileServiceMt(mockDataSource);
+      const fileService = new FileService(mockDataSource);
 
 
       await expect(fileService.createFile(mockFileData)).rejects.toThrow('文件创建失败');
       await expect(fileService.createFile(mockFileData)).rejects.toThrow('文件创建失败');
       expect(logger.error).toHaveBeenCalled();
       expect(logger.error).toHaveBeenCalled();
@@ -120,7 +120,7 @@ describe('FileServiceMt', () => {
         bucketName: 'd8dai'
         bucketName: 'd8dai'
       } as unknown as MinioService));
       } as unknown as MinioService));
 
 
-      const fileService = new FileServiceMt(mockDataSource);
+      const fileService = new FileService(mockDataSource);
       vi.spyOn(fileService.repository, 'findOne').mockResolvedValue(mockFile);
       vi.spyOn(fileService.repository, 'findOne').mockResolvedValue(mockFile);
       vi.spyOn(fileService, 'delete').mockResolvedValue(true);
       vi.spyOn(fileService, 'delete').mockResolvedValue(true);
 
 
@@ -150,7 +150,7 @@ describe('FileServiceMt', () => {
         bucketName: 'd8dai'
         bucketName: 'd8dai'
       } as unknown as MinioService));
       } as unknown as MinioService));
 
 
-      const fileService = new FileServiceMt(mockDataSource);
+      const fileService = new FileService(mockDataSource);
       vi.spyOn(fileService.repository, 'findOne').mockResolvedValue(mockFile);
       vi.spyOn(fileService.repository, 'findOne').mockResolvedValue(mockFile);
       vi.spyOn(fileService, 'delete').mockResolvedValue(true);
       vi.spyOn(fileService, 'delete').mockResolvedValue(true);
 
 
@@ -166,7 +166,7 @@ describe('FileServiceMt', () => {
     });
     });
 
 
     it('should throw error when file not found', async () => {
     it('should throw error when file not found', async () => {
-      const fileService = new FileServiceMt(mockDataSource);
+      const fileService = new FileService(mockDataSource);
       vi.spyOn(fileService.repository, 'findOne').mockResolvedValue(null);
       vi.spyOn(fileService.repository, 'findOne').mockResolvedValue(null);
 
 
       await expect(fileService.deleteFile(999)).rejects.toThrow('文件不存在');
       await expect(fileService.deleteFile(999)).rejects.toThrow('文件不存在');
@@ -189,7 +189,7 @@ describe('FileServiceMt', () => {
         bucketName: 'd8dai'
         bucketName: 'd8dai'
       } as unknown as MinioService));
       } as unknown as MinioService));
 
 
-      const fileService = new FileServiceMt(mockDataSource);
+      const fileService = new FileService(mockDataSource);
       vi.spyOn(fileService, 'getById').mockResolvedValue(mockFile);
       vi.spyOn(fileService, 'getById').mockResolvedValue(mockFile);
 
 
       const result = await fileService.getFileUrl(1);
       const result = await fileService.getFileUrl(1);
@@ -200,7 +200,7 @@ describe('FileServiceMt', () => {
     });
     });
 
 
     it('should throw error when file not found', async () => {
     it('should throw error when file not found', async () => {
-      const fileService = new FileServiceMt(mockDataSource);
+      const fileService = new FileService(mockDataSource);
       vi.spyOn(fileService, 'getById').mockResolvedValue(null);
       vi.spyOn(fileService, 'getById').mockResolvedValue(null);
 
 
       await expect(fileService.getFileUrl(999)).rejects.toThrow('文件不存在');
       await expect(fileService.getFileUrl(999)).rejects.toThrow('文件不存在');
@@ -224,7 +224,7 @@ describe('FileServiceMt', () => {
         bucketName: 'd8dai'
         bucketName: 'd8dai'
       } as unknown as MinioService));
       } as unknown as MinioService));
 
 
-      const fileService = new FileServiceMt(mockDataSource);
+      const fileService = new FileService(mockDataSource);
       vi.spyOn(fileService, 'getById').mockResolvedValue(mockFile);
       vi.spyOn(fileService, 'getById').mockResolvedValue(mockFile);
 
 
       const result = await fileService.getFileDownloadUrl(1);
       const result = await fileService.getFileDownloadUrl(1);
@@ -242,7 +242,7 @@ describe('FileServiceMt', () => {
     });
     });
 
 
     it('should throw error when file not found', async () => {
     it('should throw error when file not found', async () => {
-      const fileService = new FileServiceMt(mockDataSource);
+      const fileService = new FileService(mockDataSource);
       vi.spyOn(fileService, 'getById').mockResolvedValue(null);
       vi.spyOn(fileService, 'getById').mockResolvedValue(null);
 
 
       await expect(fileService.getFileDownloadUrl(999)).rejects.toThrow('文件不存在');
       await expect(fileService.getFileDownloadUrl(999)).rejects.toThrow('文件不存在');
@@ -277,7 +277,7 @@ describe('FileServiceMt', () => {
         bucketName: 'd8dai'
         bucketName: 'd8dai'
       } as unknown as MinioService));
       } as unknown as MinioService));
 
 
-      const fileService = new FileServiceMt(mockDataSource);
+      const fileService = new FileService(mockDataSource);
       vi.spyOn(fileService, 'create').mockResolvedValue(mockSavedFile);
       vi.spyOn(fileService, 'create').mockResolvedValue(mockSavedFile);
 
 
       const result = await fileService.createMultipartUploadPolicy(mockFileData, 3);
       const result = await fileService.createMultipartUploadPolicy(mockFileData, 3);
@@ -311,7 +311,7 @@ describe('FileServiceMt', () => {
         bucketName: 'd8dai'
         bucketName: 'd8dai'
       } as unknown as MinioService));
       } as unknown as MinioService));
 
 
-      const fileService = new FileServiceMt(mockDataSource);
+      const fileService = new FileService(mockDataSource);
 
 
       await expect(fileService.createMultipartUploadPolicy(mockFileData, 3)).rejects.toThrow('创建多部分上传策略失败');
       await expect(fileService.createMultipartUploadPolicy(mockFileData, 3)).rejects.toThrow('创建多部分上传策略失败');
       expect(logger.error).toHaveBeenCalled();
       expect(logger.error).toHaveBeenCalled();
@@ -354,7 +354,7 @@ describe('FileServiceMt', () => {
       };
       };
 
 
       mockDataSource.getRepository = vi.fn().mockReturnValue(mockRepository);
       mockDataSource.getRepository = vi.fn().mockReturnValue(mockRepository);
-      const fileService = new FileServiceMt(mockDataSource);
+      const fileService = new FileService(mockDataSource);
 
 
       const result = await fileService.completeMultipartUpload(uploadData);
       const result = await fileService.completeMultipartUpload(uploadData);
 
 
@@ -395,7 +395,7 @@ describe('FileServiceMt', () => {
       };
       };
 
 
       mockDataSource.getRepository = vi.fn().mockReturnValue(mockRepository);
       mockDataSource.getRepository = vi.fn().mockReturnValue(mockRepository);
-      const fileService = new FileServiceMt(mockDataSource);
+      const fileService = new FileService(mockDataSource);
 
 
       await expect(fileService.completeMultipartUpload(uploadData)).rejects.toThrow('文件记录不存在');
       await expect(fileService.completeMultipartUpload(uploadData)).rejects.toThrow('文件记录不存在');
     });
     });
@@ -427,7 +427,7 @@ describe('FileServiceMt', () => {
         completeMultipartUpload: mockCompleteMultipartUpload
         completeMultipartUpload: mockCompleteMultipartUpload
       } as unknown as MinioService));
       } as unknown as MinioService));
 
 
-      const fileService = new FileServiceMt(mockDataSource);
+      const fileService = new FileService(mockDataSource);
 
 
       await expect(fileService.completeMultipartUpload(uploadData)).rejects.toThrow('完成分片上传失败');
       await expect(fileService.completeMultipartUpload(uploadData)).rejects.toThrow('完成分片上传失败');
       expect(logger.error).toHaveBeenCalled();
       expect(logger.error).toHaveBeenCalled();