This commit is contained in:
aozhiwei 2023-07-02 09:15:34 +08:00
parent 0d84a32b64
commit 832b7f6d82
5 changed files with 107 additions and 141 deletions

View File

@ -1,8 +1,8 @@
const utils = require('j7/utils');
const basewrap = require('./basewrap');
class Contract extends basewrap.BaseWrap {
class BlockChainDb extends basewrap.BaseWrap {
}
module.exports = Contract;
module.exports = BlockChainDb;

View File

@ -1,8 +0,0 @@
const utils = require('j7/utils');
const basewrap = require('./basewrap');
class GameDb extends basewrap.BaseWrap {
}
module.exports = GameDb;

View File

@ -1,8 +0,0 @@
const utils = require('j7/utils');
const basewrap = require('./basewrap');
class MarketDb extends basewrap.BaseWrap {
}
module.exports = MarketDb;

View File

@ -1,8 +0,0 @@
const utils = require('j7/utils');
const basewrap = require('./basewrap');
class Web3 extends basewrap.BaseWrap {
}
module.exports = Web3;

View File

@ -4,8 +4,11 @@ const log = require('j7/log');
const metaClassList = [];
const metaClasses = {};
const web3ConfHash = {};
let web3ServiceConf = null;
let configDir = './config/';
function registerMetaClass(fileName, primKey, wrapClass, aliseName = '') {
function registerMetaClass(fileName, primKey, wrapClass) {
const metaClass = {
'fileName' : fileName,
'primKey' : primKey,
@ -15,34 +18,13 @@ function registerMetaClass(fileName, primKey, wrapClass, aliseName = '') {
'rawHash' : {},
'wrapList' : [],
'wrapHash' : {},
'aliseName': aliseName
};
metaClassList.push(metaClass);
if (aliseName) {
metaClasses[aliseName] = metaClass;
} else {
metaClasses[wrapClass] = metaClass;
}
}
function onAllLoadPost(classList) {
for (let i = 0; i < 3; ++i) {
classList.forEach((metaClass) => {
metaClass['wrapList'].forEach((item) => {
if (item['_init' + i]) {
item['_init' + i](exports);
}
});
});
}
classList.forEach((metaClass) => {
metaClass['wrapList'].forEach((item) => {
item.lock();
});
});
}
function loadMeta(metaClass) {
function load() {
metaClassList.forEach((metaClass) => {
const json = utils.readJsonFromFile(metaClass['fileName']);
if (!json) {
throw new Error('读取配置' + metaClass['fileName'] + '失败');
@ -67,18 +49,28 @@ function loadMeta(metaClass) {
}
++idx;
});
}
function load() {
metaClassList.forEach((metaClass) => {
loadMeta(metaClass);
//log.debug(utils.jsonEncode(metaClass));
});
onAllLoadPost(metaClassList);
{
for (let i = 0; i < 3; ++i) {
metaClassList.forEach((metaClass) => {
metaClass['wrapList'].forEach((item) => {
if (item['_init' + i]) {
item['_init' + i](exports);
}
});
});
}
metaClassList.forEach((metaClass) => {
metaClass['wrapList'].forEach((item) => {
item.lock();
});
});
}
}
function init() {
let configDir = './config/';
async function init() {
configDir = './config/';
if (utils.isOnlineEnv()) {
configDir = '../config/';
} else if (utils.getArgv('env') == 'dev'){
@ -92,50 +84,41 @@ function init() {
} else if (utils.getArgv('env') == 'dev'){
resDir = './res_dev/';
}
console.log(resDir);
registerMetaClass(configDir + 'config.json',
'',
'Config'
);
registerMetaClass(configDir + 'web3.json',
registerMetaClass(configDir + 'blockchaindb_mysql.json',
'',
'Web3'
'BlockChainDb'
);
registerMetaClass(configDir + 'contract.json',
registerMetaClass(configDir + 'web3service.cluster.json',
'',
'Contract'
);
registerMetaClass(configDir + 'marketdb_mysql.json',
'',
'MarketDb'
);
registerMetaClass(configDir + 'gamedb_mysql.json',
'',
'GameDb'
'Web3Service'
);
// registerMetaClass(resDir + 'item@item.json',
// 'id',
// 'Item'
// );
load();
{
const classList = [];
getMetaByKey('PresentList', '0')['list'].forEach((item) => {
registerMetaClass(resDir + item + '@present.json',
'id',
'Present',
'Present' + item
);
const metaClass = getMetaClass('Present' + item);
loadMeta(metaClass);
classList.push(metaClass);
traverseMetaList('BlockChainDb', (dbConf, idx) => {
app.registerDb('BlockChainDb' + idx, dbConf);
});
onAllLoadPost(classList);
}
{
traverseMetaList('MarketDb', (dbConf, idx) => {
app.registerDb('MarketDb' + idx, dbConf);
traverseMetaList('Web3Service', (item, idx) => {
if (item['instance_id'] == app.getInstanceId()) {
web3ServiceConf = item;
item['nets'].forEach((netId) => {
const netDir = configDir + 'nets/' + netId + '/';
web3ConfHash[netId] = {
'Web3': utils.readJsonFromFile(netDir + 'web3.json'),
'Contract': utils.readJsonFromFile(netDir + 'contract.json')
};
});
}
{
traverseMetaList('GameDb', (dbConf, idx) => {
app.registerDb('GameDb' + idx, dbConf);
});
}
}
@ -170,34 +153,42 @@ function traverseMetaList(name, cb) {
}
}
function getWeb3Conf() {
return getMetaByKey('Web3', '0');
}
function getContracts() {
return getMetaList('Contract');
}
function getContractByName(name) {
return getMetaByKey('Contract', name);
}
function getContractByAddress(address) {
let contract = null;
getContracts().forEach((item) => {
if (item['address'] == address) {
contract = item;
function getWeb3Conf(netId) {
const keys = Object.keys(web3ConfHash);
for (let i = 0; i < keys.length; ++i) {
if (keys[i] == netId) {
return web3ConfHash[keys[i]]['Web3'];
}
});
return contract;
}
return null;
}
function getUserAddress() {
return getWeb3Conf()['user_address'];
function getWeb3ServiceConf() {
return web3ServiceConf;
}
function getPrivateKey() {
return getWeb3Conf()['private_key'];
function getContractsConf(netId) {
const keys = Object.keys(web3ConfHash);
for (let i = 0; i < keys.length; ++i) {
if (keys[i] == netId) {
return web3ConfHash[keys[i]]['Contract'];
}
}
return null;
}
function getNetList() {
const netList = [];
const keys = Object.keys(web3ConfHash);
for (let i = 0; i < keys.length; ++i) {
netList.push(keys[i]);
}
return netList;
}
function getNetDir(netId) {
const netDir = configDir + 'nets/' + netId + '/';
return netDir;
}
exports.init = init;
@ -207,8 +198,7 @@ exports.traverseMetaList = traverseMetaList;
exports.callMetaStatic = callMetaStatic;
exports.getWeb3Conf = getWeb3Conf;
exports.getContracts = getContracts;
exports.getContractByName = getContractByName;
exports.getContractByAddress = getContractByAddress;
exports.getUserAddress = getUserAddress;
exports.getPrivateKey = getPrivateKey;
exports.getWeb3ServiceConf = getWeb3ServiceConf;
exports.getContractsConf = getContractsConf;
exports.getNetList = getNetList;
exports.getNetDir = getNetDir;