diff --git a/server/light_backtask/task/chain_activity.go b/server/light_backtask/task/chain_activity.go index 2cb15b0e..c0125e5e 100644 --- a/server/light_backtask/task/chain_activity.go +++ b/server/light_backtask/task/chain_activity.go @@ -89,40 +89,48 @@ func (this* chainActivity) saveToDb(ds *f5.DataSet) bool { itemId := 0 quality := 0 + genWhereKv := func (tokenId string) [][]string { + return [][]string{ + {"txhash", txhash}, + {"log_index", logIndex}, + {"net_id", netId}, + {"event_name", eventName}, + {"contract_address", contractAddress}, + {"token_id", tokenId}, + } + } + genInsertKv := func (nftAddress, tokenId string, sender string, to string, isMint int32) [][]string { + return [][]string{ + {"txhash", txhash}, + {"log_index", logIndex}, + {"net_id", netId}, + {"event_name", eventName}, + {"contract_address", strings.ToLower(contractAddress)}, + {"nft_contract_address", strings.ToLower(nftAddress)}, + {"token_id", tokenId}, + {"src_idx", idx}, + {"sender_address", strings.ToLower(sender)}, + {"to_address", strings.ToLower(to)}, + {"item_id", q5.ToString(itemId)}, + {"quality", q5.ToString(quality)}, + {"is_mint", q5.ToString(isMint)}, + {"createtime", createTime}, + {"modifytime", modifyTime}, + } + } + decodeJsonOk := false if eventName == "Lock" { p := new(lockReturnValues) if q5.DecodeJson(returnValues, p) == nil { + decodeJsonOk = true for _, tokenId := range p.TokenIds { var dbErr error f5.GetGoStyleDb().Upsert( constant.BCEVENT_DB, "t_chain_activity", - [][]string{ - {"txhash", txhash}, - {"log_index", logIndex}, - {"net_id", netId}, - {"event_name", eventName}, - {"contract_address", contractAddress}, - {"token_id", tokenId}, - }, - [][]string{ - }, - [][]string{ - {"txhash", txhash}, - {"log_index", logIndex}, - {"net_id", netId}, - {"event_name", eventName}, - {"contract_address", contractAddress}, - {"nft_contract_address", strings.ToLower(p.Nft)}, - {"token_id", tokenId}, - {"src_idx", idx}, - {"sender_address", strings.ToLower(p.Sender)}, - {"to_address", strings.ToLower(p.To)}, - {"item_id", q5.ToString(itemId)}, - {"quality", q5.ToString(quality)}, - {"createtime", createTime}, - {"modifytime", modifyTime}, - }, + genWhereKv(tokenId), + [][]string{}, + genInsertKv(p.Nft, tokenId, p.Sender, p.To, 0), func (err error, lastInsertId int64, rowsAffected int64) { dbErr = err }) @@ -130,24 +138,20 @@ func (this* chainActivity) saveToDb(ds *f5.DataSet) bool { return false } } - } else { - jccommon.AddDbLog(constant.BCEVENT_DB, "chainActivity", "returnValuesDecodeError", - map[string]string{ - "param1": txhash, - "param2": netId, - "param3": eventName, - "param4": idx, - "param5": contractAddress, - }) } } else if eventName == "UnLock" { p := new(unLockReturnValues) sender := q5.SafeToString(p.User) if q5.DecodeJson(returnValues, p) == nil { + decodeJsonOk = true for _, nft := range p.NftList { + if len(nft) != 3 { + decodeJsonOk = false + break + } tokenId := q5.SafeToString(nft[0]) to := q5.SafeToString(nft[1]) - isMint := 0 + var isMint int32 if nft[2].(bool) { isMint = 1 } @@ -155,33 +159,9 @@ func (this* chainActivity) saveToDb(ds *f5.DataSet) bool { f5.GetGoStyleDb().Upsert( constant.BCEVENT_DB, "t_chain_activity", - [][]string{ - {"txhash", txhash}, - {"log_index", logIndex}, - {"net_id", netId}, - {"event_name", eventName}, - {"contract_address", contractAddress}, - {"token_id", tokenId}, - }, - [][]string{ - }, - [][]string{ - {"txhash", txhash}, - {"log_index", logIndex}, - {"net_id", netId}, - {"event_name", eventName}, - {"contract_address", contractAddress}, - {"nft_contract_address", strings.ToLower(p.Nft)}, - {"token_id", tokenId}, - {"src_idx", idx}, - {"sender_address", strings.ToLower(sender)}, - {"to_address", strings.ToLower(to)}, - {"item_id", q5.ToString(itemId)}, - {"quality", q5.ToString(quality)}, - {"is_mint", q5.ToString(isMint)}, - {"createtime", createTime}, - {"modifytime", modifyTime}, - }, + genWhereKv(tokenId), + [][]string{}, + genInsertKv(p.Nft, tokenId, sender, to, isMint), func (err error, lastInsertId int64, rowsAffected int64) { dbErr = err }) @@ -189,18 +169,19 @@ func (this* chainActivity) saveToDb(ds *f5.DataSet) bool { return false } } - } else { - jccommon.AddDbLog(constant.BCEVENT_DB, "chainActivity", "returnValuesDecodeError", - map[string]string{ - "param1": txhash, - "param2": netId, - "param3": eventName, - "param4": idx, - "param5": contractAddress, - }) } } else { panic(fmt.Sprintf("chainActivity unknow event_name %s", eventName)) } + if !decodeJsonOk { + jccommon.AddDbLog(constant.BCEVENT_DB, "chainActivity", "decodeJsonError", + map[string]string{ + "param1": txhash, + "param2": netId, + "param3": eventName, + "param4": idx, + "param5": contractAddress, + }) + } return true }