From 430ae926a41f893c898ea31f34a1c3f7d313a00b Mon Sep 17 00:00:00 2001 From: aozhiwei Date: Thu, 31 Aug 2023 14:59:44 +0800 Subject: [PATCH] 1 --- .../web3sign/controllers/benftmall_trans.js | 100 ++++++++++++++++++ server/web3sign/controllers/factory.js | 1 + 2 files changed, 101 insertions(+) create mode 100644 server/web3sign/controllers/benftmall_trans.js diff --git a/server/web3sign/controllers/benftmall_trans.js b/server/web3sign/controllers/benftmall_trans.js new file mode 100644 index 0000000..cb41669 --- /dev/null +++ b/server/web3sign/controllers/benftmall_trans.js @@ -0,0 +1,100 @@ +const app = require('j7/app'); +const utils = require('j7/utils'); +const bcutils = require('j7/bcutils'); +const bcconst = require('common/bcconst'); +const contract = require('common/contract'); +const serviceFactory = require('../services/factory'); + +async function buyPlanet(session) { + try { + const account = bcutils.toNormalAddress(session.request('account', '')); + const netId = session.request('net_id'); + const price = session.request('price'); + const currencyName = session.request('currency_name'); + const ids = session.request('ids', ''); + 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 = bc.getCurrencyAddressByName(currencyName); + const userAddress = bc.getUserAddress(); + { + if (!bc.isValidAddress(currency)) { + session.rspErr(500, 'ceg error'); + return; + } + } + + 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); + utils.safeDumpErrStack(e); + console.log(e); + } +} + +function init() { + app.registerHandler('BeNftMallTrans', 'buyPlanet', buyPlanet); +} + +exports.init = init; diff --git a/server/web3sign/controllers/factory.js b/server/web3sign/controllers/factory.js index e3b75d4..936a578 100644 --- a/server/web3sign/controllers/factory.js +++ b/server/web3sign/controllers/factory.js @@ -10,6 +10,7 @@ async function init() { add('activate721nft'); add('game_item_mall'); add('game_item_market'); + add('benftmall_trans'); } exports.init = init;