@dofe/infra-shared-services 0.1.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (153) hide show
  1. package/dist/email/dto/email.dto.d.ts +70 -0
  2. package/dist/email/dto/email.dto.d.ts.map +1 -0
  3. package/dist/email/dto/email.dto.js +58 -0
  4. package/dist/email/dto/email.dto.js.map +1 -0
  5. package/dist/email/email.module.d.ts +3 -0
  6. package/dist/email/email.module.d.ts.map +1 -0
  7. package/dist/email/email.module.js +38 -0
  8. package/dist/email/email.module.js.map +1 -0
  9. package/dist/email/email.service.d.ts +61 -0
  10. package/dist/email/email.service.d.ts.map +1 -0
  11. package/dist/email/email.service.js +191 -0
  12. package/dist/email/email.service.js.map +1 -0
  13. package/dist/email/index.d.ts +5 -0
  14. package/dist/email/index.d.ts.map +1 -0
  15. package/dist/email/index.js +26 -0
  16. package/dist/email/index.js.map +1 -0
  17. package/dist/file-storage/bucket-resolver.d.ts +174 -0
  18. package/dist/file-storage/bucket-resolver.d.ts.map +1 -0
  19. package/dist/file-storage/bucket-resolver.js +270 -0
  20. package/dist/file-storage/bucket-resolver.js.map +1 -0
  21. package/dist/file-storage/file-storage.factory.d.ts +183 -0
  22. package/dist/file-storage/file-storage.factory.d.ts.map +1 -0
  23. package/dist/file-storage/file-storage.factory.js +300 -0
  24. package/dist/file-storage/file-storage.factory.js.map +1 -0
  25. package/dist/file-storage/file-storage.module.d.ts +49 -0
  26. package/dist/file-storage/file-storage.module.d.ts.map +1 -0
  27. package/dist/file-storage/file-storage.module.js +74 -0
  28. package/dist/file-storage/file-storage.module.js.map +1 -0
  29. package/dist/file-storage/file-storage.service.d.ts +381 -0
  30. package/dist/file-storage/file-storage.service.d.ts.map +1 -0
  31. package/dist/file-storage/file-storage.service.js +598 -0
  32. package/dist/file-storage/file-storage.service.js.map +1 -0
  33. package/dist/file-storage/index.d.ts +43 -0
  34. package/dist/file-storage/index.d.ts.map +1 -0
  35. package/dist/file-storage/index.js +65 -0
  36. package/dist/file-storage/index.js.map +1 -0
  37. package/dist/file-storage/types.d.ts +187 -0
  38. package/dist/file-storage/types.d.ts.map +1 -0
  39. package/dist/file-storage/types.js +21 -0
  40. package/dist/file-storage/types.js.map +1 -0
  41. package/dist/index.d.ts +20 -0
  42. package/dist/index.d.ts.map +1 -0
  43. package/dist/index.js +35 -0
  44. package/dist/index.js.map +1 -0
  45. package/dist/ip-geo/continent-mapping.d.ts +31 -0
  46. package/dist/ip-geo/continent-mapping.d.ts.map +1 -0
  47. package/dist/ip-geo/continent-mapping.js +246 -0
  48. package/dist/ip-geo/continent-mapping.js.map +1 -0
  49. package/dist/ip-geo/index.d.ts +33 -0
  50. package/dist/ip-geo/index.d.ts.map +1 -0
  51. package/dist/ip-geo/index.js +41 -0
  52. package/dist/ip-geo/index.js.map +1 -0
  53. package/dist/ip-geo/ip-geo.module.d.ts +8 -0
  54. package/dist/ip-geo/ip-geo.module.d.ts.map +1 -0
  55. package/dist/ip-geo/ip-geo.module.js +34 -0
  56. package/dist/ip-geo/ip-geo.module.js.map +1 -0
  57. package/dist/ip-geo/ip-geo.service.d.ts +43 -0
  58. package/dist/ip-geo/ip-geo.service.d.ts.map +1 -0
  59. package/dist/ip-geo/ip-geo.service.js +153 -0
  60. package/dist/ip-geo/ip-geo.service.js.map +1 -0
  61. package/dist/ip-info/index.d.ts +7 -0
  62. package/dist/ip-info/index.d.ts.map +1 -0
  63. package/dist/ip-info/index.js +13 -0
  64. package/dist/ip-info/index.js.map +1 -0
  65. package/dist/ip-info/ip-info.client.d.ts +32 -0
  66. package/dist/ip-info/ip-info.client.d.ts.map +1 -0
  67. package/dist/ip-info/ip-info.client.js +73 -0
  68. package/dist/ip-info/ip-info.client.js.map +1 -0
  69. package/dist/ip-info/ip-info.module.d.ts +3 -0
  70. package/dist/ip-info/ip-info.module.d.ts.map +1 -0
  71. package/dist/ip-info/ip-info.module.js +45 -0
  72. package/dist/ip-info/ip-info.module.js.map +1 -0
  73. package/dist/ip-info/ip-info.service.d.ts +50 -0
  74. package/dist/ip-info/ip-info.service.d.ts.map +1 -0
  75. package/dist/ip-info/ip-info.service.js +177 -0
  76. package/dist/ip-info/ip-info.service.js.map +1 -0
  77. package/dist/ocr/index.d.ts +33 -0
  78. package/dist/ocr/index.d.ts.map +1 -0
  79. package/dist/ocr/index.js +53 -0
  80. package/dist/ocr/index.js.map +1 -0
  81. package/dist/ocr/ocr.module.d.ts +41 -0
  82. package/dist/ocr/ocr.module.d.ts.map +1 -0
  83. package/dist/ocr/ocr.module.js +61 -0
  84. package/dist/ocr/ocr.module.js.map +1 -0
  85. package/dist/ocr/ocr.service.d.ts +111 -0
  86. package/dist/ocr/ocr.service.d.ts.map +1 -0
  87. package/dist/ocr/ocr.service.js +214 -0
  88. package/dist/ocr/ocr.service.js.map +1 -0
  89. package/dist/sms/index.d.ts +5 -0
  90. package/dist/sms/index.d.ts.map +1 -0
  91. package/dist/sms/index.js +29 -0
  92. package/dist/sms/index.js.map +1 -0
  93. package/dist/sms/sms.factory.d.ts +140 -0
  94. package/dist/sms/sms.factory.d.ts.map +1 -0
  95. package/dist/sms/sms.factory.js +276 -0
  96. package/dist/sms/sms.factory.js.map +1 -0
  97. package/dist/sms/sms.module.d.ts +3 -0
  98. package/dist/sms/sms.module.d.ts.map +1 -0
  99. package/dist/sms/sms.module.js +38 -0
  100. package/dist/sms/sms.module.js.map +1 -0
  101. package/dist/sms/sms.service.d.ts +139 -0
  102. package/dist/sms/sms.service.d.ts.map +1 -0
  103. package/dist/sms/sms.service.js +278 -0
  104. package/dist/sms/sms.service.js.map +1 -0
  105. package/dist/sms/types.d.ts +204 -0
  106. package/dist/sms/types.d.ts.map +1 -0
  107. package/dist/sms/types.js +44 -0
  108. package/dist/sms/types.js.map +1 -0
  109. package/dist/streaming-asr/index.d.ts +45 -0
  110. package/dist/streaming-asr/index.d.ts.map +1 -0
  111. package/dist/streaming-asr/index.js +66 -0
  112. package/dist/streaming-asr/index.js.map +1 -0
  113. package/dist/streaming-asr/streaming-asr.module.d.ts +37 -0
  114. package/dist/streaming-asr/streaming-asr.module.d.ts.map +1 -0
  115. package/dist/streaming-asr/streaming-asr.module.js +59 -0
  116. package/dist/streaming-asr/streaming-asr.module.js.map +1 -0
  117. package/dist/streaming-asr/streaming-asr.service.d.ts +276 -0
  118. package/dist/streaming-asr/streaming-asr.service.d.ts.map +1 -0
  119. package/dist/streaming-asr/streaming-asr.service.js +1120 -0
  120. package/dist/streaming-asr/streaming-asr.service.js.map +1 -0
  121. package/dist/streaming-asr/types.d.ts +194 -0
  122. package/dist/streaming-asr/types.d.ts.map +1 -0
  123. package/dist/streaming-asr/types.js +8 -0
  124. package/dist/streaming-asr/types.js.map +1 -0
  125. package/dist/system-health/index.d.ts +7 -0
  126. package/dist/system-health/index.d.ts.map +1 -0
  127. package/dist/system-health/index.js +25 -0
  128. package/dist/system-health/index.js.map +1 -0
  129. package/dist/system-health/system-health.controller.d.ts +43 -0
  130. package/dist/system-health/system-health.controller.d.ts.map +1 -0
  131. package/dist/system-health/system-health.controller.js +86 -0
  132. package/dist/system-health/system-health.controller.js.map +1 -0
  133. package/dist/system-health/system-health.module.d.ts +3 -0
  134. package/dist/system-health/system-health.module.d.ts.map +1 -0
  135. package/dist/system-health/system-health.module.js +29 -0
  136. package/dist/system-health/system-health.module.js.map +1 -0
  137. package/dist/system-health/system-health.service.d.ts +14 -0
  138. package/dist/system-health/system-health.service.d.ts.map +1 -0
  139. package/dist/system-health/system-health.service.js +87 -0
  140. package/dist/system-health/system-health.service.js.map +1 -0
  141. package/dist/uploader/index.d.ts +3 -0
  142. package/dist/uploader/index.d.ts.map +1 -0
  143. package/dist/uploader/index.js +8 -0
  144. package/dist/uploader/index.js.map +1 -0
  145. package/dist/uploader/uploader.module.d.ts +3 -0
  146. package/dist/uploader/uploader.module.d.ts.map +1 -0
  147. package/dist/uploader/uploader.module.js +25 -0
  148. package/dist/uploader/uploader.module.js.map +1 -0
  149. package/dist/uploader/uploader.service.d.ts +86 -0
  150. package/dist/uploader/uploader.service.d.ts.map +1 -0
  151. package/dist/uploader/uploader.service.js +188 -0
  152. package/dist/uploader/uploader.service.js.map +1 -0
  153. package/package.json +51 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sms.factory.js","sourceRoot":"","sources":["../../src/sms/sms.factory.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ export declare class SmsServiceModule {
2
+ }
3
+ //# sourceMappingURL=sms.module.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sms.module.d.ts","sourceRoot":"","sources":["../../src/sms/sms.module.ts"],"names":[],"mappings":"AAaA,qBAWa,gBAAgB;CAAG"}
@@ -0,0 +1,38 @@
1
+ "use strict";
2
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
7
+ };
8
+ Object.defineProperty(exports, "__esModule", { value: true });
9
+ exports.SmsServiceModule = void 0;
10
+ /**
11
+ * SMS Service Module
12
+ *
13
+ * 职责:提供短信发送的业务逻辑服务
14
+ */
15
+ const common_1 = require("@nestjs/common");
16
+ const config_1 = require("@nestjs/config");
17
+ const axios_1 = require("@nestjs/axios");
18
+ const infra_redis_1 = require("@dofe/infra-redis");
19
+ const infra_rabbitmq_1 = require("@dofe/infra-rabbitmq");
20
+ const infra_clients_1 = require("@dofe/infra-clients");
21
+ const sms_service_1 = require("./sms.service");
22
+ let SmsServiceModule = class SmsServiceModule {
23
+ };
24
+ exports.SmsServiceModule = SmsServiceModule;
25
+ exports.SmsServiceModule = SmsServiceModule = __decorate([
26
+ (0, common_1.Module)({
27
+ imports: [
28
+ config_1.ConfigModule,
29
+ axios_1.HttpModule,
30
+ infra_redis_1.RedisModule,
31
+ infra_rabbitmq_1.RabbitmqModule,
32
+ infra_clients_1.VerifyModule,
33
+ ],
34
+ providers: [sms_service_1.SmsService],
35
+ exports: [sms_service_1.SmsService],
36
+ })
37
+ ], SmsServiceModule);
38
+ //# sourceMappingURL=sms.module.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sms.module.js","sourceRoot":"","sources":["../../src/sms/sms.module.ts"],"names":[],"mappings":";;;;;;;;;AAAA;;;;GAIG;AACH,2CAAwC;AACxC,2CAA8C;AAC9C,yCAA2C;AAC3C,mDAAgD;AAChD,yDAAsD;AACtD,uDAAmD;AACnD,+CAA2C;AAapC,IAAM,gBAAgB,GAAtB,MAAM,gBAAgB;CAAG,CAAA;AAAnB,4CAAgB;2BAAhB,gBAAgB;IAX5B,IAAA,eAAM,EAAC;QACN,OAAO,EAAE;YACP,qBAAY;YACZ,kBAAU;YACV,yBAAW;YACX,+BAAc;YACd,4BAAY;SACb;QACD,SAAS,EAAE,CAAC,wBAAU,CAAC;QACvB,OAAO,EAAE,CAAC,wBAAU,CAAC;KACtB,CAAC;GACW,gBAAgB,CAAG"}
@@ -0,0 +1,139 @@
1
+ /**
2
+ * @fileoverview SMS Service
3
+ * @module @app/shared-services/sms
4
+ *
5
+ * 职责:提供短信发送的业务逻辑服务
6
+ *
7
+ * 功能:
8
+ * - 验证码生成和验证
9
+ * - 短信队列管理
10
+ * - 发送频率限制
11
+ * - 多供应商支持(阿里云、腾讯云、火山引擎等)
12
+ *
13
+ * @example
14
+ * ```typescript
15
+ * // 发送验证码(通过队列)
16
+ * await smsService.processingSendSmsVerifyCode(
17
+ * { mobile: '13800138000' },
18
+ * { deviceid: 'xxx' },
19
+ * 'verify'
20
+ * );
21
+ *
22
+ * // 火山引擎:发送并校验验证码
23
+ * await smsService.sendVerifyCode('13800138000');
24
+ * const result = await smsService.checkVerifyCode('13800138000', '123456');
25
+ * ```
26
+ */
27
+ import { OnModuleInit } from '@nestjs/common';
28
+ import { Logger } from 'winston';
29
+ import { HttpService } from '@nestjs/axios';
30
+ import type { MobileAuth } from '@prisma/client';
31
+ import { RedisService } from '@dofe/infra-redis';
32
+ import { RabbitmqService } from '@dofe/infra-rabbitmq';
33
+ import { VerifyClient } from '@dofe/infra-clients';
34
+ import { PardxApp } from '@dofe/infra-common';
35
+ import { SmsVendor, SmsTemplate, SmsSendResult, VerifyCodeCheckResult } from './types';
36
+ export declare class SmsService implements OnModuleInit {
37
+ private readonly redis;
38
+ private readonly verifyService;
39
+ private readonly rabbitmq;
40
+ private readonly httpService;
41
+ private readonly logger;
42
+ /** SMS 客户端工厂 */
43
+ private factory;
44
+ constructor(redis: RedisService, verifyService: VerifyClient, rabbitmq: RabbitmqService, httpService: HttpService, logger: Logger);
45
+ onModuleInit(): void;
46
+ /**
47
+ * 初始化 SMS 客户端工厂
48
+ */
49
+ private initializeSmsClient;
50
+ /**
51
+ * 检查服务是否已初始化
52
+ */
53
+ get isInitialized(): boolean;
54
+ /**
55
+ * 获取当前供应商类型
56
+ */
57
+ get currentVendor(): SmsVendor | null;
58
+ /**
59
+ * 获取当前供应商显示名称
60
+ */
61
+ get currentVendorName(): string;
62
+ /**
63
+ * 检查是否为火山引擎供应商
64
+ */
65
+ get isVolcengine(): boolean;
66
+ /**
67
+ * 获取设备发送日志
68
+ *
69
+ * @param deviceId - 设备 ID
70
+ * @returns 发送日志数据,不存在返回 null
71
+ */
72
+ getDeviceSendLogger(deviceId: string): Promise<string | null>;
73
+ /**
74
+ * 设置设备发送日志(用于频率限制)
75
+ *
76
+ * @param deviceId - 设备 ID
77
+ * @param expire - 过期时间(秒),默认 30 秒
78
+ */
79
+ setDeviceSendLogger(deviceId: string, expire?: number): Promise<void>;
80
+ /**
81
+ * 检查设备是否在冷却期
82
+ *
83
+ * @param deviceId - 设备 ID
84
+ * @returns 是否在冷却期
85
+ */
86
+ isDeviceInCooldown(deviceId: string): Promise<boolean>;
87
+ /**
88
+ * 发送短信验证码(底层方法)
89
+ *
90
+ * @param mobile - 手机号码
91
+ * @param code - 验证码
92
+ * @param template - 短信模板
93
+ * @returns 发送结果
94
+ */
95
+ doSendSmsCode(mobile: string, code: string, template: SmsTemplate): Promise<SmsSendResult>;
96
+ /**
97
+ * 发送验证码(火山引擎自动生成验证码)
98
+ *
99
+ * 仅火山引擎供应商支持此功能
100
+ *
101
+ * @param phoneNumber - 手机号码
102
+ * @param templateId - 模板 ID,默认 'verify'
103
+ * @returns 发送结果
104
+ * @throws Error 如果当前供应商不是火山引擎
105
+ */
106
+ sendVerifyCode(phoneNumber: string, templateId?: string): Promise<any>;
107
+ /**
108
+ * 校验验证码(火山引擎)
109
+ *
110
+ * 仅火山引擎供应商支持此功能
111
+ *
112
+ * @param phoneNumber - 手机号码
113
+ * @param code - 验证码
114
+ * @param templateId - 模板 ID,默认 'verify'
115
+ * @returns 校验结果
116
+ * @throws Error 如果当前供应商不是火山引擎
117
+ */
118
+ checkVerifyCode(phoneNumber: string, code: string, templateId?: string): Promise<VerifyCodeCheckResult>;
119
+ /**
120
+ * 处理发送短信验证码请求
121
+ *
122
+ * 包含完整的业务逻辑:
123
+ * 1. 验证模板存在
124
+ * 2. 检查发送频率限制
125
+ * 3. 生成验证码
126
+ * 4. 发送到消息队列(数据库写入由消费者处理)
127
+ *
128
+ * @param mobileAccount - 手机账户信息
129
+ * @param deviceInfo - 设备信息
130
+ * @param templateId - 模板 ID,默认 'verify'
131
+ * @throws ApiException 如果模板不存在或发送太频繁
132
+ */
133
+ processingSendSmsVerifyCode(mobileAccount: Partial<MobileAuth>, deviceInfo: PardxApp.HeaderData, templateId?: string): Promise<void>;
134
+ /**
135
+ * 确保服务已初始化
136
+ */
137
+ private ensureInitialized;
138
+ }
139
+ //# sourceMappingURL=sms.service.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sms.service.d.ts","sourceRoot":"","sources":["../../src/sms/sms.service.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,OAAO,EAAsB,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAElE,OAAO,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AACjC,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAEjD,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACvD,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAGnD,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAK9C,OAAO,EACL,SAAS,EACT,WAAW,EACX,aAAa,EACb,qBAAqB,EAItB,MAAM,SAAS,CAAC;AAOjB,qBACa,UAAW,YAAW,YAAY;IAK3C,OAAO,CAAC,QAAQ,CAAC,KAAK;IACtB,OAAO,CAAC,QAAQ,CAAC,aAAa;IAC9B,OAAO,CAAC,QAAQ,CAAC,QAAQ;IACzB,OAAO,CAAC,QAAQ,CAAC,WAAW;IACK,OAAO,CAAC,QAAQ,CAAC,MAAM;IAR1D,gBAAgB;IAChB,OAAO,CAAC,OAAO,CAAiC;gBAG7B,KAAK,EAAE,YAAY,EACnB,aAAa,EAAE,YAAY,EAC3B,QAAQ,EAAE,eAAe,EACzB,WAAW,EAAE,WAAW,EACS,MAAM,EAAE,MAAM;IAOlE,YAAY,IAAI,IAAI;IAIpB;;OAEG;IACH,OAAO,CAAC,mBAAmB;IAmC3B;;OAEG;IACH,IAAI,aAAa,IAAI,OAAO,CAE3B;IAED;;OAEG;IACH,IAAI,aAAa,IAAI,SAAS,GAAG,IAAI,CAEpC;IAED;;OAEG;IACH,IAAI,iBAAiB,IAAI,MAAM,CAE9B;IAED;;OAEG;IACH,IAAI,YAAY,IAAI,OAAO,CAE1B;IAMD;;;;;OAKG;IACG,mBAAmB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IAInE;;;;;OAKG;IACG,mBAAmB,CACvB,QAAQ,EAAE,MAAM,EAChB,MAAM,GAAE,MAA+B,GACtC,OAAO,CAAC,IAAI,CAAC;IAIhB;;;;;OAKG;IACG,kBAAkB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAS5D;;;;;;;OAOG;IACG,aAAa,CACjB,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,MAAM,EACZ,QAAQ,EAAE,WAAW,GACpB,OAAO,CAAC,aAAa,CAAC;IAKzB;;;;;;;;;OASG;IACG,cAAc,CAClB,WAAW,EAAE,MAAM,EACnB,UAAU,GAAE,MAAiB,GAC5B,OAAO,CAAC,GAAG,CAAC;IAKf;;;;;;;;;;OAUG;IACG,eAAe,CACnB,WAAW,EAAE,MAAM,EACnB,IAAI,EAAE,MAAM,EACZ,UAAU,GAAE,MAAiB,GAC5B,OAAO,CAAC,qBAAqB,CAAC;IASjC;;;;;;;;;;;;;OAaG;IACG,2BAA2B,CAC/B,aAAa,EAAE,OAAO,CAAC,UAAU,CAAC,EAClC,UAAU,EAAE,QAAQ,CAAC,UAAU,EAC/B,UAAU,GAAE,MAAiB,GAC5B,OAAO,CAAC,IAAI,CAAC;IA2ChB;;OAEG;IACH,OAAO,CAAC,iBAAiB;CAK1B"}
@@ -0,0 +1,278 @@
1
+ "use strict";
2
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
7
+ };
8
+ var __metadata = (this && this.__metadata) || function (k, v) {
9
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
10
+ };
11
+ var __param = (this && this.__param) || function (paramIndex, decorator) {
12
+ return function (target, key) { decorator(target, key, paramIndex); }
13
+ };
14
+ var __importDefault = (this && this.__importDefault) || function (mod) {
15
+ return (mod && mod.__esModule) ? mod : { "default": mod };
16
+ };
17
+ Object.defineProperty(exports, "__esModule", { value: true });
18
+ exports.SmsService = void 0;
19
+ /**
20
+ * @fileoverview SMS Service
21
+ * @module @app/shared-services/sms
22
+ *
23
+ * 职责:提供短信发送的业务逻辑服务
24
+ *
25
+ * 功能:
26
+ * - 验证码生成和验证
27
+ * - 短信队列管理
28
+ * - 发送频率限制
29
+ * - 多供应商支持(阿里云、腾讯云、火山引擎等)
30
+ *
31
+ * @example
32
+ * ```typescript
33
+ * // 发送验证码(通过队列)
34
+ * await smsService.processingSendSmsVerifyCode(
35
+ * { mobile: '13800138000' },
36
+ * { deviceid: 'xxx' },
37
+ * 'verify'
38
+ * );
39
+ *
40
+ * // 火山引擎:发送并校验验证码
41
+ * await smsService.sendVerifyCode('13800138000');
42
+ * const result = await smsService.checkVerifyCode('13800138000', '123456');
43
+ * ```
44
+ */
45
+ const common_1 = require("@nestjs/common");
46
+ const nest_winston_1 = require("nest-winston");
47
+ const winston_1 = require("winston");
48
+ const axios_1 = require("@nestjs/axios");
49
+ const infra_redis_1 = require("@dofe/infra-redis");
50
+ const infra_rabbitmq_1 = require("@dofe/infra-rabbitmq");
51
+ const infra_clients_1 = require("@dofe/infra-clients");
52
+ const infra_contracts_1 = require("@dofe/infra-contracts");
53
+ const infra_common_1 = require("@dofe/infra-common");
54
+ const infra_common_2 = require("@dofe/infra-common");
55
+ const sms_factory_1 = require("./sms.factory");
56
+ const types_1 = require("./types");
57
+ const environment_util_1 = __importDefault(require("@dofe/infra-utils/environment.util"));
58
+ // ============================================================================
59
+ // SMS Service
60
+ // ============================================================================
61
+ let SmsService = class SmsService {
62
+ redis;
63
+ verifyService;
64
+ rabbitmq;
65
+ httpService;
66
+ logger;
67
+ /** SMS 客户端工厂 */
68
+ factory = null;
69
+ constructor(redis, verifyService, rabbitmq, httpService, logger) {
70
+ this.redis = redis;
71
+ this.verifyService = verifyService;
72
+ this.rabbitmq = rabbitmq;
73
+ this.httpService = httpService;
74
+ this.logger = logger;
75
+ }
76
+ // ========================================================================
77
+ // Lifecycle
78
+ // ========================================================================
79
+ onModuleInit() {
80
+ this.initializeSmsClient();
81
+ }
82
+ /**
83
+ * 初始化 SMS 客户端工厂
84
+ */
85
+ initializeSmsClient() {
86
+ const secretConfig = (0, infra_common_2.getKeysConfig)()?.sms;
87
+ if (!secretConfig) {
88
+ this.logger.warn('SMS config not found, SMS service disabled');
89
+ return;
90
+ }
91
+ try {
92
+ this.factory = new sms_factory_1.SmsClientFactory({
93
+ logger: this.logger,
94
+ httpService: this.httpService,
95
+ redis: this.redis,
96
+ }, {
97
+ defaultVendor: secretConfig.default,
98
+ providers: secretConfig.providers,
99
+ });
100
+ if (environment_util_1.default.isProduction()) {
101
+ this.logger.info(`SMS service initialized with vendor: ${this.factory.currentVendorName}`);
102
+ }
103
+ }
104
+ catch (error) {
105
+ this.logger.error('Failed to initialize SMS client', { error });
106
+ }
107
+ }
108
+ // ========================================================================
109
+ // Public Accessors
110
+ // ========================================================================
111
+ /**
112
+ * 检查服务是否已初始化
113
+ */
114
+ get isInitialized() {
115
+ return this.factory?.isInitialized ?? false;
116
+ }
117
+ /**
118
+ * 获取当前供应商类型
119
+ */
120
+ get currentVendor() {
121
+ return this.factory?.currentVendor ?? null;
122
+ }
123
+ /**
124
+ * 获取当前供应商显示名称
125
+ */
126
+ get currentVendorName() {
127
+ return this.factory?.currentVendorName ?? 'Unknown';
128
+ }
129
+ /**
130
+ * 检查是否为火山引擎供应商
131
+ */
132
+ get isVolcengine() {
133
+ return this.factory?.isVolcengine ?? false;
134
+ }
135
+ // ========================================================================
136
+ // Device Rate Limiting
137
+ // ========================================================================
138
+ /**
139
+ * 获取设备发送日志
140
+ *
141
+ * @param deviceId - 设备 ID
142
+ * @returns 发送日志数据,不存在返回 null
143
+ */
144
+ async getDeviceSendLogger(deviceId) {
145
+ return await this.redis.getData(types_1.DEVICE_SEND_LOGGER_KEY, deviceId);
146
+ }
147
+ /**
148
+ * 设置设备发送日志(用于频率限制)
149
+ *
150
+ * @param deviceId - 设备 ID
151
+ * @param expire - 过期时间(秒),默认 30 秒
152
+ */
153
+ async setDeviceSendLogger(deviceId, expire = types_1.DEFAULT_SEND_FREQUENCY) {
154
+ await this.redis.saveData(types_1.DEVICE_SEND_LOGGER_KEY, deviceId, '1', expire);
155
+ }
156
+ /**
157
+ * 检查设备是否在冷却期
158
+ *
159
+ * @param deviceId - 设备 ID
160
+ * @returns 是否在冷却期
161
+ */
162
+ async isDeviceInCooldown(deviceId) {
163
+ const data = await this.getDeviceSendLogger(deviceId);
164
+ return data !== null;
165
+ }
166
+ // ========================================================================
167
+ // SMS Operations - Core
168
+ // ========================================================================
169
+ /**
170
+ * 发送短信验证码(底层方法)
171
+ *
172
+ * @param mobile - 手机号码
173
+ * @param code - 验证码
174
+ * @param template - 短信模板
175
+ * @returns 发送结果
176
+ */
177
+ async doSendSmsCode(mobile, code, template) {
178
+ this.ensureInitialized();
179
+ return await this.factory.sendSmsCode(mobile, code, template);
180
+ }
181
+ /**
182
+ * 发送验证码(火山引擎自动生成验证码)
183
+ *
184
+ * 仅火山引擎供应商支持此功能
185
+ *
186
+ * @param phoneNumber - 手机号码
187
+ * @param templateId - 模板 ID,默认 'verify'
188
+ * @returns 发送结果
189
+ * @throws Error 如果当前供应商不是火山引擎
190
+ */
191
+ async sendVerifyCode(phoneNumber, templateId = 'verify') {
192
+ this.ensureInitialized();
193
+ return await this.factory.sendVerifyCode(phoneNumber, templateId);
194
+ }
195
+ /**
196
+ * 校验验证码(火山引擎)
197
+ *
198
+ * 仅火山引擎供应商支持此功能
199
+ *
200
+ * @param phoneNumber - 手机号码
201
+ * @param code - 验证码
202
+ * @param templateId - 模板 ID,默认 'verify'
203
+ * @returns 校验结果
204
+ * @throws Error 如果当前供应商不是火山引擎
205
+ */
206
+ async checkVerifyCode(phoneNumber, code, templateId = 'verify') {
207
+ this.ensureInitialized();
208
+ return await this.factory.checkVerifyCode(phoneNumber, code, templateId);
209
+ }
210
+ // ========================================================================
211
+ // SMS Operations - Business Logic
212
+ // ========================================================================
213
+ /**
214
+ * 处理发送短信验证码请求
215
+ *
216
+ * 包含完整的业务逻辑:
217
+ * 1. 验证模板存在
218
+ * 2. 检查发送频率限制
219
+ * 3. 生成验证码
220
+ * 4. 发送到消息队列(数据库写入由消费者处理)
221
+ *
222
+ * @param mobileAccount - 手机账户信息
223
+ * @param deviceInfo - 设备信息
224
+ * @param templateId - 模板 ID,默认 'verify'
225
+ * @throws ApiException 如果模板不存在或发送太频繁
226
+ */
227
+ async processingSendSmsVerifyCode(mobileAccount, deviceInfo, templateId = 'verify') {
228
+ this.ensureInitialized();
229
+ // 1. 验证模板存在
230
+ const template = this.factory.getTemplate(templateId);
231
+ if (!template) {
232
+ throw (0, infra_common_1.apiError)(infra_contracts_1.CommonErrorCode.TemplateNotFound);
233
+ }
234
+ // 2. 检查发送频率限制
235
+ const isInCooldown = await this.isDeviceInCooldown(deviceInfo.deviceid);
236
+ if (isInCooldown) {
237
+ throw (0, infra_common_1.apiError)(infra_contracts_1.CommonErrorCode.TooFrequent);
238
+ }
239
+ // 3. 设置频率限制
240
+ const templateMeta = this.factory.getTemplateMeta(templateId);
241
+ const frequency = templateMeta?.frequency ?? types_1.DEFAULT_SEND_FREQUENCY;
242
+ const codeExpire = templateMeta?.codeExpire ?? types_1.DEFAULT_CODE_EXPIRE;
243
+ await this.setDeviceSendLogger(deviceInfo.deviceid, frequency);
244
+ // 4. 生成验证码
245
+ const code = await this.verifyService.generateMobileCode(mobileAccount.mobile, codeExpire);
246
+ // 5. 发送到消息队列(数据库写入由消费者处理)
247
+ await this.rabbitmq.sendMessageToRabbitMQ('smsSend', {
248
+ mobile: mobileAccount.mobile,
249
+ code,
250
+ templateId,
251
+ metadata: {
252
+ deviceId: deviceInfo.deviceid,
253
+ },
254
+ });
255
+ }
256
+ // ========================================================================
257
+ // Private Helpers
258
+ // ========================================================================
259
+ /**
260
+ * 确保服务已初始化
261
+ */
262
+ ensureInitialized() {
263
+ if (!this.factory?.isInitialized) {
264
+ throw new Error('SMS service not initialized. Check SMS configuration.');
265
+ }
266
+ }
267
+ };
268
+ exports.SmsService = SmsService;
269
+ exports.SmsService = SmsService = __decorate([
270
+ (0, common_1.Injectable)(),
271
+ __param(4, (0, common_1.Inject)(nest_winston_1.WINSTON_MODULE_PROVIDER)),
272
+ __metadata("design:paramtypes", [infra_redis_1.RedisService,
273
+ infra_clients_1.VerifyClient,
274
+ infra_rabbitmq_1.RabbitmqService,
275
+ axios_1.HttpService,
276
+ winston_1.Logger])
277
+ ], SmsService);
278
+ //# sourceMappingURL=sms.service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sms.service.js","sourceRoot":"","sources":["../../src/sms/sms.service.ts"],"names":[],"mappings":"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"}