From c263c44a90d22dc99da4d5f0989835b4bab3f2d3 Mon Sep 17 00:00:00 2001 From: liangtongchuan Date: Thu, 5 May 2022 20:01:55 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E8=8E=B7=E5=8F=96=E5=A4=A7?= =?UTF-8?q?=E5=8C=BA=E7=83=AD=E6=9B=B4=E6=96=B0=E5=9C=B0=E5=9D=80=E7=9A=84?= =?UTF-8?q?=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- shared/consts/statusCode.ts | 1 + shared/db/Region.ts | 8 +++++++- shared/domain/backEndField/params.ts | 5 ++++- web-server/app/controller/update.ts | 8 ++++++++ web-server/app/router.ts | 1 + web-server/app/service/Update.ts | 12 ++++++++++++ 6 files changed, 33 insertions(+), 2 deletions(-) diff --git a/shared/consts/statusCode.ts b/shared/consts/statusCode.ts index 8802d525f..130c8ac85 100644 --- a/shared/consts/statusCode.ts +++ b/shared/consts/statusCode.ts @@ -16,6 +16,7 @@ export const STATUS = { ONLINE_USER_MAX: { code: 13, simStr: '服务器繁忙,请稍后再试' }, FUNCTION_CLOSE: { code: 14, simStr: '抱歉,该功能暂时关闭' }, GLOBAL_ERR: { code: 1003, simStr: '服务器内部错误' }, + UPDATE_INFO_ERR: {code: 1004, simStr: '热更新配置错误'}, // http请求 REQUEST_TIME_OUT: { code: 2000, simStr: '请求超时' }, REQUEST_FAIL: { code: 2001, simStr: '请求错误' }, diff --git a/shared/db/Region.ts b/shared/db/Region.ts index dbd94f187..36f813adc 100644 --- a/shared/db/Region.ts +++ b/shared/db/Region.ts @@ -40,7 +40,13 @@ export default class Region extends BaseModel { latestServer: number; // 最新服 @prop({ required: true }) - versionCode: number; // 版本号 + versionCode: number; // 支持的最小版本号 + + @prop({ required: true }) + curVersion: number; // 当前版本号 + + @prop({ required: true }) // 热更新资源根目录 + updateResUrl: string; @prop({ required: true }) latestServerUniqId: number; // 最新服唯一id diff --git a/shared/domain/backEndField/params.ts b/shared/domain/backEndField/params.ts index c4d8bdd7c..5ad2cb151 100644 --- a/shared/domain/backEndField/params.ts +++ b/shared/domain/backEndField/params.ts @@ -75,6 +75,7 @@ export class UpdateRegionParams { prefix: string = ''; // 区名前缀 remark: string = ''; versionCode: number = 1; + curVersion: number = 0; maxPlayerCnt: number = 0; timers: SERVER_TIMER[] = []; @@ -93,7 +94,7 @@ export class UpdateRegionParams { } checkParams() { - if(!this.id || !this.name || !this.prefix || !this.maxPlayerCnt || !isArray(this.timers) || this.timers.length <= 0 || !isArray(this.activityGroupId) || this.activityGroupId.length <= 0 || !isNumber(this.versionCode)) { + if(!this.id || !this.name || !this.prefix || !this.maxPlayerCnt || !isArray(this.timers) || this.timers.length <= 0 || !isArray(this.activityGroupId) || this.activityGroupId.length <= 0 || !isNumber(this.versionCode) || !isNumber(this.curVersion)) { return false } return true; @@ -107,6 +108,7 @@ export class UpdateRegionParams { prefix: this.prefix, remark: this.remark, versionCode: this.versionCode, + curVersion: this.curVersion, stategy } } else { @@ -116,6 +118,7 @@ export class UpdateRegionParams { prefix: this.prefix||oldRegion.prefix, remark: this.remark||oldRegion.remark, versionCode: this.versionCode||oldRegion.versionCode, + curVersion: this.curVersion||oldRegion.curVersion, stategy: { ...(oldRegion.stategy||{}), ...stategy } } } diff --git a/web-server/app/controller/update.ts b/web-server/app/controller/update.ts index d50cdcc5b..aee8f4a8f 100644 --- a/web-server/app/controller/update.ts +++ b/web-server/app/controller/update.ts @@ -1,4 +1,5 @@ import { Controller } from 'egg'; +import { RegionModel } from '@db/Region'; export default class UpdateController extends Controller { public async getversion() { @@ -7,4 +8,11 @@ export default class UpdateController extends Controller { ctx.body = await ctx.service.update.getVersion(version); } + public async getUpdateUrl() { + const { ctx } = this; + const env = this.app.config.realEnv; + const curRegion = await RegionModel.findRegionByEnv(env); + const { curVersion, updateResUrl } = curRegion; + ctx.body = await ctx.service.update.getUpdateUrl(env, curVersion, updateResUrl); + } } diff --git a/web-server/app/router.ts b/web-server/app/router.ts index 73e36f3da..6cb35b141 100644 --- a/web-server/app/router.ts +++ b/web-server/app/router.ts @@ -23,6 +23,7 @@ export default (app: Application) => { router.post('/game/getnotice', tokenParser, controller.game.getnotice); router.post('/gate/queryenter', tokenParser, controller.game.queryEnter); router.post('/update/getversion', controller.update.getversion); + router.post('/update/getupdateurl', controller.update.getUpdateUrl); router.post('/web/reloadresource', app.middleware.gmTokenParser(), controller.game.reloadResource); diff --git a/web-server/app/service/Update.ts b/web-server/app/service/Update.ts index 26f75e18a..8adc313a2 100644 --- a/web-server/app/service/Update.ts +++ b/web-server/app/service/Update.ts @@ -22,5 +22,17 @@ export default class Update extends Service { remoteVersionUrl: 'http://zyz-hot-update.trgame.cn/version.manifest' }); } + + public async getUpdateUrl(env: string, curVersion: number, updateResUrl: string) { + const ctx = this.ctx; + if (!env || !curVersion || !updateResUrl) return ctx.service.utils.resResult(STATUS.UPDATE_INFO_ERR); + + const baseUrl = `${updateResUrl}/${env}/${curVersion}`; + return ctx.service.utils.resResult(STATUS.SUCCESS, { + packageUrl: baseUrl, + remoteManifestUrl: `${baseUrl}/project.manifest`, + remoteVersionUrl: `${baseUrl}/version.manifest` + }); + } }