From 4c2b34f678aebb8ccc6059d1a309c5c8ebd58230 Mon Sep 17 00:00:00 2001 From: aozhiwei Date: Wed, 21 Sep 2022 10:29:21 +0800 Subject: [PATCH 1/8] 1 --- server/game2006service/app.js | 15 ++ server/game2006service/constant.js | 0 server/game2006service/controllers/factory.js | 4 + server/game2006service/metadata/Config.js | 8 ++ server/game2006service/metadata/GameDb2006.js | 8 ++ server/game2006service/metadata/basewrap.js | 57 ++++++++ server/game2006service/metadata/factory.js | 130 ++++++++++++++++++ server/game2006service/middlewares/factory.js | 5 + server/game2006service/models/factory.js | 5 + server/game2006service/package-lock.json | 49 +++++++ server/game2006service/package.json | 10 ++ server/game2006service/services/factory.js | 5 + server/game2006service/session.js | 46 +++++++ server/game2006service/user.js | 17 +++ 14 files changed, 359 insertions(+) create mode 100644 server/game2006service/app.js create mode 100644 server/game2006service/constant.js create mode 100644 server/game2006service/controllers/factory.js create mode 100644 server/game2006service/metadata/Config.js create mode 100644 server/game2006service/metadata/GameDb2006.js create mode 100644 server/game2006service/metadata/basewrap.js create mode 100644 server/game2006service/metadata/factory.js create mode 100644 server/game2006service/middlewares/factory.js create mode 100644 server/game2006service/models/factory.js create mode 100644 server/game2006service/package-lock.json create mode 100644 server/game2006service/package.json create mode 100644 server/game2006service/services/factory.js create mode 100644 server/game2006service/session.js create mode 100644 server/game2006service/user.js diff --git a/server/game2006service/app.js b/server/game2006service/app.js new file mode 100644 index 00000000..ad3714e7 --- /dev/null +++ b/server/game2006service/app.js @@ -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(); diff --git a/server/game2006service/constant.js b/server/game2006service/constant.js new file mode 100644 index 00000000..e69de29b diff --git a/server/game2006service/controllers/factory.js b/server/game2006service/controllers/factory.js new file mode 100644 index 00000000..538ced9a --- /dev/null +++ b/server/game2006service/controllers/factory.js @@ -0,0 +1,4 @@ +function init() { +} + +exports.init = init; diff --git a/server/game2006service/metadata/Config.js b/server/game2006service/metadata/Config.js new file mode 100644 index 00000000..14b21430 --- /dev/null +++ b/server/game2006service/metadata/Config.js @@ -0,0 +1,8 @@ +const utils = require('j7/utils'); +const basewrap = require('./basewrap'); + +class Config extends basewrap.BaseWrap { + +} + +module.exports = Config; diff --git a/server/game2006service/metadata/GameDb2006.js b/server/game2006service/metadata/GameDb2006.js new file mode 100644 index 00000000..ae6b51d6 --- /dev/null +++ b/server/game2006service/metadata/GameDb2006.js @@ -0,0 +1,8 @@ +const utils = require('j7/utils'); +const basewrap = require('./basewrap'); + +class GameDb2006 extends basewrap.BaseWrap { + +} + +module.exports = GameDb2006; diff --git a/server/game2006service/metadata/basewrap.js b/server/game2006service/metadata/basewrap.js new file mode 100644 index 00000000..39b5d251 --- /dev/null +++ b/server/game2006service/metadata/basewrap.js @@ -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; diff --git a/server/game2006service/metadata/factory.js b/server/game2006service/metadata/factory.js new file mode 100644 index 00000000..2b7bd0f3 --- /dev/null +++ b/server/game2006service/metadata/factory.js @@ -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; diff --git a/server/game2006service/middlewares/factory.js b/server/game2006service/middlewares/factory.js new file mode 100644 index 00000000..adf60be2 --- /dev/null +++ b/server/game2006service/middlewares/factory.js @@ -0,0 +1,5 @@ +function init() { + +} + +exports.init = init; diff --git a/server/game2006service/models/factory.js b/server/game2006service/models/factory.js new file mode 100644 index 00000000..adf60be2 --- /dev/null +++ b/server/game2006service/models/factory.js @@ -0,0 +1,5 @@ +function init() { + +} + +exports.init = init; diff --git a/server/game2006service/package-lock.json b/server/game2006service/package-lock.json new file mode 100644 index 00000000..bc6a1dba --- /dev/null +++ b/server/game2006service/package-lock.json @@ -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" + } + } + } +} diff --git a/server/game2006service/package.json b/server/game2006service/package.json new file mode 100644 index 00000000..f622ebeb --- /dev/null +++ b/server/game2006service/package.json @@ -0,0 +1,10 @@ +{ + "name": "game2006admin", + "version": "1.0.0", + "description": "", + "private": true, + "scripts": {}, + "dependencies": { + "j7": "file:../../../third_party/j7" + } +} diff --git a/server/game2006service/services/factory.js b/server/game2006service/services/factory.js new file mode 100644 index 00000000..adf60be2 --- /dev/null +++ b/server/game2006service/services/factory.js @@ -0,0 +1,5 @@ +function init() { + +} + +exports.init = init; diff --git a/server/game2006service/session.js b/server/game2006service/session.js new file mode 100644 index 00000000..6a1823ef --- /dev/null +++ b/server/game2006service/session.js @@ -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; diff --git a/server/game2006service/user.js b/server/game2006service/user.js new file mode 100644 index 00000000..a10f6b28 --- /dev/null +++ b/server/game2006service/user.js @@ -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; From 96df91f0812f097f733bd6cef6765d1f8811e4df Mon Sep 17 00:00:00 2001 From: aozhiwei Date: Wed, 21 Sep 2022 10:31:29 +0800 Subject: [PATCH 2/8] 1 --- server/bin/game2006service/game2006service | 3 +++ server/bin/game2006service/gm | 8 ++++++++ 2 files changed, 11 insertions(+) create mode 100755 server/bin/game2006service/game2006service create mode 100755 server/bin/game2006service/gm diff --git a/server/bin/game2006service/game2006service b/server/bin/game2006service/game2006service new file mode 100755 index 00000000..60c7b232 --- /dev/null +++ b/server/bin/game2006service/game2006service @@ -0,0 +1,3 @@ +#!/bin/bash + +node ../../game2006service/app.js diff --git a/server/bin/game2006service/gm b/server/bin/game2006service/gm new file mode 100755 index 00000000..e80963f2 --- /dev/null +++ b/server/bin/game2006service/gm @@ -0,0 +1,8 @@ +#!/bin/bash + +while true +do + read -p '> ' cmd + curl "http://127.0.0.1:7691/webapp/index.php?c=GM&a=execCmd&cmd=${cmd}" |jq . + echo "" +done From 47f8462ea091286d3ca175f87402742e1a3a2ba5 Mon Sep 17 00:00:00 2001 From: aozhiwei Date: Wed, 21 Sep 2022 10:35:32 +0800 Subject: [PATCH 3/8] 1 --- server/game2006service/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/server/game2006service/package.json b/server/game2006service/package.json index f622ebeb..1e0745b8 100644 --- a/server/game2006service/package.json +++ b/server/game2006service/package.json @@ -5,6 +5,6 @@ "private": true, "scripts": {}, "dependencies": { - "j7": "file:../../../third_party/j7" + "j7": "file:../../third_party/j7" } } From f2853982783c1d83d80f4c92dde4de2bd13ea236 Mon Sep 17 00:00:00 2001 From: aozhiwei Date: Wed, 21 Sep 2022 10:43:24 +0800 Subject: [PATCH 4/8] 1 --- server/game2006service/package-lock.json | 23 ++++++++++++++++++++--- 1 file changed, 20 insertions(+), 3 deletions(-) diff --git a/server/game2006service/package-lock.json b/server/game2006service/package-lock.json index bc6a1dba..a467ef99 100644 --- a/server/game2006service/package-lock.json +++ b/server/game2006service/package-lock.json @@ -8,11 +8,12 @@ "name": "game2006admin", "version": "1.0.0", "dependencies": { - "j7": "file:../../../third_party/j7" + "j7": "file:../../third_party/j7" } }, "../../../third_party/j7": { "version": "1.0.0", + "extraneous": true, "dependencies": { "axios": "^0.26.1", "body-parser": "^1.20.0", @@ -25,14 +26,29 @@ "urlencode": "^1.1.0" } }, + "../../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", + "redis": "^4.1.0", + "urlencode": "^1.1.0" + } + }, "node_modules/j7": { - "resolved": "../../../third_party/j7", + "resolved": "../../third_party/j7", "link": true } }, "dependencies": { "j7": { - "version": "file:../../../third_party/j7", + "version": "file:../../third_party/j7", "requires": { "axios": "^0.26.1", "body-parser": "^1.20.0", @@ -42,6 +58,7 @@ "mysql": "~2.18.1", "node-xlsx": "^0.21.0", "querystring": "^0.2.1", + "redis": "^4.1.0", "urlencode": "^1.1.0" } } From 4b0897026b475534b58ccdf1fdd4ca0f04dfd75f Mon Sep 17 00:00:00 2001 From: aozhiwei Date: Wed, 21 Sep 2022 10:49:41 +0800 Subject: [PATCH 5/8] 1 --- server/bin/game2006service/config/config.json | 3 +++ server/bin/game2006service/config/gamedb2006.json | 3 +++ 2 files changed, 6 insertions(+) create mode 100644 server/bin/game2006service/config/config.json create mode 100644 server/bin/game2006service/config/gamedb2006.json diff --git a/server/bin/game2006service/config/config.json b/server/bin/game2006service/config/config.json new file mode 100644 index 00000000..0db3279e --- /dev/null +++ b/server/bin/game2006service/config/config.json @@ -0,0 +1,3 @@ +{ + +} diff --git a/server/bin/game2006service/config/gamedb2006.json b/server/bin/game2006service/config/gamedb2006.json new file mode 100644 index 00000000..0db3279e --- /dev/null +++ b/server/bin/game2006service/config/gamedb2006.json @@ -0,0 +1,3 @@ +{ + +} From 037fc12889fe2e14611a08c3192fcbb6ef0742dc Mon Sep 17 00:00:00 2001 From: aozhiwei Date: Wed, 21 Sep 2022 10:57:11 +0800 Subject: [PATCH 6/8] 1 --- server/game2006service/app.js | 1 + server/game2006service/tasks/factory.js | 5 +++++ 2 files changed, 6 insertions(+) create mode 100644 server/game2006service/tasks/factory.js diff --git a/server/game2006service/app.js b/server/game2006service/app.js index ad3714e7..4423ac85 100644 --- a/server/game2006service/app.js +++ b/server/game2006service/app.js @@ -8,6 +8,7 @@ event.addListener(event.APP_INITIALIZED_EVENT, async () => { require('./controllers/factory').init(); require('./models/factory').init(); require('./services/factory').init(); + require('./tasks/factory').init(); app.injectionSession(require('./session')); app.addStaticDirectory('/static', 'static'); app.listen(config('listen_port')); diff --git a/server/game2006service/tasks/factory.js b/server/game2006service/tasks/factory.js new file mode 100644 index 00000000..67fa349a --- /dev/null +++ b/server/game2006service/tasks/factory.js @@ -0,0 +1,5 @@ +function init() { + +} + +expors.init = init; From 9f05e8b36d54ec6db3dbe912481376716168aa72 Mon Sep 17 00:00:00 2001 From: aozhiwei Date: Wed, 21 Sep 2022 11:03:09 +0800 Subject: [PATCH 7/8] 1 --- webapp/controller/BattleController.class.php | 9 ++++----- webapp/services/BattleDataService.php | 4 ++++ 2 files changed, 8 insertions(+), 5 deletions(-) diff --git a/webapp/controller/BattleController.class.php b/webapp/controller/BattleController.class.php index 800d650a..af22e6d1 100644 --- a/webapp/controller/BattleController.class.php +++ b/webapp/controller/BattleController.class.php @@ -38,11 +38,10 @@ class BattleController extends BaseAuthedController { 'modifytime' => $this->_getNowTime(), ) ); - $this->_rspData($battleDataService->getReward()); - } - - public function battleReportNew() - { + error_log(json_encode($battleDataService->getReward())); + $this->_rspData(array( + 'reward' => $battleDataService->getReward() + )); } public function getBattleData() diff --git a/webapp/services/BattleDataService.php b/webapp/services/BattleDataService.php index db0e6eac..28c8d614 100644 --- a/webapp/services/BattleDataService.php +++ b/webapp/services/BattleDataService.php @@ -70,6 +70,7 @@ class BattleDataService extends BaseService { 'ceg_uplimit' => 0, 'obtain_ceg' => 0, ), + 'total_ceg' => 0, 'items' => array() ); private $rankActivityService = null; @@ -620,14 +621,17 @@ class BattleDataService extends BaseService { if ($heroPvpCeg > 0) { $heroPvpCeg = Hero::gainGoldPvp($this->heroDto, $heroPvpCeg); $this->reward['hero']['obtain_ceg'] = $this->heroDto['current_pvp_get_ceg'] + $heroPvpCeg; + $this->reward['total_ceg'] += $heroPvpCeg; } if ($weaponPvpCeg1 > 0) { $weaponPvpCeg1 = Gun::gainGoldPvp($this->weapon1Dto, $weaponPvpCeg1); $this->reward['weapon1']['obtain_ceg'] = $this->weapon1Dto['current_pvp_get_ceg'] + $weaponPvpCeg1; + $this->reward['total_ceg'] += $weaponPvpCeg1; } if ($weaponPvpCeg2 > 0) { $weaponPvpCeg2 = Gun::gainGoldPvp($this->weapon1Dto, $weaponPvpCeg2); $this->reward['weapon2']['obtain_ceg'] = $this->weapon2Dto['current_pvp_get_ceg'] + $weaponPvpCeg2; + $this->reward['total_ceg'] += $weaponPvpCeg2; } error_log(json_encode(array( 'new_heroPvpCeg' => $heroPvpCeg, From d70dd0593252c3438545e62d4764ccf7ad5eadc0 Mon Sep 17 00:00:00 2001 From: aozhiwei Date: Wed, 21 Sep 2022 11:05:06 +0800 Subject: [PATCH 8/8] 1 --- server/game2006service/tasks/factory.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/server/game2006service/tasks/factory.js b/server/game2006service/tasks/factory.js index 67fa349a..adf60be2 100644 --- a/server/game2006service/tasks/factory.js +++ b/server/game2006service/tasks/factory.js @@ -2,4 +2,4 @@ function init() { } -expors.init = init; +exports.init = init;