diff --git a/server/web3dbspider/services/events/BENftMarket/buy_order.js b/server/web3dbspider/services/events/BENftMarket/buy_order.js index 6232ac4..1ebadbe 100644 --- a/server/web3dbspider/services/events/BENftMarket/buy_order.js +++ b/server/web3dbspider/services/events/BENftMarket/buy_order.js @@ -1,18 +1,12 @@ 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 metaFactory = require('../../metadata/factory'); -const C = require('../../C'); -const gameapi = require('../gameapi'); -const http = require('j7/http'); -const config = require('j7/config'); - -const BASE_URL = config('market_api'); +const BaseEventProcess = require('../common/BaseEventProcess'); /* -// 操作成功的事件ß +// 操作成功的事件 event BuyOrder( uint256 indexed tokenId, uint256 orderId, @@ -25,16 +19,10 @@ event BuyOrder( ); */ -class BuyOrder { +class BuyOrder extends BaseEventProcess { - async start(instance, conn, event) { - this.instance = instance; - this.conn = conn; - this.event = event; - - console.log('BuyOrder', event); - const blockNumber = event['blockNumber']; - const returnValues = event['returnValues']; + async start() { + const returnValues = this.getReturnValues(); const tokenId = returnValues['tokenId']; const orderId = returnValues['orderId']; @@ -45,42 +33,31 @@ class BuyOrder { const erc20 = returnValues['erc20']; const price = returnValues['price']; - while (true) { - try { - const {err, data} = await http.get - (BASE_URL, - { - 'c': 'Market', - 'a': 'eventBuyOrder', - 'tokenId': tokenId, - 'orderId': orderId, - 'nftToken': nftToken, - 'amount': amount, - 'seller': seller, - 'buyer': buyer, - 'erc20': erc20, - 'price': price - }); - console.log(err, data); + const params = { + 'c': 'Market', + 'a': 'eventBuyOrder', + 'tokenId': tokenId, + 'orderId': orderId, + 'nftToken': nftToken, + 'amount': amount, + 'seller': seller, + 'buyer': buyer, + 'erc20': erc20, + 'price': price + }; + await this.callGameApi + (params, + async (data) => { if (!data) { - throw 'data is empty5'; + this.throwError('callGameApi error:' + data); } if (data['errcode'] == 0 || data['errcode'] == 1) { - return; + return true; } - } catch (e) { - log.error(e); - } - await utils.sleep(3000 + utils.randRange(500, 1500)); - } - } - - throwError(err) { - const errMsg = 'processBuyOrderEvent:' + - utils.jsonEncode(this.instance) + - ' err:' + err; - throw errMsg; + return true; + }); + await this.markOk(); } } diff --git a/server/web3dbspider/services/events/common/BaseEventProcess.js b/server/web3dbspider/services/events/common/BaseEventProcess.js index f990e8a..b6e06ea 100644 --- a/server/web3dbspider/services/events/common/BaseEventProcess.js +++ b/server/web3dbspider/services/events/common/BaseEventProcess.js @@ -3,6 +3,7 @@ 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'); @@ -67,6 +68,25 @@ class BaseEventProcess { } } + 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)); + } + } + } module.exports = BaseEventProcess;