diff --git a/database/bcevent.sql b/database/bcevent.sql index 23e20ba..62d42e5 100644 --- a/database/bcevent.sql +++ b/database/bcevent.sql @@ -464,3 +464,34 @@ CREATE TABLE `t_webhook_process_last_idx` ( UNIQUE KEY `unikey` (`event_name`) ) ENGINE=InnoDB AUTO_INCREMENT=10001 DEFAULT CHARSET=utf8 COLLATE=utf8_bin; /*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `t_nft_lock_event` +-- + +DROP TABLE IF EXISTS `t_nft_lock_event`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `t_nft_lock_event` ( + `idx` bigint NOT NULL AUTO_INCREMENT COMMENT '自增id', + `txhash` varchar(255) NOT NULL DEFAULT '' COMMENT 'txhash', + `log_index` bigint NOT NULL DEFAULT '0' COMMENT 'log_index', + `hash_code` varchar(60) NOT NULL DEFAULT '' COMMENT 'hash_code', + `net_id` bigint NOT NULL DEFAULT '0' COMMENT 'net_id', + `event_name` varchar(60) NOT NULL DEFAULT '' COMMENT 'event_name', + `contract_address` varchar(60) NOT NULL DEFAULT '' COMMENT 'contract_address', + `contract_name` varchar(60) NOT NULL DEFAULT '' COMMENT 'contract_name', + `block_number` bigint NOT NULL DEFAULT '0' COMMENT 'block_number', + `return_values` mediumblob COMMENT 'return_values', + `block_data` mediumblob COMMENT 'block_data', + `src_idx` bigint NOT NULL DEFAULT '0' COMMENT 'src_idx', + `status` int(11) NOT NULL DEFAULT '0' COMMENT 'status 0:待处理 1:已处理', + `lock_sender` varchar(60) NOT NULL DEFAULT '' COMMENT 'lock_sender', + `lock_to` varchar(60) NOT NULL DEFAULT '' COMMENT 'lock_to', + `createtime` int(11) NOT NULL DEFAULT '0' COMMENT '创建时间', + `modifytime` int(11) NOT NULL DEFAULT '0' COMMENT '修改时间', + PRIMARY KEY (`idx`), + UNIQUE KEY `unikey` (`txhash`, `hash_code`, `log_index`, `net_id`, `event_name`, `contract_address`), + KEY `idx_net_id_event_name_contract_address_status` (`net_id`, `event_name`, `contract_address`, `status`) +) ENGINE=InnoDB AUTO_INCREMENT=10001 DEFAULT CHARSET=utf8 COLLATE=utf8_bin; +/*!40101 SET character_set_client = @saved_cs_client */; diff --git a/server/bin_dev/web3dbspider/config/events.json b/server/bin_dev/web3dbspider/config/events.json index a423090..fb291e5 100644 --- a/server/bin_dev/web3dbspider/config/events.json +++ b/server/bin_dev/web3dbspider/config/events.json @@ -2,6 +2,11 @@ { "net_id": 13473, "events": [ + { + "contract_name": "NFTLock", + "event_name": "Lock", + "table_name": "t_nft_lock_event" + }, { "contract_name": "CFHero", "event_name": "Transfer", diff --git a/server/web3dbspider/services/events/NFTLock/lock.js b/server/web3dbspider/services/events/NFTLock/lock.js new file mode 100644 index 0000000..71d2aec --- /dev/null +++ b/server/web3dbspider/services/events/NFTLock/lock.js @@ -0,0 +1,38 @@ +const log = require('j7/log'); +const bcutils = require('j7/bcutils'); +const utils = require('j7/utils'); +const bcconst = require('common/bcconst'); +const BaseEventProcess = require('../common/BaseEventProcess'); +const metaFactory = require('../../../metadata/factory'); + +class NftLock extends BaseEventProcess { + + async start() { + const returnValues = this.getReturnValues(); + const nft = bcutils.toNormalAddress(returnValues['nft']); + const sender = bcutils.toNormalAddress(returnValues['sender']); + const to = bcutils.toNormalAddress(returnValues['to']); + + const nowTime = utils.getUtcTime(); + { + const {err} = await this.bcEventDbConn( + 'update', + 't_nft_lock_event', + [ + ['idx', this.getEventDb()['idx']], + ], + [ + ['lock_sender', sender], + ['lock_to', to], + ] + ); + if (err) { + this.throwError('NftLock:' + err); + } + } + await this.markOk(); + } + +} + +module.exports = NftLock; diff --git a/server/web3dbspider/services/events/factory.js b/server/web3dbspider/services/events/factory.js index 62017b2..511e22b 100644 --- a/server/web3dbspider/services/events/factory.js +++ b/server/web3dbspider/services/events/factory.js @@ -20,6 +20,7 @@ async function add(clsName, modName) { async function init() { await add('CFHero.Transfer', 'CFHero/transfer'); await add('GoldBrick.Transfer', 'GoldBrick/transfer'); + await add('NFTLock.Lock', 'NFTLock/lock'); } function getEventHandle(eventProc) {