邮件通知区分测试和正式

This commit is contained in:
CounterFire2023 2023-07-12 17:39:19 +08:00
parent 8ade5239df
commit b99515089b
8 changed files with 50 additions and 12 deletions

View File

@ -2,6 +2,13 @@
{ {
"id": 421613, "id": 421613,
"key": "0xd9ed33809372932059c1ba7b336a33f406b4c55e7430daef8297134c67429d60", "key": "0xd9ed33809372932059c1ba7b336a33f406b4c55e7430daef8297134c67429d60",
"wallet": "0xE68F149daF2F314d9960c08496D8701BC7671850" "wallet": "0xE68F149daF2F314d9960c08496D8701BC7671850",
"mail": "zhl010101@gmail.com"
},
{
"id": 42161,
"key": "0x0d6b3b1402f72b204f93e1438fbad4713a838b21c13c16f50ff54c32a8917273",
"wallet": "0x3Cd052Cc25358DB844bcDDfFa514080d41a4c2cA",
"mail": "ztgame@gmail.com"
} }
] ]

14
config/chains_exec.json Normal file
View File

@ -0,0 +1,14 @@
[
{
"id": 421613,
"key": "0xd9ed33809372932059c1ba7b336a33f406b4c55e7430daef8297134c67429d60",
"wallet": "0xE68F149daF2F314d9960c08496D8701BC7671850",
"mail": "zhl010101@gmail.com"
},
{
"id": 42161,
"key": "0x360876d3c243266436e7853ec9d170ab312a7c89465cc8e17d66e7094de60ccf",
"wallet": "0x3Cd052Cc25358DB844bcDDfFa514080d41a4c2cA",
"mail": "ztgame@gmail.com"
}
]

View File

@ -6,5 +6,13 @@
"fromBlock": 30117942, "fromBlock": 30117942,
"eventProcesser": "ScheduleConfirmEvent", "eventProcesser": "ScheduleConfirmEvent",
"chain": 421613 "chain": 421613
},
{
"address": "0x3Cd052Cc25358DB844bcDDfFa514080d41a4c2cA",
"event": "Confirmation",
"abi": "BEMultiSigWallet",
"fromBlock": 110368018,
"eventProcesser": "ScheduleConfirmEvent",
"chain": 42161
} }
] ]

View File

