Przeglądaj źródła

refactor(rcs-number): 优化号码获取流程

- 移除 smspva.service.ts 中的号码重复检查逻辑
- 在 rcs-number.service.ts 中添加通用的号码重复检查方法
- 仅在使用 smspva 或 smspva02 渠道时进行号码重复检查
wui 6 miesięcy temu
rodzic
commit
549e515ca7

+ 2 - 15
src/rcs-number/impl/smspva.service.ts

@@ -1,9 +1,7 @@
 import { GetNumberResponse, GetNumberService } from './get-number-service'
 import { RcsNumberSource } from '../entities/rcs-number.entity'
 import axios from 'axios'
-import { InternalServerErrorException, Logger, ServiceUnavailableException } from '@nestjs/common'
-import { Repository } from 'typeorm'
-import { RcsNumber } from '../entities/rcs-number.entity'
+import { InternalServerErrorException, Logger } from '@nestjs/common'
 
 const API_KEY01 = 'uNW56fGr0zstfs87Xn0e1l2gCYVnb1'
 const API_KEY02 = 'rTTL8pZtKkQ60zjU82bvbMEP7G6XGU'
@@ -24,13 +22,11 @@ const countryMap = {
 export class smspva extends GetNumberService {
     source: RcsNumberSource
     apikey: string
-    rcsNumberRepository: Repository<RcsNumber>
 
-    constructor(key: string, source: RcsNumberSource, rcsNumberRepository: Repository<RcsNumber>) {
+    constructor(key: string, source: RcsNumberSource) {
         super()
         this.apikey = key
         this.source = source
-        this.rcsNumberRepository = rcsNumberRepository
     }
 
     async getNumber(country: string, num?: number): Promise<GetNumberResponse> {
@@ -48,15 +44,6 @@ export class smspva extends GetNumberService {
             throw new InternalServerErrorException(res.data.error.description)
         }
 
-        // 曾经调用过的号码
-        const existingNumber = await this.rcsNumberRepository.findOneBy({
-            number: res.data.data.phoneNumber
-        })
-        if (existingNumber) {
-            await this.blockNumber(res.data.data.orderId)
-            throw new ServiceUnavailableException(`该号码已存在,无效号码: ${res.data.data.phoneNumber}`)
-        }
-
         return {
             number: res.data.data.phoneNumber,
             orderId: res.data.data.orderId,

+ 15 - 0
src/rcs-number/rcs-number.service.ts

@@ -236,6 +236,9 @@ export class RcsNumberService {
         }
         const rawNumber = res.number
         res.number = checkAndFormatNumber(operatorConfig.country, res.number, res.operatorName)
+        if (await this.checkForDuplicateNumbers(res, channel.source)) {
+            throw new ServiceUnavailableException(`该号码已存在,无效号码: ${res.number}`)
+        }
         const mapTo = matchOperator(res.operatorCode, operatorConfig)
         if (!mapTo) {
             throw new ServiceUnavailableException(
@@ -387,6 +390,18 @@ export class RcsNumberService {
         }
     }
 
+    async checkForDuplicateNumbers(res: GetNumberResponse, channel: RcsNumberSource) {
+        if (channel === RcsNumberSource.smspva || channel === RcsNumberSource.smspva02) {
+            const existingNumber = await this.rcsNumberRepository.findOneBy({
+                number: res.number
+            })
+            if (existingNumber) {
+                return true
+            }
+        }
+        return false
+    }
+
     @Cron('0/5 * * * * *')
     async getMessage() {
         const numbers = await this.rcsNumberRepository.findBy({