From ede26a9ef312a2b7c63831a3f0d5a6ddc0423eb7 Mon Sep 17 00:00:00 2001 From: aozhiwei Date: Tue, 18 Jun 2024 16:32:07 +0800 Subject: [PATCH] 1 --- database/bcevent.sql | 23 +++++++ .../events/common/BaseEventProcess.js | 64 ++++++++++++++----- 2 files changed, 72 insertions(+), 15 deletions(-) diff --git a/database/bcevent.sql b/database/bcevent.sql index f1157d5..ad901f0 100644 --- a/database/bcevent.sql +++ b/database/bcevent.sql @@ -253,6 +253,29 @@ CREATE TABLE `t_721nft_transfer` ( ) ENGINE=InnoDB AUTO_INCREMENT=10001 DEFAULT CHARSET=utf8 COLLATE=utf8_bin; /*!40101 SET character_set_client = @saved_cs_client */; +-- +-- Table structure for table `t_721nft_spec_transfer` +-- + +DROP TABLE IF EXISTS `t_721nft_spec_transfer`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `t_721nft_spec_transfer` ( + `idx` bigint NOT NULL AUTO_INCREMENT COMMENT '自增id', + `net_id` bigint NOT NULL DEFAULT '0' COMMENT 'net_id', + `contract_address` varchar(60) NOT NULL DEFAULT '' COMMENT 'contract_address', + `token_id` varchar(60) NOT NULL DEFAULT '' COMMENT 'token_id', + `from_address` varchar(60) NOT NULL DEFAULT '' COMMENT 'from_address', + `to_address` varchar(60) NOT NULL DEFAULT '' COMMENT 'to_address', + `status` int(11) NOT NULL DEFAULT '0' COMMENT 'status 0:待处理 1:已处理', + `src_idx` bigint NOT NULL DEFAULT '0' COMMENT 'src_idx', + `createtime` int(11) NOT NULL DEFAULT '0' COMMENT '创建时间', + `modifytime` int(11) NOT NULL DEFAULT '0' COMMENT '修改时间', + PRIMARY KEY (`idx`), + UNIQUE KEY (`src_idx`) +) ENGINE=InnoDB AUTO_INCREMENT=10001 DEFAULT CHARSET=utf8 COLLATE=utf8_bin; +/*!40101 SET character_set_client = @saved_cs_client */; + -- -- Table structure for table `t_nftmarket` -- diff --git a/server/web3dbspider/services/events/common/BaseEventProcess.js b/server/web3dbspider/services/events/common/BaseEventProcess.js index c72709e..310d278 100644 --- a/server/web3dbspider/services/events/common/BaseEventProcess.js +++ b/server/web3dbspider/services/events/common/BaseEventProcess.js @@ -364,21 +364,55 @@ class BaseEventProcess { async update721NftOwner(tokenId, contractAddress, ownerAddress, lastOwnerAddress) { const logHead = this.genLogHead(' update721NftOwner '); - const {err} = await this.bcNftDbConn( - 'update', - 't_nft', - [ - ['token_id', tokenId], - ['net_id', this.getNetId()], - ['contract_address', contractAddress], - ], - [ - ['owner_address', bcutils.toNormalAddress(ownerAddress)], - ['last_owner_address', bcutils.toNormalAddress(lastOwnerAddress)], - ] - ); - if (err) { - this.throwError(logHead + err); + { + const {err} = await this.bcNftDbConn( + 'update', + 't_nft', + [ + ['token_id', tokenId], + ['net_id', this.getNetId()], + ['contract_address', contractAddress], + ], + [ + ['owner_address', bcutils.toNormalAddress(ownerAddress)], + ['last_owner_address', bcutils.toNormalAddress(lastOwnerAddress)], + ] + ); + if (err) { + this.throwError(logHead + err); + } + } + { + const nowTime = utils.getUtcTime(); + const from = lastOwnerAddress; + const to = ownerAddress; + const lockAddress = this.getContractAddressByName('GoldBrick'); + const srcIdx = this.eventDb['src_idx']; + if (bcutils.isSysAddress(from) || from == lockAddress || + to == lockAddress) { + const {err} = await this.bcNftDbConn( + 'upsert', + 't_721nft_spec_transfer', + [ + ['src_idx', srcIdx], + ], + [ + ], + [ + ['net_id', this.eventDb['net_id']], + ['contract_address', this.eventDb['contract_address']], + ['token_id', tokenId], + ['from_address', from], + ['to_address', to], + ['src_idx', srcIdx], + ['createtime', nowTime], + ['modifytime', nowTime], + ] + ); + if (err) { + this.throwError(logHead + err); + } + } } }