aozhiwei 968cabd30b 1
2023-07-11 10:10:19 +08:00

136 lines
3.0 KiB
JavaScript

const log = require('j7/log');
const app = require('j7/app');
const bcutils = require('j7/bcutils');
const utils = require('j7/utils');
const j7event = require('j7/event');
const http = require('j7/http');
const constant = require('common/constant');
const metaFactory = require('../../../metadata/factory');
class BaseEventProcess {
constructor(proc, conn, eventDb) {
this.eventProc = proc;
this.conn = conn;
this.eventDb = eventDb;
this.returnValues = utils.jsonDecode(this.getEventDb());
}
genLogHead(msg) {
return this.eventProc.genLogHead(' activate721nft ' + msg);
}
getEventDb() {
return this.eventDb;
}
getBlockNumber() {
return this.eventDb['block_number'];
}
getNetId() {
return this.eventProc.getNetId();
}
getContractAddress() {
return this.eventProc.getContractAddress();
}
getContractName() {
return this.eventProc.getContractName();
}
getReturnValues() {
return this.returnValues;
}
throwError(err) {
const errMsg = this.genLogHead(err);
throw errMsg;
}
async markOk() {
await this.updateEventDb(
[
['state', constant.EVENTDB_STATE_HANDLED],
['modifytime', utils.getUtcTime()],
]
);
}
async updateEventDb(fields) {
const logHead = this.genLogHead('updateEventDb');
while (true) {
const {err} = await this.conn.update(
this.eventProc.getTableName(),
[
['idx', this.getEventDb['idx']],
],
fields
);
if (!err) {
break;
}
log.error(logHead + err);
await utils.sleep(5000 + utils.randRange(500, 1500));
}
}
async callGameApi(params, checkCb) {
while (true) {
try {
const {err, data} = await http.get('',params);
if (err) {
await utils.sleep(3000 + utils.randRange(500, 1500));
continue;
}
const ret = await checkCb(data);
if (ret) {
break;
}
} catch (e) {
log.error(e);
}
await utils.sleep(3000 + utils.randRange(500, 1500));
}
}
async add721NftRefresh(netId, contractAddress, contractName, tokenId) {
while (true) {
const nowTime = utils.getNowTime();
const {err} = await this.conn.upsert
(
't_erc721_refresh',
[
['net_id', netId],
['contract_address', contractAddress],
['tokenId', tokenId],
],
[
['status', 0],
['refresh_count', () => {
return 'refresh_count + 1';
}],
['modifytime', nowTime]
],
[
['net_id', netId],
['contract_address', contractAddress],
['tokenId', tokenId],
['status', 0],
['refresh_count', 1],
['createtime', nowTime]
['modifytime', nowTime]
]
);
if (!err) {
break;
}
await utils.sleep(3000 + utils.randRange(500, 1500));
}
}
}
module.exports = BaseEventProcess;