diff --git a/server/backtask/task/spec_transfer721/spec_transfer721.go b/server/backtask/task/spec_transfer721/spec_transfer721.go index d6669bd5..d86a25f7 100644 --- a/server/backtask/task/spec_transfer721/spec_transfer721.go +++ b/server/backtask/task/spec_transfer721/spec_transfer721.go @@ -45,21 +45,30 @@ SELECT * FROM t_721nft_spec_transfer WHERE idx > %d AND status = 0 AND createtim func () time.Duration { return time.Second * 60 * 1 }, - func (ds *f5.DataSet) bool { - idx := q5.ToInt64(ds.GetByName("idx")) - netId := q5.ToInt32(ds.GetByName("net_id")) - contractAddress := ds.GetByName("contract_address") - tokenId := ds.GetByName("token_id") - fromAddress := ds.GetByName("from_address") - toAddress := ds.GetByName("toaddress") - contractMeta := mt.Table.Contract.GetByNetIdAddress(netId, contractAddress) - if contractMeta != nil { - if p, ok := this.handleHash.Load(contractMeta.GetName()); ok { - if q5.IsWeb3ZeroAddress(fromAddress) { - (*p).onMint(idx, netId, contractAddress, tokenId, fromAddress, toAddress) - } + this.dispatch) +} + +func (this* SpecTransfer721) dispatch(ds *f5.DataSet) bool { + idx := q5.ToInt64(ds.GetByName("idx")) + netId := q5.ToInt32(ds.GetByName("net_id")) + contractAddress := ds.GetByName("contract_address") + tokenId := ds.GetByName("token_id") + fromAddress := ds.GetByName("from_address") + toAddress := ds.GetByName("toaddress") + contractMeta := mt.Table.Contract.GetByNetIdAddress(netId, contractAddress) + nftLockMeta := mt.Table.Contract.GetByNetIdName(netId, jccommon.CONTRACT_NAME_NFTLock) + if contractMeta != nil { + if p, ok := this.handleHash.Load(contractMeta.GetName()); ok { + if q5.IsWeb3ZeroAddress(fromAddress) { + return (*p).onMint(idx, netId, contractAddress, tokenId, fromAddress, toAddress) + } else if nftLockMeta != nil { + if toAddress == nftLockMeta.GetAddress() { + return (*p).onLock(idx, netId, contractAddress, tokenId, fromAddress, toAddress) + } else if fromAddress == nftLockMeta.GetAddress() { + return (*p).onUnlock(idx, netId, contractAddress, tokenId, fromAddress, toAddress) } } - return true - }) + } + } + return true } diff --git a/server/jccommon/constant.go b/server/jccommon/constant.go index f8c2e0e1..7115a813 100644 --- a/server/jccommon/constant.go +++ b/server/jccommon/constant.go @@ -28,4 +28,5 @@ const ( const ( CONTRACT_NAME_CFHero = "CFHero" CONTRACT_NAME_GoldBrick = "GoldBrick" + CONTRACT_NAME_NFTLock = "NFTLock" )