From 1369891b9e51a04f0fc22367e34fce8759f83dc4 Mon Sep 17 00:00:00 2001 From: aozhiwei Date: Mon, 10 Jul 2023 18:12:38 +0800 Subject: [PATCH] 1 --- server/web3sign/controllers/activate721nft.js | 4 +- server/web3sign/controllers/game_item_mall.js | 90 +++++++++++++++++++ 2 files changed, 92 insertions(+), 2 deletions(-) diff --git a/server/web3sign/controllers/activate721nft.js b/server/web3sign/controllers/activate721nft.js index d762776..7c155bd 100644 --- a/server/web3sign/controllers/activate721nft.js +++ b/server/web3sign/controllers/activate721nft.js @@ -7,7 +7,7 @@ const serviceFactory = require('../services/factory'); async function activate721Nft(session) { try { - const account = session.request('account'); + const account = bcutils.toNormalAddress(session.request('account')); const netId = session.request('net_id'); const tokenId = session.request('token_id'); const tokenType = session.request('token_type'); @@ -66,7 +66,7 @@ async function activate721Nft(session) { const nowTime = utils.getUtcTime(); const transId = bcutils.genTransId ( - bcconst.BC_TRANS_FUNC_ACTIVATE, + bcconst.BC_FUNC_COMMON, nowTime, seqId, [ diff --git a/server/web3sign/controllers/game_item_mall.js b/server/web3sign/controllers/game_item_mall.js index e69de29..48cc092 100644 --- a/server/web3sign/controllers/game_item_mall.js +++ b/server/web3sign/controllers/game_item_mall.js @@ -0,0 +1,90 @@ +const app = require('j7/app'); +const utils = require('j7/utils'); +const bcutils = require('j7/bcutils'); +const bcconst = require('common/bcconst'); +const metaFactory = require('../metadata/factory'); + +async function buy(session) { + try { + const account = bcutils.toNormalAddress(session.request('account', '')); + const netId = session.request('net_id'); + const price = session.request('price'); + const bc = serviceFactory.create('BlockChain'); + { + const ret = await bc.init(netId); + if (!ret) { + session.rspErr(500, 'net_id error'); + return; + } + } + { + if (!bc.isValidAddress(account)) { + session.rspErr(500, 'account error'); + return; + } + } + + const currency = metaFactory.getContractByName('CEG')['address']; + const userAddress = bc.getUserAddress(); + + const transModel = session.createModel('Transaction'); + const usedTokenIdModel = session.createModel('UsedTokenId'); + + const {err, seqId} = await transModel.add(account, session.requestToJson(), netId); + if (err) { + session.rspErr(500, 'server internal error'); + return; + } + + const nowTime = utils.getUtcTime(); + const transId = bcutils.genTransId + ( + bcconst.BC_FUNC_COMMON, + nowTime, + seqId, + [ + ] + ); + await transModel.update + ( + seqId, + [ + ['trans_id', transId] + ]); + const nonce = transId; + const orderId = transId; + const signature = await bc.soliditySha3Sign( + account, + orderId, + currency, + price, + nowTime, + nonce + ); + + const rspParams = [ + orderId, + currency, + price, + nowTime, + nonce, + signature + ]; + utils.arrayToStrings(rspParams); + + session.rspData({ + 'trans_id' : transId, + 'order_id': orderId, + 'params': rspParams + }); + } catch (e) { + session.rspErr(1, 1); + console.log(e); + } +} + +function init() { + app.registerHandler('GameItemMall', 'buy', buy); +} + +exports.init = init;