|
@@ -1,7 +1,9 @@
|
|
|
import { GetNumberResponse, GetNumberService } from './get-number-service'
|
|
import { GetNumberResponse, GetNumberService } from './get-number-service'
|
|
|
import { RcsNumberSource } from '../entities/rcs-number.entity'
|
|
import { RcsNumberSource } from '../entities/rcs-number.entity'
|
|
|
import axios from 'axios'
|
|
import axios from 'axios'
|
|
|
-import { InternalServerErrorException, Logger } from '@nestjs/common'
|
|
|
|
|
|
|
+import { InternalServerErrorException, Logger, ServiceUnavailableException } from '@nestjs/common'
|
|
|
|
|
+import { Repository } from 'typeorm'
|
|
|
|
|
+import { RcsNumber } from '../entities/rcs-number.entity'
|
|
|
|
|
|
|
|
const API_KEY01 = 'uNW56fGr0zstfs87Xn0e1l2gCYVnb1'
|
|
const API_KEY01 = 'uNW56fGr0zstfs87Xn0e1l2gCYVnb1'
|
|
|
const API_KEY02 = 'rTTL8pZtKkQ60zjU82bvbMEP7G6XGU'
|
|
const API_KEY02 = 'rTTL8pZtKkQ60zjU82bvbMEP7G6XGU'
|
|
@@ -21,13 +23,14 @@ const countryMap = {
|
|
|
|
|
|
|
|
export class smspva extends GetNumberService {
|
|
export class smspva extends GetNumberService {
|
|
|
source: RcsNumberSource
|
|
source: RcsNumberSource
|
|
|
-
|
|
|
|
|
apikey: string
|
|
apikey: string
|
|
|
|
|
+ rcsNumberRepository: Repository<RcsNumber>
|
|
|
|
|
|
|
|
- constructor(key: string, source: RcsNumberSource) {
|
|
|
|
|
|
|
+ constructor(key: string, source: RcsNumberSource, rcsNumberRepository: Repository<RcsNumber>) {
|
|
|
super()
|
|
super()
|
|
|
this.apikey = key
|
|
this.apikey = key
|
|
|
this.source = source
|
|
this.source = source
|
|
|
|
|
+ this.rcsNumberRepository = rcsNumberRepository
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
async getNumber(country: string, num?: number): Promise<GetNumberResponse> {
|
|
async getNumber(country: string, num?: number): Promise<GetNumberResponse> {
|
|
@@ -45,6 +48,15 @@ export class smspva extends GetNumberService {
|
|
|
throw new InternalServerErrorException(res.data.error.description)
|
|
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 {
|
|
return {
|
|
|
number: res.data.data.phoneNumber,
|
|
number: res.data.data.phoneNumber,
|
|
|
orderId: res.data.data.orderId,
|
|
orderId: res.data.data.orderId,
|
|
@@ -83,7 +95,21 @@ export class smspva extends GetNumberService {
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
- async blockNumber(number: string) {}
|
|
|
|
|
|
|
+ async blockNumber(orderId: string) {
|
|
|
|
|
+ try {
|
|
|
|
|
+ await axiosInstance.put(
|
|
|
|
|
+ `blocknumber/${orderId}`,
|
|
|
|
|
+ {},
|
|
|
|
|
+ {
|
|
|
|
|
+ headers: {
|
|
|
|
|
+ apikey: this.apikey
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ )
|
|
|
|
|
+ } catch (error) {
|
|
|
|
|
+ Logger.error(`block number ${orderId} failed`, error)
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
|
|
|
async cacheNumber(country: string, size: number) {
|
|
async cacheNumber(country: string, size: number) {
|
|
|
return null
|
|
return null
|