From b2ff69bac26ce2629963c32599632286ba60c2f9 Mon Sep 17 00:00:00 2001 From: aozhiwei Date: Sun, 9 Jul 2023 14:35:54 +0800 Subject: [PATCH] 1 --- .../services/events/BENftMarket/buy_order.js | 88 +++++++++++++++++++ .../events/BENftMarket/cancel_order.js | 72 +++++++++++++++ .../events/BENftMarket/price_update.js | 78 ++++++++++++++++ .../services/events/BENftMarket/sell_order.js | 88 +++++++++++++++++++ .../events/GameItemMall/item_soldout.js | 72 +++++++++++++++ 5 files changed, 398 insertions(+) create mode 100644 server/web3dbspider/services/events/BENftMarket/buy_order.js create mode 100644 server/web3dbspider/services/events/BENftMarket/cancel_order.js create mode 100644 server/web3dbspider/services/events/BENftMarket/price_update.js create mode 100644 server/web3dbspider/services/events/BENftMarket/sell_order.js create mode 100644 server/web3dbspider/services/events/GameItemMall/item_soldout.js diff --git a/server/web3dbspider/services/events/BENftMarket/buy_order.js b/server/web3dbspider/services/events/BENftMarket/buy_order.js new file mode 100644 index 0000000..6232ac4 --- /dev/null +++ b/server/web3dbspider/services/events/BENftMarket/buy_order.js @@ -0,0 +1,88 @@ +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'); + +/* +// 操作成功的事件ß +event BuyOrder( + uint256 indexed tokenId, + uint256 orderId, + address nftToken, + uint256 amount, + address seller, + address buyer, + address erc20, + uint256 price +); +*/ + +class BuyOrder { + + 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']; + + const tokenId = returnValues['tokenId']; + const orderId = returnValues['orderId']; + const nftToken = returnValues['nftToken']; + const amount = returnValues['amount']; + const seller = returnValues['seller']; + const buyer = returnValues['buyer']; + 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); + if (!data) { + throw 'data is empty5'; + } + if (data['errcode'] == 0 || + data['errcode'] == 1) { + return; + } + } 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; + } + +} + +module.exports = BuyOrder; diff --git a/server/web3dbspider/services/events/BENftMarket/cancel_order.js b/server/web3dbspider/services/events/BENftMarket/cancel_order.js new file mode 100644 index 0000000..f453061 --- /dev/null +++ b/server/web3dbspider/services/events/BENftMarket/cancel_order.js @@ -0,0 +1,72 @@ +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'); + +/* +// 操作成功的事件 +event CancelOrder( + uint256 indexed orderId, + address indexed nftToken, + uint256 indexed tokenId +); +*/ + +class CancelOrder { + + async start(instance, conn, event) { + this.instance = instance; + this.conn = conn; + this.event = event; + + console.log('CancelOrder', event); + const blockNumber = event['blockNumber']; + const returnValues = event['returnValues']; + + const orderId = returnValues['orderId']; + const nftToken = returnValues['nftToken']; + const tokenId = returnValues['tokenId']; + + while (true) { + try { + const {err, data} = await http.get(BASE_URL, + { + 'c': 'Market', + 'a': 'eventCancelOrder', + 'orderId': orderId, + 'nftToken': nftToken, + 'tokenId': tokenId, + }); + console.log(err, data); + if (!data) { + throw 'data is empty3'; + } + if (data['errcode'] == 0 || + data['errcode'] == 1) { + return; + } + } catch (e) { + log.error(e); + } + await utils.sleep(3000 + utils.randRange(500, 1500)); + } + } + + throwError(err) { + const errMsg = 'processCancelOrderEvent:' + + utils.jsonEncode(this.instance) + + ' err:' + err; + throw errMsg; + } + +} + +module.exports = CancelOrder; diff --git a/server/web3dbspider/services/events/BENftMarket/price_update.js b/server/web3dbspider/services/events/BENftMarket/price_update.js new file mode 100644 index 0000000..78b8fb1 --- /dev/null +++ b/server/web3dbspider/services/events/BENftMarket/price_update.js @@ -0,0 +1,78 @@ +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'); + +/* +// 操作成功的事件 +event PriceUpdate( + uint256 indexed orderId, + address indexed nftToken, + uint256 indexed tokenId, + uint256 priceOld, + uint256 price +); +*/ + +class PriceUpdateOrder { + + async start(instance, conn, event) { + this.instance = instance; + this.conn = conn; + this.event = event; + + console.log('PriceUpdateOrder', event); + const blockNumber = event['blockNumber']; + const returnValues = event['returnValues']; + + const orderId = returnValues['orderId']; + const nftToken = returnValues['nftToken']; + const tokenId = returnValues['tokenId']; + const priceOld = returnValues['priceOld']; + const price = returnValues['price']; + + while (true) { + try { + const {err, data} = await http.get(BASE_URL, + { + 'c': 'Market', + 'a': 'eventPriceUpdateOrder', + 'orderId': orderId, + 'nftToken': nftToken, + 'tokenId': tokenId, + 'priceOld': priceOld, + 'price': price + }); + console.log(err, data); + if (!data) { + throw 'data is empty4'; + } + if (data['errcode'] == 0 || + data['errcode'] == 1) { + return; + } + } catch (e) { + log.error(e); + } + await utils.sleep(3000 + utils.randRange(500, 1500)); + } + } + + throwError(err) { + const errMsg = 'processPriceUpdateOrderEvent:' + + utils.jsonEncode(this.instance) + + ' err:' + err; + throw errMsg; + } + +} + +module.exports = PriceUpdateOrder; diff --git a/server/web3dbspider/services/events/BENftMarket/sell_order.js b/server/web3dbspider/services/events/BENftMarket/sell_order.js new file mode 100644 index 0000000..4240a53 --- /dev/null +++ b/server/web3dbspider/services/events/BENftMarket/sell_order.js @@ -0,0 +1,88 @@ +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'); + +/* +// 操作成功的事件 +event SellOrder( + uint256 indexed tokenId, + address indexed owner, + address indexed nftToken, + uint256 amount, + uint256 orderId, + address currency, + uint256 price + ); +*/ + +class SellOrder { + + async start(instance, conn, event) { + this.instance = instance; + this.conn = conn; + this.event = event; + + console.log('SellOrder', event); + const blockNumber = event['blockNumber']; + const returnValues = event['returnValues']; + + const tokenId = returnValues['tokenId']; + const owner = returnValues['owner']; + const nftToken = returnValues['nftToken']; + const amount = returnValues['amount']; + const orderId = returnValues['orderId']; + const currency = returnValues['currency']; + const price = returnValues['price']; + + while (true) { + try { + const {err, data} = await http.get + (BASE_URL, + { + 'c': 'Market', + 'a': 'eventSellOrder', + 'tokenId': tokenId, + 'owner': owner, + 'nftToken': nftToken, + 'amount': amount, + 'orderId': orderId, + 'currency': currency, + 'price': price + }); + if (err) { + throw err; + } + console.log(err, data); + if (!data) { + throw 'data is empty2'; + } + if (data['errcode'] == 0 || + data['errcode'] == 1) { + return; + } + } catch (e) { + log.error(e); + } + await utils.sleep(3000 + utils.randRange(500, 1500)); + } + } + + throwError(err) { + const errMsg = 'processSellOrderEvent:' + + utils.jsonEncode(this.instance) + + ' err:' + err; + throw errMsg; + } + +} + +module.exports = SellOrder; diff --git a/server/web3dbspider/services/events/GameItemMall/item_soldout.js b/server/web3dbspider/services/events/GameItemMall/item_soldout.js new file mode 100644 index 0000000..ebf6e1d --- /dev/null +++ b/server/web3dbspider/services/events/GameItemMall/item_soldout.js @@ -0,0 +1,72 @@ +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'); + +/* +操作成功的事件 +event ItemSoldOut( + address indexed buyer, + uint256 indexed orderId, + address currency, + uint256 price + ); +*/ + +class GameItemMallBuy { + + async start(instance, conn, event) { + console.log('GameItemMallBuy', event); + const blockNumber = event['blockNumber']; + const returnValues = event['returnValues']; + const transId = returnValues['orderId']; + const orderId = returnValues['orderId']; + + if (orderId != transId) { + //this.throwError('error orderId:' + utils.jsonEncode(returnValues)); + //return; + } + const a = 'dispatch'; + while (true) { + try { + const {err, data} = await gameapi.callApi + ( + 'Callback', + a, + { + 'action': 'gameItemMallBuyOk', + 'trans_id': transId, + 'order_id': orderId, + } + ); + if (err) { + throw err; + } + console.log(data); + if (!data) { + throw 'data is empty1'; + } + if (data['errcode'] == 0 || + data['errcode'] == 1 || + data['errcode'] == 2) { + return; + } + } catch (e) { + log.error(e); + } + await utils.sleep(3000 + utils.randRange(500, 1500)); + } + } + + throwError(instance, err) { + const errMsg = 'GameItemMallBuy:' + utils.jsonEncode(instance) + ' err:' + err; + throw errMsg; + } + +} + +module.exports = GameItemMallBuy;