Browse Source

♻️ refactor(api): 重构银龄用户知识相关API路由和客户端结构

- 将银龄用户API路由从单一实例拆分为多个独立路由,避免过深实例化
- 重构SilverUsersRoutes导出结构,改为对象形式导出各子路由
- 在服务器端分开注册银龄用户知识相关路由,提高路由管理清晰度
- 客户端API调用重构为多个独立客户端,对应不同知识子模块
- 移除原silverUsersClient,新增knowledges、knowledge-categories等专项客户端

♻️ refactor(client): 优化银龄用户知识相关客户端导入

- 调整客户端导入结构,新增多个知识相关路由类型导入
- 重构银龄用户客户端为专项客户端,提高代码可维护性
- 移除原silverUsersClient,替换为多个功能明确的专项客户端实例
yourname 10 months ago
parent
commit
9bfa4029cb
3 changed files with 60 additions and 19 deletions
  1. 37 6
      src/client/api.ts
  2. 15 3
      src/server/api.ts
  3. 8 10
      src/server/api/silver-users/index.ts

+ 37 - 6
src/client/api.ts

@@ -10,12 +10,17 @@ import type {
   FavoriteRoutes,
   ViewRoutes,
   CompanyImageRoutes,
-  SilverUsersRoutes,
-  ElderlyUniversityRoutes,
   SilverTalentsRoutes,
+  ElderlyUniversityRoutes,
   PolicyNewsRoutes,
   UserPreferenceRoutes,
-  HomeRoutes
+  HomeRoutes,
+  SilverUsersKnowledgesRoutes,
+  SilverUsersKnowledgeCategoriesRoutes,
+  SilverUsersKnowledgeTagsRoutes,
+  SilverUsersKnowledgeStatsRoutes,
+  SilverUsersKnowledgeInteractionsRoutes,
+  SilverUsersKnowledgeRankingsRoutes
 } from '@/server/api';
 import axios from 'axios';
 
@@ -89,10 +94,36 @@ export const companyImageClient = hc<CompanyImageRoutes>('/', {
   fetch: axiosFetch,
 }).api.v1['silver-jobs']['company-images'];
 
