Переглянути джерело

feat(task): 增加 SMSMan 和 GlobalCode 平台支持

- 在任务服务中添加了对 SMSMan 和 GlobalCode 两个新平台的支持
- 创建了相应的 axios 实例以连接新平台的 API
- 实现了获取平台余额的功能,并进行了性能统计
- 优化了平台支持的结构,提高了代码的可维护性
wui 6 місяців тому
батько
коміт
48637a9a15
1 змінених файлів з 63 додано та 2 видалено
  1. 63 2
      src/task/task.service.ts

+ 63 - 2
src/task/task.service.ts

@@ -704,7 +704,9 @@ export class TaskService implements OnModuleInit {
             dashboard: 0,
             smspva: 0,
             smspva02: 0,
-            smstiger: 0
+            smstiger: 0,
+            smsman: 0,
+            globalcode: 0
         }
 
         // 验证平台是否支持
@@ -717,7 +719,7 @@ export class TaskService implements OnModuleInit {
         const tasks = []
 
         // 根据需要创建相应的 axios 实例
-        let xyzInstance, panelInstance, dashboardInstance, smspvaInstance, smstigerInstance
+        let xyzInstance, panelInstance, dashboardInstance, smspvaInstance, smstigerInstance, smsmanInstance, globalcodeInstance
 
         switch (platform) {
             case 'xyz':
@@ -746,6 +748,16 @@ export class TaskService implements OnModuleInit {
                     baseURL: 'https://api.tiger-sms.com/stubs/'
                 })
                 break
+            case 'smsman':
+                smsmanInstance = axios.create({
+                    baseURL: 'https://api.sms-man.com/control/'
+                })
+                break
+            case 'globalcode':
+                globalcodeInstance = axios.create({
+                    baseURL: 'https://api.globalsimc.com/serviceapi/'
+                })
+                break
         }
 
         if (platform === 'durian') {
@@ -964,6 +976,55 @@ export class TaskService implements OnModuleInit {
             )
         }
 
+        if (platform === 'smsman') {
+            tasks.push(
+                (async () => {
+                    const startTime = Date.now()
+                    perfLogs['smsman'] = { startTime }
+                    try {
+                        const smsmanRes = await smsmanInstance.get('get-balance', {
+                            params: {
+                                token: 'BFEjAMIAEsd8EhmyReGZyKxdGPolhpSx'
+                            }
+                        })
+                        if (smsmanRes.data && smsmanRes.data.balance) {
+                            res.smsman = parseFloat(smsmanRes.data.balance)
+                        }
+                    } catch (e) {
+                        Logger.warn(`smsman API调用失败: ${e.message}`, this.TAG)
+                    }
+                    perfLogs['smsman'].endTime = Date.now()
+                    perfLogs['smsman'].duration = perfLogs['smsman'].endTime - perfLogs['smsman'].startTime
+                    Logger.log(`API调用性能统计 - smsman: ${perfLogs['smsman'].duration}ms`, this.TAG)
+                })()
+            )
+        }
+
+        if (platform === 'globalcode') {
+            tasks.push(
+                (async () => {
+                    const startTime = Date.now()
+                    perfLogs['globalcode'] = { startTime }
+                    try {
+                        const globalcodeRes = await globalcodeInstance.get('getbalance/', {
+                            params: {
+                                token: '6555dc93c3fecf222ff4daea6a3697a6ee66a8d60ea47bdb2e19281e226f3b61'
+                            }
+                        })
+                        if (globalcodeRes.data.code === 1 && globalcodeRes.data.data) {
+                            // 移除 $ 符号并转换为数字
+                            res.globalcode = parseFloat(globalcodeRes.data.data.replace('$', ''))
+                        }
+                    } catch (e) {
+                        Logger.warn(`globalcode API调用失败: ${e.message}`, this.TAG)
+                    }
+                    perfLogs['globalcode'].endTime = Date.now()
+                    perfLogs['globalcode'].duration = perfLogs['globalcode'].endTime - perfLogs['globalcode'].startTime
+                    Logger.log(`API调用性能统计 - globalcode: ${perfLogs['globalcode'].duration}ms`, this.TAG)
+                })()
+            )
+        }
+
         await Promise.all(tasks)
 
         Logger.log(`API调用性能统计total: ${JSON.stringify(perfLogs)}`, this.TAG)