136 lines
3.0 KiB
JavaScript
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;
|