diff --git a/server/common/constant.js b/server/common/constant.js index 4c97859..b832186 100644 --- a/server/common/constant.js +++ b/server/common/constant.js @@ -5,8 +5,11 @@ const GAMEDB_NAME = 'GameDb0'; const BCEVENTDB_NAME = 'BcEventDb0'; const BCNFTDB_NAME = 'BcNftDb0'; +const GAME_ID = 2006; + exports.EVENTDB_STATE_PENDING = EVENTDB_STATE_PENDING; exports.EVENTDB_STATE_HANDLED = EVENTDB_STATE_HANDLED; exports.GAMEDB_NAME = GAMEDB_NAME; exports.BCEVENTDB_NAME = BCEVENTDB_NAME; exports.BCNFTDB_NAME = BCNFTDB_NAME; +exports.GAME_ID = GAME_ID; diff --git a/server/common/contract.js b/server/common/contract.js index 8481b27..6db8d0f 100644 --- a/server/common/contract.js +++ b/server/common/contract.js @@ -1,3 +1,5 @@ +const bcconst = require("common/bcconst"); + const CEC_INSTANCE_NAME = 'CEC'; const CEG_INSTANCE_NAME = 'CEG'; const HERO_INSTANCE_NAME = 'HERO'; @@ -13,6 +15,30 @@ const BENftMall_INSTANCE_NAME = 'BENftMall'; const GameItemMarket_INSTANCE_NAME = 'GameItemMarket'; const GameItemMall_INSTANCE_NAME = 'GameItemMall'; +function getNftNameByTokenType(tokenType) { + switch (Number(tokenType)) { + case bcconst.BC_NFT_HERO: + { + return HERO_INSTANCE_NAME; + } + break; + case bcconst.BC_NFT_CHIP: + { + return CHIP_INSTANCE_NAME; + } + break; + case bcconst.BC_NFT_CLAIM_BOX: + { + return Gacha_INSTANCE_NAME; + } + break; + default: + { + return ''; + } + } +} + exports.CEC_INSTANCE_NAME = CEC_INSTANCE_NAME; exports.CEG_INSTANCE_NAME = CEG_INSTANCE_NAME; exports.HERO_INSTANCE_NAME = HERO_INSTANCE_NAME; @@ -27,3 +53,5 @@ exports.BENftMarket_INSTANCE_NAME = BENftMarket_INSTANCE_NAME; exports.BENftMall_INSTANCE_NAME = BENftMall_INSTANCE_NAME; exports.GameItemMarket_INSTANCE_NAME = GameItemMarket_INSTANCE_NAME; exports.GameItemMall_INSTANCE_NAME = GameItemMall_INSTANCE_NAME; + +exports.getNftNameByTokenType = getNftNameByTokenType; diff --git a/server/web3sign/blockchain.js b/server/web3sign/blockchain.js index 665c19f..ab4acb8 100644 --- a/server/web3sign/blockchain.js +++ b/server/web3sign/blockchain.js @@ -1,7 +1,6 @@ const util = require('util'); const Web3 = require('web3'); const utils = require('j7/utils'); -const bcutils = require('j7/bcutils'); const event = require('j7/event'); const sync = require("j7/sync"); const log = require("j7/log"); @@ -76,37 +75,9 @@ class BlockChain { } getNftAddress(tokenType) { - switch (Number(tokenType)) { - case bcutils.HERO_TYPE: - { - return this.getContractByName('HERO')['address']; - } - break; - case bcutils.EQUIP_TYPE: - { - return this.getContractByName('WEAPON')['address']; - } - break; - case bcutils.CHIP_TYPE: - { - return this.getContractByName('CHIP')['address']; - } - break; - case bcutils.FRAGMENT_TYPE: - { - return this.getContractByName('shard')['address']; - } - break; - case bcutils.CLAIM_BOX_TYPE: - { - return this.getContractByName('Gacha')['address']; - } - break; - default: - { - return ''; - } - } + const name = contract.getNftNameByTokenType(tokenType); + const c = this.getContractByName(name); + return c ? c['address'] : ''; } } diff --git a/server/web3sign/controllers/activate721nft.js b/server/web3sign/controllers/activate721nft.js index 8a2ebce..3c70895 100644 --- a/server/web3sign/controllers/activate721nft.js +++ b/server/web3sign/controllers/activate721nft.js @@ -4,16 +4,31 @@ const sigUtil = require('@metamask/eth-sig-util'); const app = require('j7/app'); const utils = require('j7/utils'); const bcutils = require('j7/bcutils'); -const bc = require('../blockchain'); const metaFactory = require('../metadata/factory'); +const serviceFactory = require('../services/factory'); async function activate721Nft(session) { try { const account = session.request('account'); + const netId = session.request('net_id'); const tokenId = session.request('token_id'); const tokenType = session.request('token_type'); const itemUniId = session.request('item_uniid'); const itemId = session.request('item_id'); + const bc = serviceFactory.create('BlockChain'); + { + const ret = await bc.init(netId); + if (!ret) { + session.rspErr(500, 'net_id error'); + return; + } + } + { + if (!bcutils.isValidAddress(account)) { + session.rspErr(500, 'account error'); + return; + } + } const nftAddress = bc.getNftAddress(tokenType); const userAddress = metaFactory.getUserAddress();