wuyi 1 jaar geleden
bovenliggende
commit
69d36f17fd

+ 3 - 1
src/rcs-number/entities/rcs-number.entity.ts

@@ -2,6 +2,7 @@ import { Column, CreateDateColumn, Entity, PrimaryGeneratedColumn } from 'typeor
 import { JsonTransformer } from '../../transformers/json.transformer'
 import { Exclude } from 'class-transformer'
 import { firefox } from '../impl/firefox.service'
+import { d38 } from '../impl/d38.service'
 
 export enum RcsNumberStatus {
     PENDING = 'pending',
@@ -15,7 +16,8 @@ export enum RcsNumberSource {
     mwze167 = 'mwze167',
     durian = 'durian',
     i18nvc = 'i18nvc',
-    firefox = 'firefox'
+    firefox = 'firefox',
+    d38 = 'd38'
 }
 
 @Entity()

+ 55 - 0
src/rcs-number/impl/d38.service.ts

@@ -0,0 +1,55 @@
+import axios from 'axios'
+import { GetNumberService, GetNumberResponse } from './get-number-service'
+import { RcsNumberSource } from '../entities/rcs-number.entity'
+
+const token = '32c24d0905b38c0cc76d1fb07acdd9020012'
+
+const axiosInstance = axios.create({
+    baseURL: 'http://38.47.236.56:8888/'
+})
+
+
+export class d38 extends GetNumberService {
+    source: RcsNumberSource = RcsNumberSource.d38
+
+    async getNumber(country: string): Promise<GetNumberResponse> {
+        if (country !== 'MA') {
+            throw new Error('Platform d38 only support MA.')
+        }
+        const res = await axiosInstance.get('getd3imsiccid.asp', {
+            params: {
+                token
+            }
+        })
+        let result = res.data
+
+        const parts = result.split('|').map(part => part.trim())
+
+        const code = parts[0]
+        if (code !== '1') {
+            throw new Error('Platform d38 get number error.')
+        }
+
+        const number = parts[1]
+        return {
+            number: number,
+            orderId: number,
+            operatorCode: '',
+            rawResponse: parts
+        }
+    }
+
+    async reetriveMessage(orderId: string): Promise<string> {
+        const res = await axiosInstance.get('getd3smscode.asp', {
+            params: {
+                token,
+                tel: orderId,
+                mtype: 'Google'
+            }
+        })
+        const parts = res.data.split('|').map(part => part.trim())
+        if (parts[0] === '1') {
+            return parts[1].replace(/^\(\d+\)/, '')
+        }
+    }
+}

+ 4 - 2
src/rcs-number/rcs-number.module.ts

@@ -11,11 +11,13 @@ import { TaskModule } from 'src/task/task.module'
 import { ChannelModule } from 'src/channel/channel.module'
 import { i18nvc } from './impl/i18nvc.service'
 import { firefox } from './impl/firefox.service'
+import { d38 } from './impl/d38.service'
 
 @Module({
     imports: [TypeOrmModule.forFeature([RcsNumber]), DeviceModule, OperaterConfigModule, TaskModule, ChannelModule],
-    providers: [RcsNumberService, mwze167, durian, i18nvc, firefox],
+    providers: [RcsNumberService, mwze167, durian, i18nvc, firefox, d38],
     controllers: [RcsNumberController],
     exports: [RcsNumberService]
 })
-export class RcsNumberModule {}
+export class RcsNumberModule {
+}

+ 10 - 2
src/rcs-number/rcs-number.service.ts

@@ -20,6 +20,7 @@ import { GetNumberService } from './impl/get-number-service'
 import { ChannelService } from '../channel/channel.service'
 import { i18nvc } from './impl/i18nvc.service'
 import { firefox } from './impl/firefox.service'
+import { d38 } from './impl/d38.service'
 
 @Injectable()
 export class RcsNumberService {
@@ -35,7 +36,8 @@ export class RcsNumberService {
         private mwze167: mwze167,
         private durian: durian,
         private i18nvc: i18nvc,
-        private firefox: firefox
+        private firefox: firefox,
+        private d38: d38
     ) {
     }
 
@@ -115,6 +117,9 @@ export class RcsNumberService {
             case RcsNumberSource.firefox:
                 numberService = this.firefox
                 break
+            case RcsNumberSource.d38:
+                numberService = this.d38
+                break
             default:
                 throw new Error('不支持的短信通道')
         }
@@ -173,7 +178,7 @@ export class RcsNumberService {
             try {
                 let msg: string
 
-                switch (number.from){
+                switch (number.from) {
                     case RcsNumberSource.mwze167:
                         msg = await this.mwze167.reetriveMessage(number.orderId)
                         break
@@ -186,6 +191,9 @@ export class RcsNumberService {
                     case RcsNumberSource.firefox:
                         msg = await this.firefox.reetriveMessage(number.orderId)
                         break
+                    case RcsNumberSource.d38:
+                        msg = await this.d38.reetriveMessage(number.orderId)
+                        break
                     default:
                 }