diff --git a/gm-server/app.ts b/gm-server/app.ts index 8f17a36f6..f17e67e54 100644 --- a/gm-server/app.ts +++ b/gm-server/app.ts @@ -1,6 +1,7 @@ import 'reflect-metadata' import * as mongoose from 'mongoose'; import { Application, IBoot } from 'egg'; +import { loadGmDb } from '@db/index'; export default class FooBoot implements IBoot { private readonly app: Application; @@ -14,6 +15,7 @@ export default class FooBoot implements IBoot { // Config, plugin files are referred,` // this is the last chance to modify the config. await this.connectDB(this.app) + await this.connectGMDB(this.app); } configDidLoad() { @@ -52,6 +54,15 @@ export default class FooBoot implements IBoot { } } + public async connectGMDB(app: Application) { + const { url, options } = app.config.gmmongoose + if (url) { + const connection = await mongoose.createConnection(url, options) + app.context.connectionGM = connection; + loadGmDb(connection); + } + } + //#endregion } diff --git a/gm-server/app/controller/home.ts b/gm-server/app/controller/home.ts index f5599c3a7..9d2038ce4 100644 --- a/gm-server/app/controller/home.ts +++ b/gm-server/app/controller/home.ts @@ -1,8 +1,9 @@ +import { STATUS } from '@consts'; import { Controller } from 'egg'; export default class HomeController extends Controller { public async index() { const { ctx } = this; - ctx.body = await ctx.service.test.sayHi('egg'); + ctx.body = await ctx.service.utils.resResult(STATUS.SUCCESS); } } diff --git a/gm-server/app/middleware/proxy.ts b/gm-server/app/middleware/proxy.ts new file mode 100644 index 000000000..24f086987 --- /dev/null +++ b/gm-server/app/middleware/proxy.ts @@ -0,0 +1,4 @@ +import proxy from 'egg-http-proxy-middleware'; + +module.exports = proxy; + diff --git a/gm-server/config/config.alpha.ts b/gm-server/config/config.alpha.ts index 6abb8606c..db8263044 100644 --- a/gm-server/config/config.alpha.ts +++ b/gm-server/config/config.alpha.ts @@ -1,76 +1,19 @@ import { EggAppConfig, EggAppInfo, PowerPartial } from 'egg'; -const path = require('path'); +import defaultConfig from './config.default'; export default (appInfo: EggAppInfo) => { const config = {} as PowerPartial; - // override config from framework / plugin - // use for cookie sign key, should change to your own and keep security - config.keys = appInfo.name + '_1600244957952_7142'; - - // add your egg config in here - config.middleware = ['log']; - - config.cluster = { - listen: { - port: 7500 - } - }; // add your special config in here - const bizConfig = { - sourceUrl: `https://github.com/eggjs/examples/tree/master/${appInfo.name}`, - }; config.mongoose = { url: 'mongodb://dbop:zyzDev2021@dds-8vb5c74ba4263da41.mongodb.zhangbei.rds.aliyuncs.com:3717,dds-8vb5c74ba4263da42.mongodb.zhangbei.rds.aliyuncs.com:3717/zyz?replicaSet=mgset-506991391', // 内网 options: { useNewUrlParser: true, useUnifiedTopology: true }, }; - config.security = { - csrf: { - enable: false, - ignoreJSON: true - }, - domainWhiteList: ['http://localhost:9000'] - }; - - // 配置上传 - config.multipart = { - fileSize: '100mb', - mode: 'stream', - whitelist: [ - '.json', '.ts', '.zip' - ], - fileExtensions: ['.json', '.ts', '.zip', '.tar.gz'], // 扩展几种上传的文件格式 - autoFields: true - }; - - // config.alinode = { - // appid: '86043', - // secret: '54ef0364995b0c4f2ab42150e29ad30df8327a3a', - // error_log: [ '/root/logs/zyz/zyz-web.log', '/root/logs/zyz/common-error.log', '/root/logs/zyz/egg-agent.log' ], - // packages: [ '/root/zyz/web-server/package.json' ], - // }; - - config.customLogger = { - linkLogger: { - file: path.join(appInfo.root, 'logs/gm-server/link-log.log'), - formatter(meta) { - return `[${meta.level}] [${meta.date}] ${meta.message}`; - }, - }, - }; - - config.logrotator = { - filesRotateBySize: [ - path.join(appInfo.root, 'logs/link-log.log'), - ], - maxFileSize: 1024, - }; - // the return config will combines to EggAppConfig return { + ...defaultConfig(appInfo), ...config, - ...bizConfig, }; }; diff --git a/gm-server/config/config.default.ts b/gm-server/config/config.default.ts index ddead844a..a8e585719 100644 --- a/gm-server/config/config.default.ts +++ b/gm-server/config/config.default.ts @@ -9,7 +9,7 @@ export default (appInfo: EggAppInfo) => { config.keys = appInfo.name + '_1600244957952_7142'; // add your egg config in here - config.middleware = ['log']; + config.middleware = ['log', 'proxy']; config.cluster = { listen: { @@ -25,7 +25,11 @@ export default (appInfo: EggAppInfo) => { url: 'mongodb://dbop:zyzdbopbantu@dds-8vbdb47c6fb58a541.mongodb.zhangbei.rds.aliyuncs.com:3717,dds-8vbdb47c6fb58a542.mongodb.zhangbei.rds.aliyuncs.com:3717/zyz?replicaSet=mgset-500808098', // 内网 options: { useNewUrlParser: true, useUnifiedTopology: true }, }; - + config.gmmongoose = { + url: 'mongodb://dbop:zyzGm2021@dds-8vb9964bb4cc7f241.mongodb.zhangbei.rds.aliyuncs.com:3717,dds-8vb9964bb4cc7f242.mongodb.zhangbei.rds.aliyuncs.com:3717/zyzgm?replicaSet=mgset-507933150', // 内网 + options: { useNewUrlParser: true, useUnifiedTopology: true }, + }; + config.security = { csrf: { enable: false, @@ -36,9 +40,13 @@ export default (appInfo: EggAppInfo) => { // 配置上传 config.multipart = { - fileSize: '50mb', + fileSize: '100mb', mode: 'stream', - fileExtensions: ['.zip', '.tar.gz'], // 扩展几种上传的文件格式 + whitelist: [ + '.json', '.ts', '.zip' + ], + fileExtensions: ['.json', '.ts', '.zip', '.tar.gz'], // 扩展几种上传的文件格式 + autoFields: true }; // config.alinode = { @@ -59,11 +67,31 @@ export default (appInfo: EggAppInfo) => { config.logrotator = { filesRotateBySize: [ - path.join(appInfo.root, 'logs/link-log.log'), + path.join(appInfo.root, 'logs/gm-server/link-log.log'), ], maxFileSize: 1024, }; + config.bigServers = [ // 大区数据 + { id: 1, env: 'stable', name: "常山少年", domain: 'http://pinus_gm_test.trgame.cn' }, + { id: 2, env: 'alpha', name: "测试服", domain: 'http://zyz_gm.trgame.cn' }, + { id: 3, env: 'dev', name: "开发服", domain: 'http://zyzdev_gm.trgame.cn' } + ]; + + let httpProxy: any = {}; + for(let { env, domain } of config.bigServers) { + httpProxy[`/api/${env}`] = { + target: domain, + changeOrigin: true, + secure: true, + pathRewrite: function(path) { + console.log('proxy', path, path.replace(`/api/${env}`, '/api')) + return path.replace(`/api/${env}`, '/api') + } + } + } + config.proxy = httpProxy; + // the return config will combines to EggAppConfig return { ...config, diff --git a/gm-server/config/config.dev.ts b/gm-server/config/config.dev.ts index 6abb8606c..db8263044 100644 --- a/gm-server/config/config.dev.ts +++ b/gm-server/config/config.dev.ts @@ -1,76 +1,19 @@ import { EggAppConfig, EggAppInfo, PowerPartial } from 'egg'; -const path = require('path'); +import defaultConfig from './config.default'; export default (appInfo: EggAppInfo) => { const config = {} as PowerPartial; - // override config from framework / plugin - // use for cookie sign key, should change to your own and keep security - config.keys = appInfo.name + '_1600244957952_7142'; - - // add your egg config in here - config.middleware = ['log']; - - config.cluster = { - listen: { - port: 7500 - } - }; // add your special config in here - const bizConfig = { - sourceUrl: `https://github.com/eggjs/examples/tree/master/${appInfo.name}`, - }; config.mongoose = { url: 'mongodb://dbop:zyzDev2021@dds-8vb5c74ba4263da41.mongodb.zhangbei.rds.aliyuncs.com:3717,dds-8vb5c74ba4263da42.mongodb.zhangbei.rds.aliyuncs.com:3717/zyz?replicaSet=mgset-506991391', // 内网 options: { useNewUrlParser: true, useUnifiedTopology: true }, }; - config.security = { - csrf: { - enable: false, - ignoreJSON: true - }, - domainWhiteList: ['http://localhost:9000'] - }; - - // 配置上传 - config.multipart = { - fileSize: '100mb', - mode: 'stream', - whitelist: [ - '.json', '.ts', '.zip' - ], - fileExtensions: ['.json', '.ts', '.zip', '.tar.gz'], // 扩展几种上传的文件格式 - autoFields: true - }; - - // config.alinode = { - // appid: '86043', - // secret: '54ef0364995b0c4f2ab42150e29ad30df8327a3a', - // error_log: [ '/root/logs/zyz/zyz-web.log', '/root/logs/zyz/common-error.log', '/root/logs/zyz/egg-agent.log' ], - // packages: [ '/root/zyz/web-server/package.json' ], - // }; - - config.customLogger = { - linkLogger: { - file: path.join(appInfo.root, 'logs/gm-server/link-log.log'), - formatter(meta) { - return `[${meta.level}] [${meta.date}] ${meta.message}`; - }, - }, - }; - - config.logrotator = { - filesRotateBySize: [ - path.join(appInfo.root, 'logs/link-log.log'), - ], - maxFileSize: 1024, - }; - // the return config will combines to EggAppConfig return { + ...defaultConfig(appInfo), ...config, - ...bizConfig, }; }; diff --git a/gm-server/config/config.isbn.ts b/gm-server/config/config.isbn.ts index 2b2cb99f8..49428e217 100644 --- a/gm-server/config/config.isbn.ts +++ b/gm-server/config/config.isbn.ts @@ -1,72 +1,19 @@ import { EggAppConfig, EggAppInfo, PowerPartial } from 'egg'; -const path = require('path'); +import defaultConfig from './config.default'; export default (appInfo: EggAppInfo) => { const config = {} as PowerPartial; - // override config from framework / plugin - // use for cookie sign key, should change to your own and keep security - config.keys = appInfo.name + '_1600244957952_7142'; - - // add your egg config in here - config.middleware = ['log']; - - config.cluster = { - listen: { - port: 7500 - } - }; - // add your special config in here - const bizConfig = { - sourceUrl: `https://github.com/eggjs/examples/tree/master/${appInfo.name}`, - }; + // add your special config in here config.mongoose = { url: 'mongodb://root:Bantus123@dds-8vb74337eab84d641.mongodb.zhangbei.rds.aliyuncs.com:3717,dds-8vb74337eab84d642.mongodb.zhangbei.rds.aliyuncs.com:3717/admin?replicaSet=mgset-504694158', // 内网 options: { useNewUrlParser: true, useUnifiedTopology: true }, }; - - config.security = { - csrf: { - enable: false, - ignoreJSON: true - }, - domainWhiteList: ['http://localhost:9000'] - }; - - // 配置上传 - config.multipart = { - fileSize: '50mb', - mode: 'stream', - fileExtensions: ['.zip', '.tar.gz'], // 扩展几种上传的文件格式 - }; - - // config.alinode = { - // appid: '86043', - // secret: '54ef0364995b0c4f2ab42150e29ad30df8327a3a', - // error_log: [ '/root/logs/zyz/zyz-web.log', '/root/logs/zyz/common-error.log', '/root/logs/zyz/egg-agent.log' ], - // packages: [ '/root/zyz/web-server/package.json' ], - // }; - - config.customLogger = { - linkLogger: { - file: path.join(appInfo.root, 'logs/gm-server/link-log.log'), - formatter(meta) { - return `[${meta.level}] [${meta.date}] ${meta.message}`; - }, - }, - }; - - config.logrotator = { - filesRotateBySize: [ - path.join(appInfo.root, 'logs/link-log.log'), - ], - maxFileSize: 1024, - }; // the return config will combines to EggAppConfig return { + ...defaultConfig(appInfo), ...config, - ...bizConfig, }; }; diff --git a/gm-server/config/config.local.ts b/gm-server/config/config.local.ts index 916b5f9c7..a89c194f0 100644 --- a/gm-server/config/config.local.ts +++ b/gm-server/config/config.local.ts @@ -1,76 +1,28 @@ import { EggAppConfig, EggAppInfo, PowerPartial } from 'egg'; -const path = require('path'); +import defaultConfig from './config.default'; export default (appInfo: EggAppInfo) => { const config = {} as PowerPartial; - // override config from framework / plugin - // use for cookie sign key, should change to your own and keep security - config.keys = appInfo.name + '_1600244957952_7142'; - - // add your egg config in here - config.middleware = ['log']; - config.cluster = { listen: { port: 7500 } }; - // add your special config in here - const bizConfig = { - sourceUrl: `https://github.com/eggjs/examples/tree/master/${appInfo.name}`, - }; config.mongoose = { url: 'mongodb://127.0.0.1:27017/zyz', // 内网 options: { useNewUrlParser: true, useUnifiedTopology: true }, }; - - config.security = { - csrf: { - enable: false, - ignoreJSON: true - }, - domainWhiteList: ['http://localhost:9000'] - }; - - // 配置上传 - config.multipart = { - fileSize: '100mb', - mode: 'stream', - whitelist: [ - '.json', '.ts', '.zip' - ], - fileExtensions: ['.json', '.ts', '.zip', '.tar.gz'], // 扩展几种上传的文件格式 - autoFields: true - }; - - // config.alinode = { - // appid: '86043', - // secret: '54ef0364995b0c4f2ab42150e29ad30df8327a3a', - // error_log: [ '/root/logs/zyz/zyz-web.log', '/root/logs/zyz/common-error.log', '/root/logs/zyz/egg-agent.log' ], - // packages: [ '/root/zyz/web-server/package.json' ], - // }; - - config.customLogger = { - linkLogger: { - file: path.join(appInfo.root, 'logs/gm-server/link-log.log'), - formatter(meta) { - return `[${meta.level}] [${meta.date}] ${meta.message}`; - }, - }, - }; - - config.logrotator = { - filesRotateBySize: [ - path.join(appInfo.root, 'logs/link-log.log'), - ], - maxFileSize: 1024, + config.gmmongoose = { + url: 'mongodb://127.0.0.1:27017/zyzgm', // 内网 + options: { useNewUrlParser: true, useUnifiedTopology: true }, }; + config.proxy = {}; // the return config will combines to EggAppConfig return { + ...defaultConfig(appInfo), ...config, - ...bizConfig, }; }; diff --git a/gm-server/config/config.monitor.ts b/gm-server/config/config.monitor.ts index 48cc18ebd..73e4dece0 100644 --- a/gm-server/config/config.monitor.ts +++ b/gm-server/config/config.monitor.ts @@ -1,72 +1,20 @@ import { EggAppConfig, EggAppInfo, PowerPartial } from 'egg'; -const path = require('path'); +import defaultConfig from './config.default'; export default (appInfo: EggAppInfo) => { const config = {} as PowerPartial; - // override config from framework / plugin - // use for cookie sign key, should change to your own and keep security - config.keys = appInfo.name + '_1600244957952_7142'; - - // add your egg config in here - config.middleware = ['log']; + // add your special config in here - config.cluster = { - listen: { - port: 7500 - } - }; - // add your special config in here - const bizConfig = { - sourceUrl: `https://github.com/eggjs/examples/tree/master/${appInfo.name}`, - }; - config.mongoose = { url: 'mongodb://dbop:zyzMon2021@dds-8vb7474e31ba7ed41.mongodb.zhangbei.rds.aliyuncs.com:3717,dds-8vb7474e31ba7ed42.mongodb.zhangbei.rds.aliyuncs.com:3717/zyz?replicaSet=mgset-505529944', // 内网 options: { useNewUrlParser: true, useUnifiedTopology: true }, }; - config.security = { - csrf: { - enable: false, - ignoreJSON: true - }, - domainWhiteList: ['http://localhost:9000'] - }; - - // 配置上传 - config.multipart = { - fileSize: '50mb', - mode: 'stream', - fileExtensions: ['.zip', '.tar.gz'], // 扩展几种上传的文件格式 - }; - - // config.alinode = { - // appid: '86043', - // secret: '54ef0364995b0c4f2ab42150e29ad30df8327a3a', - // error_log: [ '/root/logs/zyz/zyz-web.log', '/root/logs/zyz/common-error.log', '/root/logs/zyz/egg-agent.log' ], - // packages: [ '/root/zyz/web-server/package.json' ], - // }; - - config.customLogger = { - linkLogger: { - file: path.join(appInfo.root, 'logs/gm-server/link-log.log'), - formatter(meta) { - return `[${meta.level}] [${meta.date}] ${meta.message}`; - }, - }, - }; - - config.logrotator = { - filesRotateBySize: [ - path.join(appInfo.root, 'logs/link-log.log'), - ], - maxFileSize: 1024, - }; // the return config will combines to EggAppConfig return { + ...defaultConfig(appInfo), ...config, - ...bizConfig, }; }; diff --git a/gm-server/config/config.prod.ts b/gm-server/config/config.prod.ts index e17868917..01e99db68 100644 --- a/gm-server/config/config.prod.ts +++ b/gm-server/config/config.prod.ts @@ -1,12 +1,14 @@ -import { EggAppConfig, PowerPartial } from 'egg'; +import { EggAppConfig, EggAppInfo, PowerPartial } from 'egg'; +import defaultConfig from './config.default'; -export default () => { - const config: PowerPartial = {}; +export default (appInfo: EggAppInfo) => { + const config = {} as PowerPartial; - config.cluster = { - listen: { - port: 7500 - } + // add your special config in here + + // the return config will combines to EggAppConfig + return { + ...defaultConfig(appInfo), + ...config, }; - return config; }; diff --git a/gm-server/package-lock.json b/gm-server/package-lock.json index 24f739678..93dd3800b 100644 --- a/gm-server/package-lock.json +++ b/gm-server/package-lock.json @@ -415,6 +415,14 @@ "resolved": "https://registry.npmjs.org/@types/http-errors/-/http-errors-1.8.0.tgz", "integrity": "sha512-2aoSC4UUbHDj2uCsCxcG/vRMXey/m17bC7UwitVm5hn22nI8O8Y9iDpA76Orc+DWkQ4zZrOKEshCqR/jSuXAHA==" }, + "@types/http-proxy": { + "version": "1.17.7", + "resolved": "https://registry.npmjs.org/@types/http-proxy/-/http-proxy-1.17.7.tgz", + "integrity": "sha512-9hdj6iXH64tHSLTY+Vt2eYOGzSogC+JQ2H7bdPWkuh7KXP5qLllWx++t+K9Wk556c3dkDdPws/SpMRi0sdCT1w==", + "requires": { + "@types/node": "*" + } + }, "@types/istanbul-lib-coverage": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.3.tgz", @@ -515,8 +523,7 @@ "@types/node": { "version": "7.10.12", "resolved": "https://registry.npmjs.org/@types/node/-/node-7.10.12.tgz", - "integrity": "sha512-SieeKQUj5NbRKZtRH/6T3H2XQCraXqSEc+gABTXNtL4uwPtXmoZEaHJ3WJylfwF3vJzj5ha6Aq8h9dbKFBINiQ==", - "dev": true + "integrity": "sha512-SieeKQUj5NbRKZtRH/6T3H2XQCraXqSEc+gABTXNtL4uwPtXmoZEaHJ3WJylfwF3vJzj5ha6Aq8h9dbKFBINiQ==" }, "@types/power-assert": { "version": "1.5.3", @@ -3951,6 +3958,62 @@ "utility": "^1.13.1" } }, + "egg-http-proxy-middleware": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/egg-http-proxy-middleware/-/egg-http-proxy-middleware-1.0.3.tgz", + "integrity": "sha512-mS5MGg8sBNMaWGieJ8DJ/+f51dQTl303v7wvxSM+w4yE5AsQx8Lh9pIY2PpBk/OvvPBHpwEuMNU23tSH7qQcQQ==", + "requires": { + "http-proxy-middleware": "^1.0.4", + "is-glob": "^4.0.1", + "koa-connect": "^2.1.0", + "micromatch": "^4.0.2" + }, + "dependencies": { + "braces": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "requires": { + "fill-range": "^7.0.1" + } + }, + "fill-range": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "requires": { + "to-regex-range": "^5.0.1" + } + }, + "is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==" + }, + "micromatch": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.4.tgz", + "integrity": "sha512-pRmzw/XUcwXGpD9aI9q/0XOwLNygjETJ8y0ao0wdqprrzDa4YnxLcz7fQRZr8voh8V10kGhABbNcHVk5wHgWwg==", + "requires": { + "braces": "^3.0.1", + "picomatch": "^2.2.3" + } + }, + "picomatch": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.0.tgz", + "integrity": "sha512-lY1Q/PiJGC2zOv/z391WOTD+Z02bCgsFfvxoXXf6h7kv9o+WmsmzYqrAwY63sNgOxE4xEdq0WyUnXfKeBrSvYw==" + }, + "to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "requires": { + "is-number": "^7.0.0" + } + } + } + }, "egg-i18n": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/egg-i18n/-/egg-i18n-2.1.1.tgz", @@ -5114,6 +5177,11 @@ "through": "~2.3.1" } }, + "eventemitter3": { + "version": "4.0.7", + "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz", + "integrity": "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==" + }, "execa": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/execa/-/execa-1.0.0.tgz", @@ -5392,6 +5460,11 @@ "resolved": "https://registry.npmjs.org/flushwritable/-/flushwritable-1.0.0.tgz", "integrity": "sha1-PjKNj95BKtR+c44751C00pAENJg=" }, + "follow-redirects": { + "version": "1.14.5", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.14.5.tgz", + "integrity": "sha512-wtphSXy7d4/OR+MvIFbCVBDzZ5520qV8XfPklSN5QtxuMUJZ+b0Wnst1e1lCDocfzuCkHqj8k0FpZqO+UIaKNA==" + }, "for-in": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", @@ -5855,6 +5928,16 @@ "toidentifier": "1.0.0" } }, + "http-proxy": { + "version": "1.18.1", + "resolved": "https://registry.npmjs.org/http-proxy/-/http-proxy-1.18.1.tgz", + "integrity": "sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ==", + "requires": { + "eventemitter3": "^4.0.0", + "follow-redirects": "^1.0.0", + "requires-port": "^1.0.0" + } + }, "http-proxy-agent": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-2.1.0.tgz", @@ -5879,6 +5962,63 @@ } } }, + "http-proxy-middleware": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/http-proxy-middleware/-/http-proxy-middleware-1.3.1.tgz", + "integrity": "sha512-13eVVDYS4z79w7f1+NPllJtOQFx/FdUW4btIvVRMaRlUY9VGstAbo5MOhLEuUgZFRHn3x50ufn25zkj/boZnEg==", + "requires": { + "@types/http-proxy": "^1.17.5", + "http-proxy": "^1.18.1", + "is-glob": "^4.0.1", + "is-plain-obj": "^3.0.0", + "micromatch": "^4.0.2" + }, + "dependencies": { + "braces": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "requires": { + "fill-range": "^7.0.1" + } + }, + "fill-range": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "requires": { + "to-regex-range": "^5.0.1" + } + }, + "is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==" + }, + "micromatch": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.4.tgz", + "integrity": "sha512-pRmzw/XUcwXGpD9aI9q/0XOwLNygjETJ8y0ao0wdqprrzDa4YnxLcz7fQRZr8voh8V10kGhABbNcHVk5wHgWwg==", + "requires": { + "braces": "^3.0.1", + "picomatch": "^2.2.3" + } + }, + "picomatch": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.0.tgz", + "integrity": "sha512-lY1Q/PiJGC2zOv/z391WOTD+Z02bCgsFfvxoXXf6h7kv9o+WmsmzYqrAwY63sNgOxE4xEdq0WyUnXfKeBrSvYw==" + }, + "to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "requires": { + "is-number": "^7.0.0" + } + } + } + }, "https-proxy-agent": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-3.0.1.tgz", @@ -6340,6 +6480,11 @@ "integrity": "sha1-PkcprB9f3gJc19g6iW2rn09n2w8=", "dev": true }, + "is-plain-obj": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-3.0.0.tgz", + "integrity": "sha512-gwsOE28k+23GP1B6vFl1oVh/WOzmawBrKwo5Ev6wMKzPkaXaCDIQKzLnvsA42DRlbVTWorkgTKIviAKCWkfUwA==" + }, "is-plain-object": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", @@ -6640,6 +6785,11 @@ "any-promise": "^1.1.0" } }, + "koa-connect": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/koa-connect/-/koa-connect-2.1.0.tgz", + "integrity": "sha512-O9pcFafHk0oQsBevlbTBlB9co+2RUQJ4zCzu3qJPmGlGoeEZkne+7gWDkecqDPSbCtED6LmhlQladxs6NjOnMQ==" + }, "koa-convert": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/koa-convert/-/koa-convert-1.2.0.tgz", @@ -9562,6 +9712,11 @@ "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-1.0.1.tgz", "integrity": "sha1-l/cXtp1IeE9fUmpsWqj/3aBVpNE=" }, + "requires-port": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", + "integrity": "sha1-kl0mAdOaxIXgkc8NpcbmlNw9yv8=" + }, "resolve": { "version": "1.17.0", "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.17.0.tgz", @@ -10822,6 +10977,11 @@ "resolved": "https://registry.npmjs.org/ultron/-/ultron-1.0.2.tgz", "integrity": "sha1-rOEWq1V80Zc4ak6I9GhTeMiy5Po=" }, + "underscore": { + "version": "1.13.1", + "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.13.1.tgz", + "integrity": "sha512-hzSoAVtJF+3ZtiFX0VgfFPHEDRm7Y/QPjGyNo4TVdnDTdft3tr8hEkD25a1jC+TjTuE7tkHGKkhwCgs9dgBB2g==" + }, "unescape": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/unescape/-/unescape-1.0.1.tgz", diff --git a/gm-server/package.json b/gm-server/package.json index 95d39859c..66bb370b8 100644 --- a/gm-server/package.json +++ b/gm-server/package.json @@ -32,6 +32,7 @@ "egg": "^2.6.1", "egg-alinode": "^2.0.1", "egg-cors": "^2.2.3", + "egg-http-proxy-middleware": "^1.0.3", "egg-scripts": "^2.6.0", "moment": "^2.29.0", "pump": "^3.0.0", diff --git a/gm-server/typings/app/middleware/index.d.ts b/gm-server/typings/app/middleware/index.d.ts index 3531336ff..1731683bc 100644 --- a/gm-server/typings/app/middleware/index.d.ts +++ b/gm-server/typings/app/middleware/index.d.ts @@ -3,11 +3,13 @@ import 'egg'; import ExportLog from '../../../app/middleware/log'; +import ExportProxy from '../../../app/middleware/proxy'; import ExportTokenParser from '../../../app/middleware/tokenParser'; declare module 'egg' { interface IMiddleware { log: typeof ExportLog; + proxy: typeof ExportProxy; tokenParser: typeof ExportTokenParser; } } diff --git a/shared/db/GMUser.ts b/shared/db/GMUser.ts index 29f30d451..4cf81d7bd 100644 --- a/shared/db/GMUser.ts +++ b/shared/db/GMUser.ts @@ -1,7 +1,7 @@ import { COUNTER } from './../consts'; import { CounterModel } from './Counter'; import BaseModel from './BaseModel'; -import { index, getModelForClass, prop, DocumentType } from '@typegoose/typegoose'; +import { index, getModelForClass, prop, DocumentType, mongoose } from '@typegoose/typegoose'; const bcrypt = require('bcrypt'); const SALT_WORK_FACTOR = 5 @@ -85,6 +85,11 @@ export default class GMUser extends BaseModel { } } -export const GMUserModel = getModelForClass(GMUser); +export let GMUserModel; +export function loadGMUserModel(connect: mongoose.Connection) { + GMUserModel = getModelForClass(GMUser, { + existingConnection: connect + }); +} export interface GMUserType extends Pick, keyof GMUser> { }; diff --git a/shared/db/index.ts b/shared/db/index.ts new file mode 100644 index 000000000..7e6c13434 --- /dev/null +++ b/shared/db/index.ts @@ -0,0 +1,6 @@ +import { mongoose } from "@typegoose/typegoose"; +import { loadGMUserModel } from './GMUser' + +export function loadGmDb(connect: mongoose.Connection) { + loadGMUserModel(connect); +} \ No newline at end of file diff --git a/shared/pubUtils/data.ts b/shared/pubUtils/data.ts index 1e30184c3..511caf90c 100644 --- a/shared/pubUtils/data.ts +++ b/shared/pubUtils/data.ts @@ -854,7 +854,7 @@ function parseDicParam() { * group为如果两个任务,除了condition以外的其他所有taskParam都是一样的,他们的group相同 */ function treatTaskGroup() { - console.log('****** treatTaskGroup') + // console.log('****** treatTaskGroup') let taskType2Desc = new Map(); for(let obj of gameData.taskTypeDesc) { taskType2Desc.set(obj.id, obj); @@ -883,7 +883,7 @@ function treatTaskGroup() { } } } - console.log('****** taskByGroup', JSON.stringify([...taskByGroup])) + // console.log('****** taskByGroup', JSON.stringify([...taskByGroup])) for(let [taskType, arr] of taskByGroup) { let tasks = gameData.taskType.get(taskType);