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

♻️ refactor(silver-talents-admin): 重构银龄人才管理API路由

- 使用通用CRUD路由工具重构银龄人才管理API,替换手动实现的CRUD接口
- 添加SilverUserProfileService服务类,实现通用CRUD功能
- 优化客户端API路径格式,将.api.v1.admin['silver-talents']调整为.api.v1['admin']['silver-talents']
- 配置实体关系、搜索字段和用户跟踪信息,增强API功能

✨ feat(silver-talents-admin): 增强银龄人才管理功能

- 添加搜索功能,支持按姓名、电话、邮箱、组织、个人介绍和技能搜索
- 启用用户跟踪,记录创建人和更新人信息
- 关联用户实体,支持查询用户信息
- 应用认证中间件,加强接口安全性
yourname 7 месяцев назад
Родитель
Сommit
8ebfc6d3ee

+ 1 - 1
src/client/api.ts

@@ -130,4 +130,4 @@ export const silverTalentsClient = hc<SilverTalentsRoutes>('/', {
 // 银龄库管理客户端
 export const silverTalentsAdminClient = hc<SilverTalentsAdminRoutes>('/api/v1', {
   fetch: axiosFetch,
-}).api.v1.admin['silver-talents']
+}).api.v1['admin']['silver-talents']

+ 26 - 10
src/server/api/silver-talents-admin/index.ts

@@ -1,17 +1,33 @@
+import { createCrudRoutes } from '@/server/utils/generic-crud.routes';
+import { SilverUserProfile } from '@/server/modules/silver-users/silver-user-profile.entity';
+import { 
+  SilverUserProfileSchema, 
+  CreateSilverUserProfileDto, 
+  UpdateSilverUserProfileDto 
+} from '@/server/modules/silver-users/silver-user-profile.entity';
+import { authMiddleware } from '@/server/middleware/auth.middleware';
 import { OpenAPIHono } from '@hono/zod-openapi';
-import listRoute from './get';
-import getByIdRoute from './[id]/get';
-import patchRoute from './[id]/patch';
-import putRoute from './[id]/put';
-import deleteRoute from './[id]/delete';
 import statsRoute from './stats';
 
+// 创建通用CRUD路由
+const crudRoutes = createCrudRoutes({
+  entity: SilverUserProfile,
+  createSchema: CreateSilverUserProfileDto,
+  updateSchema: UpdateSilverUserProfileDto,
+  getSchema: SilverUserProfileSchema,
+  listSchema: SilverUserProfileSchema,
+  searchFields: ['realName', 'phone', 'email', 'organization', 'personalIntro', 'personalSkills'],
+  relations: ['user'],
+  middleware: [authMiddleware],
+  userTracking: {
+    createdByField: 'createdBy',
+    updatedByField: 'updatedBy'
+  }
+});
+
+// 创建应用并组合路由
 const app = new OpenAPIHono()
-  .route('/', listRoute)
-  .route('/', getByIdRoute)
-  .route('/', patchRoute)
-  .route('/', putRoute)
-  .route('/', deleteRoute)
+  .route('/', crudRoutes)
   .route('/', statsRoute);
 
 export default app;

+ 9 - 0
src/server/modules/silver-users/silver-user-profile.service.ts

@@ -0,0 +1,9 @@
+import { DataSource } from 'typeorm';
+import { GenericCrudService } from '@/server/utils/generic-crud.service';
+import { SilverUserProfile } from './silver-user-profile.entity';
+
+export class SilverUserProfileService extends GenericCrudService<SilverUserProfile> {
+  constructor(dataSource: DataSource) {
+    super(dataSource, SilverUserProfile);
+  }
+}