@ -10,6 +10,7 @@ import logger from 'logger/logger'
import BlocknumSchedule from 'schedule/blocknum.schedule' import BlocknumSchedule from 'schedule/blocknum.schedule'
import { RedisClient } from 'redis/RedisClient' import { RedisClient } from 'redis/RedisClient'
import WxTaskSchedule from 'schedule/wxtask.schedule' import WxTaskSchedule from 'schedule/wxtask.schedule'
import { ChainCache } from 'cache/ChainCache'
const zReqParserPlugin = require('plugins/zReqParser') const zReqParserPlugin = require('plugins/zReqParser')
@ -21,7 +22,7 @@ const fs = require('fs')
const join = require('path').join const join = require('path').join
require('./common/Extend') require('./common/Extend')
new ChainCache().init('chains')
export class ApiServer { export class ApiServer {
server: FastifyInstance<Server, IncomingMessage, ServerResponse> server: FastifyInstance<Server, IncomingMessage, ServerResponse>

View File

@ -6,12 +6,13 @@ import Web3 from 'web3'
import { WalletReactor } from 'chain/WalletReactor' import { WalletReactor } from 'chain/WalletReactor'
import { ConfirmQueue } from 'queue/confirm.queue' import { ConfirmQueue } from 'queue/confirm.queue'
const chainCfgs = require('../../config/chains.json') let chainCfgs = require('../../config/chains.json')
export interface IChainCfg { export interface IChainCfg {
id: number id: number
key: string key: string
wallet: string wallet: string
mail: string
} }
@singleton @singleton
@ -19,11 +20,10 @@ export class ChainCache {
public providers: Map<number, Web3> = new Map() public providers: Map<number, Web3> = new Map()
public wallets: Map<number, WalletReactor> = new Map() public wallets: Map<number, WalletReactor> = new Map()
public confirmQueues: Map<number, ConfirmQueue> = new Map() public confirmQueues: Map<number, ConfirmQueue> = new Map()
constructor() { constructor() {}
this.init()
}
private async init() { public async init(filename: string) {
chainCfgs = require(`../../config/${filename}.json`)
for (let cfg of chainCfgs) { for (let cfg of chainCfgs) {
let chainData = AllChains.find(o => o.id === cfg.id) let chainData = AllChains.find(o => o.id === cfg.id)
assert(chainData, `chain id ${cfg.id} not found`) assert(chainData, `chain id ${cfg.id} not found`)

View File

@ -133,7 +133,7 @@ export class ChainTaskClass extends BaseModule {
} }
if (sCount === record.tasks.length) { if (sCount === record.tasks.length) {
// send mail to confirmer // send mail to confirmer
new MailQueue().addTaskToQueue(record) new MailQueue(record.chain).addTaskToQueue(record)
} }
} }

View File

@ -10,6 +10,7 @@ import { ScheduleConfirmEvent } from 'models/ScheduleConfirmEvent'
import { ScheduleExecutedEvent } from 'models/ScheduleExecutedEvent' import { ScheduleExecutedEvent } from 'models/ScheduleExecutedEvent'
import 'common/Extend' import 'common/Extend'
import { ChainCache } from 'cache/ChainCache'
let svrs: any[] = [] let svrs: any[] = []
let lock = false let lock = false
@ -23,6 +24,8 @@ let eventProcessers = {
const events = require('../config/events.json') const events = require('../config/events.json')
new ChainCache().init('chains_exec')
async function initEventSvrs() { async function initEventSvrs() {
// let nfts = [{ address: '0x37c30a2945799a53c5358636a721b442458fa691' }] // let nfts = [{ address: '0x37c30a2945799a53c5358636a721b442458fa691' }]
for (let event of events) { for (let event of events) {

View File

@ -6,10 +6,12 @@ import { ChainTaskClass } from 'models/ChainTask'
import { MailService } from 'service/mail.service' import { MailService } from 'service/mail.service'
import { Deferred } from 'utils/promise.util' import { Deferred } from 'utils/promise.util'
import { CONFIRM_MAIL_HTML } from 'common/Constants' import { CONFIRM_MAIL_HTML } from 'common/Constants'
import { ChainCache } from 'cache/ChainCache'
import assert from 'assert'
export interface IMailData { export interface IMailData {
from?: string from?: string
to: string to?: string
subject?: string subject?: string
text?: string text?: string
html?: string html?: string
@ -17,14 +19,15 @@ export interface IMailData {
const DEFAULT_MSG_DATA: IMailData = { const DEFAULT_MSG_DATA: IMailData = {
from: 'CEBG <noreply@cebg.games>', from: 'CEBG <noreply@cebg.games>',
to: process.env.MAIL_DEFAULT_ADDRESS,
subject: 'CEBG', subject: 'CEBG',
} }
@singleton @singleton
export class MailQueue { export class MailQueue {
private queue: AsyncQueue private queue: AsyncQueue
constructor() { private chain: number
constructor(chain: number) {
this.chain = chain
this.queue = createAsyncQueue() this.queue = createAsyncQueue()
} }
@ -37,7 +40,9 @@ export class MailQueue {
let link2 = `${process.env.WEB_BASE_URL}/pages/confirm.html?id=${task.id}` let link2 = `${process.env.WEB_BASE_URL}/pages/confirm.html?id=${task.id}`
html = html.replace('{{link2}}', link2) html = html.replace('{{link2}}', link2)
let subject = `${task.starterName} 申请 ${task.name}` let subject = `${task.starterName} 申请 ${task.name}`
let data: any = { html, subject } let cfg = new ChainCache().chainArray.find(c => c.id === this.chain)
assert(cfg, `chain ${this.chain} not found`)
let data: any = { html, subject, to: cfg.mail }
Object(DEFAULT_MSG_DATA).zssign(data) Object(DEFAULT_MSG_DATA).zssign(data)
let deferred = new Deferred() let deferred = new Deferred()
this.queue.push(async () => { this.queue.push(async () => {