orderClient.ts 2.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576
  1. import { adminOrderRoutes, adminOrderItemsRoutes, adminRefundsRoutes } from '@d8d/orders-module';
  2. import { rpcClient } from '@d8d/shared-ui-components/utils/hc'
  3. class OrderClientManager {
  4. private static instance: OrderClientManager;
  5. private adminOrderClient: ReturnType<typeof rpcClient<typeof adminOrderRoutes>> | null = null;
  6. private adminOrderItemsClient: ReturnType<typeof rpcClient<typeof adminOrderItemsRoutes>> | null = null;
  7. private adminRefundsClient: ReturnType<typeof rpcClient<typeof adminRefundsRoutes>> | null = null;
  8. private constructor() {}
  9. public static getInstance(): OrderClientManager {
  10. if (!OrderClientManager.instance) {
  11. OrderClientManager.instance = new OrderClientManager();
  12. }
  13. return OrderClientManager.instance;
  14. }
  15. // 初始化管理员订单客户端
  16. public initAdminOrderClient(baseUrl: string = '/'): ReturnType<typeof rpcClient<typeof adminOrderRoutes>> {
  17. return this.adminOrderClient = rpcClient<typeof adminOrderRoutes>(baseUrl);
  18. }
  19. // 初始化管理员订单商品客户端
  20. public initAdminOrderItemsClient(baseUrl: string = '/'): ReturnType<typeof rpcClient<typeof adminOrderItemsRoutes>> {
  21. return this.adminOrderItemsClient = rpcClient<typeof adminOrderItemsRoutes>(baseUrl);
  22. }
  23. // 初始化管理员退款客户端
  24. public initAdminRefundsClient(baseUrl: string = '/'): ReturnType<typeof rpcClient<typeof adminRefundsRoutes>> {
  25. return this.adminRefundsClient = rpcClient<typeof adminRefundsRoutes>(baseUrl);
  26. }
  27. // 获取管理员订单客户端实例
  28. public getAdminOrderClient(): ReturnType<typeof rpcClient<typeof adminOrderRoutes>> {
  29. if (!this.adminOrderClient) {
  30. return this.initAdminOrderClient()
  31. }
  32. return this.adminOrderClient;
  33. }
  34. // 获取管理员订单商品客户端实例
  35. public getAdminOrderItemsClient(): ReturnType<typeof rpcClient<typeof adminOrderItemsRoutes>> {
  36. if (!this.adminOrderItemsClient) {
  37. return this.initAdminOrderItemsClient()
  38. }
  39. return this.adminOrderItemsClient;
  40. }
  41. // 获取管理员退款客户端实例
  42. public getAdminRefundsClient(): ReturnType<typeof rpcClient<typeof adminRefundsRoutes>> {
  43. if (!this.adminRefundsClient) {
  44. return this.initAdminRefundsClient()
  45. }
  46. return this.adminRefundsClient;
  47. }
  48. // 重置所有客户端(用于测试或重新初始化)
  49. public reset(): void {
  50. this.adminOrderClient = null;
  51. this.adminOrderItemsClient = null;
  52. this.adminRefundsClient = null;
  53. }
  54. }
  55. // 导出单例实例
  56. const orderClientManager = OrderClientManager.getInstance();
  57. // 导出默认客户端实例(延迟初始化)
  58. export const adminOrderClient = orderClientManager.getAdminOrderClient()
  59. export const adminOrderItemsClient = orderClientManager.getAdminOrderItemsClient()
  60. export const adminRefundsClient = orderClientManager.getAdminRefundsClient()
  61. export {
  62. orderClientManager
  63. }