1
This commit is contained in:
parent
bfb9d35d6a
commit
4c2b34f678
15
server/game2006service/app.js
Normal file
15
server/game2006service/app.js
Normal file
@ -0,0 +1,15 @@
|
|||||||
|
const app = require('j7/app');
|
||||||
|
const event = require('j7/event');
|
||||||
|
const config = require('j7/config');
|
||||||
|
|
||||||
|
event.addListener(event.APP_INITIALIZED_EVENT, async () => {
|
||||||
|
require('./metadata/factory').init();
|
||||||
|
require('./middlewares/factory').init();
|
||||||
|
require('./controllers/factory').init();
|
||||||
|
require('./models/factory').init();
|
||||||
|
require('./services/factory').init();
|
||||||
|
app.injectionSession(require('./session'));
|
||||||
|
app.addStaticDirectory('/static', 'static');
|
||||||
|
app.listen(config('listen_port'));
|
||||||
|
});
|
||||||
|
app.init();
|
0
server/game2006service/constant.js
Normal file
0
server/game2006service/constant.js
Normal file
4
server/game2006service/controllers/factory.js
Normal file
4
server/game2006service/controllers/factory.js
Normal file
@ -0,0 +1,4 @@
|
|||||||
|
function init() {
|
||||||
|
}
|
||||||
|
|
||||||
|
exports.init = init;
|
8
server/game2006service/metadata/Config.js
Normal file
8
server/game2006service/metadata/Config.js
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
const utils = require('j7/utils');
|
||||||
|
const basewrap = require('./basewrap');
|
||||||
|
|
||||||
|
class Config extends basewrap.BaseWrap {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
module.exports = Config;
|
8
server/game2006service/metadata/GameDb2006.js
Normal file
8
server/game2006service/metadata/GameDb2006.js
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
const utils = require('j7/utils');
|
||||||
|
const basewrap = require('./basewrap');
|
||||||
|
|
||||||
|
class GameDb2006 extends basewrap.BaseWrap {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
module.exports = GameDb2006;
|
57
server/game2006service/metadata/basewrap.js
Normal file
57
server/game2006service/metadata/basewrap.js
Normal file
@ -0,0 +1,57 @@
|
|||||||
|
const utils = require('j7/utils');
|
||||||
|
|
||||||
|
class BaseWrap {
|
||||||
|
|
||||||
|
#writeLock = false;
|
||||||
|
|
||||||
|
constructor(json, metaClass) {
|
||||||
|
this._json = json;
|
||||||
|
//this._metaClass = metaClass;
|
||||||
|
this._metaName = metaClass['wrapClassName'];
|
||||||
|
}
|
||||||
|
|
||||||
|
lock() {
|
||||||
|
//this.#writeLock = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
_getHandler() {
|
||||||
|
return {
|
||||||
|
get: (obj, prop) => {
|
||||||
|
if (prop in obj._json) {
|
||||||
|
let val = obj._json[prop];
|
||||||
|
if (utils.isArray(val)) {
|
||||||
|
return new Proxy(val, {
|
||||||
|
set: () => {
|
||||||
|
console.log(33333);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
} else if (utils.isObject(val)) {
|
||||||
|
return new Proxy(val, {
|
||||||
|
set: () => {
|
||||||
|
console.log(33333);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
} else {
|
||||||
|
return val;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return prop in obj ? obj[prop] : null;
|
||||||
|
},
|
||||||
|
set: (obj, prop, val) => {
|
||||||
|
if (this.#writeLock) {
|
||||||
|
console.log(111111);
|
||||||
|
} else {
|
||||||
|
Reflect.set(obj, prop, val);
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
getMetaName() {
|
||||||
|
return this._metaName;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
exports.BaseWrap = BaseWrap;
|
130
server/game2006service/metadata/factory.js
Normal file
130
server/game2006service/metadata/factory.js
Normal file
@ -0,0 +1,130 @@
|
|||||||
|
const app = require('j7/app');
|
||||||
|
const utils = require('j7/utils');
|
||||||
|
const log = require('j7/log');
|
||||||
|
|
||||||
|
const metaClassList = [];
|
||||||
|
const metaClasses = {};
|
||||||
|
|
||||||
|
function registerMetaClass(fileName, primKey, wrapClass) {
|
||||||
|
const metaClass = {
|
||||||
|
'fileName' : fileName,
|
||||||
|
'primKey' : primKey,
|
||||||
|
'wrapClassName': wrapClass,
|
||||||
|
'wrapClass': require('./' + wrapClass),
|
||||||
|
'rawList' : [],
|
||||||
|
'rawHash' : {},
|
||||||
|
'wrapList' : [],
|
||||||
|
'wrapHash' : {},
|
||||||
|
};
|
||||||
|
metaClassList.push(metaClass);
|
||||||
|
metaClasses[wrapClass] = metaClass;
|
||||||
|
}
|
||||||
|
|
||||||
|
function load() {
|
||||||
|
metaClassList.forEach((metaClass) => {
|
||||||
|
const json = utils.readJsonFromFile(metaClass['fileName']);
|
||||||
|
if (!json) {
|
||||||
|
throw new Error('读取配置' + metaClass['fileName'] + '失败');
|
||||||
|
}
|
||||||
|
if (Array.isArray(json)) {
|
||||||
|
metaClass['rawList'] = json;
|
||||||
|
|
||||||
|
} else {
|
||||||
|
metaClass['rawList'].push(json);
|
||||||
|
}
|
||||||
|
let idx = 0;
|
||||||
|
metaClass['rawList'].forEach(function (item) {
|
||||||
|
const wrapOjb = new metaClass['wrapClass'](item, metaClass);
|
||||||
|
const wrapProxy = new Proxy(wrapOjb, wrapOjb._getHandler());
|
||||||
|
metaClass['wrapList'].push(wrapProxy);
|
||||||
|
if (metaClass['primKey'] == '') {
|
||||||
|
metaClass['rawHash'][idx] = item;
|
||||||
|
metaClass['wrapHash'][idx] = wrapProxy;
|
||||||
|
} else {
|
||||||
|
metaClass['rawHash'][item[metaClass['primKey']]] = item;
|
||||||
|
metaClass['wrapHash'][item[metaClass['primKey']]] = wrapProxy;
|
||||||
|
}
|
||||||
|
++idx;
|
||||||
|
});
|
||||||
|
//log.debug(utils.jsonEncode(metaClass));
|
||||||
|
});
|
||||||
|
{
|
||||||
|
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/';
|
||||||
|
if (utils.isOnlineEnv()) {
|
||||||
|
configDir = '../config/';
|
||||||
|
} else if (utils.getArgv('env') == 'dev'){
|
||||||
|
configDir = './config_dev/';
|
||||||
|
}
|
||||||
|
console.log(configDir, utils.getArgv('env'));
|
||||||
|
|
||||||
|
registerMetaClass(configDir + 'config.json',
|
||||||
|
'',
|
||||||
|
'Config'
|
||||||
|
);
|
||||||
|
|
||||||
|
registerMetaClass(configDir + 'gamedb2006.json',
|
||||||
|
'',
|
||||||
|
'GameDb2006'
|
||||||
|
);
|
||||||
|
|
||||||
|
load();
|
||||||
|
{
|
||||||
|
traverseMetaList('GameDb2006', (dbConf, idx) => {
|
||||||
|
app.registerDb('GameDb2006' + idx, dbConf);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function getMetaClass(name) {
|
||||||
|
return utils.hasKey(metaClasses, name) ? metaClasses[name] : null;
|
||||||
|
}
|
||||||
|
|
||||||
|
function getMetaByKey(name, key) {
|
||||||
|
const metaClass = getMetaClass(name);
|
||||||
|
return metaClass && key in metaClass['wrapHash'] ? metaClass['wrapHash'][key] : null;
|
||||||
|
}
|
||||||
|
|
||||||
|
function getMetaList(name) {
|
||||||
|
const metaClass = getMetaClass(name);
|
||||||
|
return metaClass ? metaClass['wrapList'] : null;
|
||||||
|
}
|
||||||
|
|
||||||
|
function callMetaStatic(name, method, ...args) {
|
||||||
|
const metaClass = getMetaClass(name);
|
||||||
|
return metaClass['wrapClass'][method](...args);
|
||||||
|
}
|
||||||
|
|
||||||
|
function traverseMetaList(name, cb) {
|
||||||
|
const metaList = getMetaList(name);
|
||||||
|
if (metaList) {
|
||||||
|
for (let i = 0; i < metaList.length; ++i) {
|
||||||
|
if (!cb(metaList[i], i, metaList.length)) {
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
exports.init = init;
|
||||||
|
|
||||||
|
exports.getMetaByKey = getMetaByKey;
|
||||||
|
exports.traverseMetaList = traverseMetaList;
|
||||||
|
exports.callMetaStatic = callMetaStatic;
|
5
server/game2006service/middlewares/factory.js
Normal file
5
server/game2006service/middlewares/factory.js
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
function init() {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
exports.init = init;
|
5
server/game2006service/models/factory.js
Normal file
5
server/game2006service/models/factory.js
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
function init() {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
exports.init = init;
|
49
server/game2006service/package-lock.json
generated
Normal file
49
server/game2006service/package-lock.json
generated
Normal file
@ -0,0 +1,49 @@
|
|||||||
|
{
|
||||||
|
"name": "game2006admin",
|
||||||
|
"version": "1.0.0",
|
||||||
|
"lockfileVersion": 2,
|
||||||
|
"requires": true,
|
||||||
|
"packages": {
|
||||||
|
"": {
|
||||||
|
"name": "game2006admin",
|
||||||
|
"version": "1.0.0",
|
||||||
|
"dependencies": {
|
||||||
|
"j7": "file:../../../third_party/j7"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"../../../third_party/j7": {
|
||||||
|
"version": "1.0.0",
|
||||||
|
"dependencies": {
|
||||||
|
"axios": "^0.26.1",
|
||||||
|
"body-parser": "^1.20.0",
|
||||||
|
"crc-32": "^1.2.1",
|
||||||
|
"express": "^4.17.2",
|
||||||
|
"minimist": "^1.2.6",
|
||||||
|
"mysql": "~2.18.1",
|
||||||
|
"node-xlsx": "^0.21.0",
|
||||||
|
"querystring": "^0.2.1",
|
||||||
|
"urlencode": "^1.1.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/j7": {
|
||||||
|
"resolved": "../../../third_party/j7",
|
||||||
|
"link": true
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"dependencies": {
|
||||||
|
"j7": {
|
||||||
|
"version": "file:../../../third_party/j7",
|
||||||
|
"requires": {
|
||||||
|
"axios": "^0.26.1",
|
||||||
|
"body-parser": "^1.20.0",
|
||||||
|
"crc-32": "^1.2.1",
|
||||||
|
"express": "^4.17.2",
|
||||||
|
"minimist": "^1.2.6",
|
||||||
|
"mysql": "~2.18.1",
|
||||||
|
"node-xlsx": "^0.21.0",
|
||||||
|
"querystring": "^0.2.1",
|
||||||
|
"urlencode": "^1.1.0"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
10
server/game2006service/package.json
Normal file
10
server/game2006service/package.json
Normal file
@ -0,0 +1,10 @@
|
|||||||
|
{
|
||||||
|
"name": "game2006admin",
|
||||||
|
"version": "1.0.0",
|
||||||
|
"description": "",
|
||||||
|
"private": true,
|
||||||
|
"scripts": {},
|
||||||
|
"dependencies": {
|
||||||
|
"j7": "file:../../../third_party/j7"
|
||||||
|
}
|
||||||
|
}
|
5
server/game2006service/services/factory.js
Normal file
5
server/game2006service/services/factory.js
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
function init() {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
exports.init = init;
|
46
server/game2006service/session.js
Normal file
46
server/game2006service/session.js
Normal file
@ -0,0 +1,46 @@
|
|||||||
|
const utils = require('j7/utils');
|
||||||
|
const app = require('j7/app');
|
||||||
|
const error = require('j7/error');
|
||||||
|
const modelsFactory = require('./models/factory');
|
||||||
|
const serviceFactory = require('./services/factory');
|
||||||
|
const metaFactory = require('./metadata/factory');
|
||||||
|
|
||||||
|
class Session {
|
||||||
|
|
||||||
|
constructor(req, rsp) {
|
||||||
|
this.req = req;
|
||||||
|
this.rsp = rsp;
|
||||||
|
this.nowTime = utils.getUtcTime();
|
||||||
|
this.useConns = {};
|
||||||
|
}
|
||||||
|
|
||||||
|
async destory() {
|
||||||
|
if (this.user) {
|
||||||
|
await this.user.destory();
|
||||||
|
}
|
||||||
|
for (let key in this.useConns) {
|
||||||
|
this.useConns[key].release();
|
||||||
|
}
|
||||||
|
//console.log(new Error().stack);
|
||||||
|
this.useConns = null;
|
||||||
|
}
|
||||||
|
|
||||||
|
getMeta(name, key) {
|
||||||
|
return metaFactory.getMetaByKey(name, key);
|
||||||
|
}
|
||||||
|
|
||||||
|
callMetaStatic(name, method, ...args) {
|
||||||
|
return metaFactory.callMetaStatic(name, method, this, ...args);
|
||||||
|
}
|
||||||
|
|
||||||
|
traverseMetaList(name, cb) {
|
||||||
|
return metaFactory.traverseMetaList(name, cb);
|
||||||
|
}
|
||||||
|
|
||||||
|
callMetaFactory(name, ...args) {
|
||||||
|
return metaFactory[name](this, ...args);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
module.exports = Session;
|
17
server/game2006service/user.js
Normal file
17
server/game2006service/user.js
Normal file
@ -0,0 +1,17 @@
|
|||||||
|
const utils = require('j7/utils');
|
||||||
|
const app = require('j7/app');
|
||||||
|
const db = require('j7/db');
|
||||||
|
const log = require('j7/log');
|
||||||
|
|
||||||
|
class User {
|
||||||
|
|
||||||
|
constructor(session) {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
async destory() {
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
exports.User = User;
|
Loading…
x
Reference in New Issue
Block a user