-// 银龄用户资源客户端
-export const silverUsersClient = hc<SilverUsersRoutes>('/', {
+// 银龄用户资源客户端 - 重构为分开的客户端,避免过深实例化
+export const silverUsersKnowledgesClient = hc<SilverUsersKnowledgesRoutes>('/', {
+  fetch: axiosFetch,
+}).api.v1['silver-users'].knowledges;
+
+export const silverUsersKnowledgeCategoriesClient = hc<SilverUsersKnowledgeCategoriesRoutes>('/', {
+  fetch: axiosFetch,
+}).api.v1['silver-users']['knowledge-categories'];
+
+export const silverUsersKnowledgeTagsClient = hc<SilverUsersKnowledgeTagsRoutes>('/', {
+  fetch: axiosFetch,
+}).api.v1['silver-users']['knowledge-tags'];
+
+export const silverUsersKnowledgeStatsClient = hc<SilverUsersKnowledgeStatsRoutes>('/', {
   fetch: axiosFetch,
-}).api.v1['silver-users'];
+}).api.v1['silver-users']['knowledge-stats'];
+
+export const silverUsersKnowledgeInteractionsClient = hc<SilverUsersKnowledgeInteractionsRoutes>('/', {
+  fetch: axiosFetch,
+}).api.v1['silver-users']['knowledge-interactions'];
+
+export const silverUsersKnowledgeRankingsClient = hc<SilverUsersKnowledgeRankingsRoutes>('/', {
+  fetch: axiosFetch,
+}).api.v1['silver-users']['knowledge-rankings'];
+
+// 银龄用户资源客户端
+export const silverUsersClient = {
+  
+}
+
 
 // 其他资源客户端
 export const elderlyUniversityClient = hc<ElderlyUniversityRoutes>('/', {

+ 15 - 3
src/server/api.ts

@@ -10,7 +10,7 @@ import applicationRoutes from './api/silver-jobs/applications'
 import favoriteRoutes from './api/silver-jobs/favorites'
 import viewRoutes from './api/silver-jobs/views'
 import companyImageRoutes from './api/silver-jobs/company-images'
-import silverUsersRoutes from './api/silver-users/index'
+import { silverUsersRoutes } from './api/silver-users/index'
 import silverTalentsRoutes from './api/silver-talents/index'
 import elderlyUniversityRoutes from './api/elderly-universities/index'
 import policyNewsRoutes from './api/policy-news/index'
@@ -71,13 +71,20 @@ const applicationApiRoutes = api.route('/api/v1/silver-jobs/applications', appli
 const favoriteApiRoutes = api.route('/api/v1/silver-jobs/favorites', favoriteRoutes)
 const viewApiRoutes = api.route('/api/v1/silver-jobs/views', viewRoutes)
 const companyImageApiRoutes = api.route('/api/v1/silver-jobs/company-images', companyImageRoutes)
-const silverUsersApiRoutes = api.route('/api/v1/silver-users', silverUsersRoutes)
 const silverTalentsApiRoutes = api.route('/api/v1/silver-talents', silverTalentsRoutes)
 const elderlyUniversityApiRoutes = api.route('/api/v1/elderly-universities', elderlyUniversityRoutes)
 const policyNewsApiRoutes = api.route('/api/v1/policy-news', policyNewsRoutes)
 const userPreferenceApiRoutes = api.route('/api/v1/user-preferences', userPreferenceRoutes)
 const homeApiRoutes = api.route('/api/v1/home', homeRoutes)
 
+// 分开注册 silver-users 路由
+const silverUsersKnowledgesApiRoutes = api.route('/api/v1/silver-users/knowledges', silverUsersRoutes.knowledges)
+const silverUsersKnowledgeCategoriesApiRoutes = api.route('/api/v1/silver-users/knowledge-categories', silverUsersRoutes.knowledgeCategories)
+const silverUsersKnowledgeTagsApiRoutes = api.route('/api/v1/silver-users/knowledge-tags', silverUsersRoutes.knowledgeTags)
+const silverUsersKnowledgeStatsApiRoutes = api.route('/api/v1/silver-users/knowledge-stats', silverUsersRoutes.knowledgeStats)
+const silverUsersKnowledgeInteractionsApiRoutes = api.route('/api/v1/silver-users/knowledge-interactions', silverUsersRoutes.knowledgeInteractions)
+const silverUsersKnowledgeRankingsApiRoutes = api.route('/api/v1/silver-users/knowledge-rankings', silverUsersRoutes.knowledgeRankings)
+
 export type AuthRoutes = typeof authRoutes
 export type UserRoutes = typeof userRoutes
 export type RoleRoutes = typeof roleRoutes
@@ -88,11 +95,16 @@ export type ApplicationRoutes = typeof applicationApiRoutes
 export type FavoriteRoutes = typeof favoriteApiRoutes
 export type ViewRoutes = typeof viewApiRoutes
 export type CompanyImageRoutes = typeof companyImageApiRoutes
-export type SilverUsersRoutes = typeof silverUsersApiRoutes
 export type SilverTalentsRoutes = typeof silverTalentsApiRoutes
 export type ElderlyUniversityRoutes = typeof elderlyUniversityApiRoutes
 export type PolicyNewsRoutes = typeof policyNewsApiRoutes
 export type UserPreferenceRoutes = typeof userPreferenceApiRoutes
 export type HomeRoutes = typeof homeApiRoutes
+export type SilverUsersKnowledgesRoutes = typeof silverUsersKnowledgesApiRoutes
+export type SilverUsersKnowledgeCategoriesRoutes = typeof silverUsersKnowledgeCategoriesApiRoutes
+export type SilverUsersKnowledgeTagsRoutes = typeof silverUsersKnowledgeTagsApiRoutes
+export type SilverUsersKnowledgeStatsRoutes = typeof silverUsersKnowledgeStatsApiRoutes
+export type SilverUsersKnowledgeInteractionsRoutes = typeof silverUsersKnowledgeInteractionsApiRoutes
+export type SilverUsersKnowledgeRankingsRoutes = typeof silverUsersKnowledgeRankingsApiRoutes
 
 export default api

+ 8 - 10
src/server/api/silver-users/index.ts

@@ -1,4 +1,3 @@
-import { OpenAPIHono } from '@hono/zod-openapi';
 import knowledgesRoute from './knowledges';
 import knowledgeCategoriesRoute from './knowledge-categories';
 import knowledgeTagsRoute from './knowledge-tags';
@@ -6,12 +5,11 @@ import knowledgeStatsRoute from './knowledge-stats';
 import knowledgeInteractionsRoute from './knowledge-interactions';
 import knowledgeRankingRoute from './knowledges/ranking';
 
-const app = new OpenAPIHono()
-  .route('/knowledges', knowledgesRoute)
-  .route('/knowledge-categories', knowledgeCategoriesRoute)
-  .route('/knowledge-tags', knowledgeTagsRoute)
-  .route('/knowledge-stats', knowledgeStatsRoute)
-  .route('/knowledge-interactions', knowledgeInteractionsRoute)
-  .route('/knowledge-rankings', knowledgeRankingRoute);
-
-export default app;
+export const silverUsersRoutes = {
+  knowledges: knowledgesRoute,
+  knowledgeCategories: knowledgeCategoriesRoute,
+  knowledgeTags: knowledgeTagsRoute,
+  knowledgeStats: knowledgeStatsRoute,
+  knowledgeInteractions: knowledgeInteractionsRoute,
+  knowledgeRankings: knowledgeRankingRoute
+};