wuyi 1 жил өмнө
parent
commit
5760812be2

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

@@ -10,6 +10,7 @@ export enum RcsNumberStatus {
     PENDING = 'pending',
     SUCCESS = 'success',
     EXPIRED = 'expired',
+    BLACK = 'black',
     ERROR = 'error'
 }
 

+ 38 - 7
src/rcs-number/impl/durian.service.ts

@@ -1,6 +1,6 @@
 import axios from 'axios'
 import { GetNumberService, GetNumberResponse } from './get-number-service'
-import { RcsNumberSource } from '../entities/rcs-number.entity'
+import { RcsNumber, RcsNumberSource, RcsNumberStatus } from '../entities/rcs-number.entity'
 import { InternalServerErrorException } from '@nestjs/common'
 import * as mcc_mnc_list from 'mcc-mnc-list'
 
@@ -76,14 +76,10 @@ export class durian extends GetNumberService {
 
     async reetriveMessage(orderId: string, num?: number): Promise<string> {
 
-        const finalUser = user[Math.floor(Math.random() * 3)]
-        const name = finalUser.name
-        const ApiKey = finalUser.ApiKey
-
         const { data } = await durianInstance.get('getMsg', {
             params: {
-                name,
-                ApiKey,
+                name: name1,
+                ApiKey: ApiKey1,
                 pn: orderId,
                 pid: pid,
                 serial: 2
@@ -93,4 +89,39 @@ export class durian extends GetNumberService {
             return `Your Messenger verification code is G-${data.data}`
         }
     }
+
+    async addBlack(numbers: RcsNumber[]) {
+        const blackList = []
+        for (let rcsNumber of numbers) {
+            // 每隔2s
+            await new Promise(resolve => setTimeout(resolve, 2000))
+            try {
+                const number = '+' + rcsNumber.areaCode + rcsNumber.number
+                const { data } = await durianInstance.get('addBlack', {
+                    params: {
+                        name: name1,
+                        ApiKey: ApiKey1,
+                        pn: number,
+                        pid: pid
+                    }
+                })
+                if (data.code === 200) {
+                    rcsNumber.id = null
+                    rcsNumber.createdAt = new Date()
+                    rcsNumber.expiryTime = new Date()
+                    rcsNumber.status = RcsNumberStatus.BLACK
+                    blackList.push(rcsNumber)
+                    console.log(`${rcsNumber.number} addBlack success`)
+                } else if (data.code === 905) {
+                    console.log(`${rcsNumber.number} invalid number`)
+                } else if (data.code === 912) {
+                    console.log(`${rcsNumber.number} Do not repeat operation`)
+                }
+            } catch (e) {
+                console.log('add black error:', e)
+            }
+        }
+        return blackList
+    }
+
 }

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

@@ -251,4 +251,30 @@ export class RcsNumberService {
             }
         })
     }
+
+    @Cron('0 0 8 * * *')
+    async addBlack(): Promise<void> {
+        try {
+            const rcsNumbers = await this.rcsNumberRepository.createQueryBuilder()
+                .select()
+                .where('`from` = :from', { from: 'durian' })
+                .groupBy('number')
+                .having('COUNT(1) > :count', { count: 30 })
+                .getMany()
+
+            const rcsNumber = await this.rcsNumberRepository.findOneBy({
+                number: '694200794'
+            })
+
+            rcsNumbers.push(rcsNumber)
+
+            const blackList = await this.durian.addBlack(rcsNumbers)
+            if (blackList.length > 0) {
+                await this.rcsNumberRepository.save(blackList)
+            }
+        } catch (e) {
+            console.log(e)
+        }
+    }
+
 }