ios:审核服判断逻辑

This commit is contained in:
luying
2022-06-23 09:39:46 +08:00
parent 5e5b052aa0
commit f105c79837
9 changed files with 77 additions and 6 deletions

View File

@@ -78,6 +78,14 @@ export default class GameController extends Controller {
return
}
public async switchServerReview() {
const { ctx } = this;
const { id, isReview } = ctx.request.body;
ctx.body = await ctx.service.game.switchServerReview(id, isReview);
return
}
public async getOrderlist() {
const { ctx } = this;
const { page, pageSize, sortField, sortOrder, form } = ctx.request.body;

View File

@@ -51,6 +51,7 @@ export default (app: Application) => {
router.post('/api/game/deletewhitelist', tokenParser, controller.game.deleteWhiteList);
router.post('/api/game/stopserverregister', tokenParser, controller.game.stopServerRegister);
router.post('/api/game/swicthserverstatus', tokenParser, controller.game.switchServerStatus);
router.post('/api/game/switchserverreview', controller.game.switchServerReview);
router.post('/api/game/getorderlist', tokenParser, controller.game.getOrderlist);
router.post('/api/game/getsurveylist', controller.game.getSurveylist);

View File

@@ -100,6 +100,13 @@ export default class Game extends Service {
return ctx.service.utils.resResult(STATUS.SUCCESS);
}
public async switchServerReview(id: number, isReview: boolean) {
const { ctx } = this;
const server = await ServerlistModel.updateByServerId(id, { isReview });
if(!server) return ctx.service.utils.resResult(STATUS.WRONG_PARMS);
return ctx.service.utils.resResult(STATUS.SUCCESS);
}
public async getRegionStategy(id: number) {
const { ctx } = this;
let region = await RegionModel.findRegionById(id);

View File

@@ -60,6 +60,12 @@ export default class Region extends BaseModel {
@prop({ required: true, type: () => ServerStategy, _id: false })
stategy: ServerStategy; // 策略配置
@prop({ required: true })
reviewEnv: string; // 对应的审核服
@prop({ required: true })
reviewVersion: string; // 大于这个版本的都是审核服
public static async createNewRegion(params: RegionUpdate, uid = 1) {
let id = await CounterAllModal.getNewCounter(COUNTER.REGION);

View File

@@ -40,6 +40,9 @@ export default class Serverlist extends BaseModel {
@prop({ required: true })
env: string; // 环境变量
@prop({ required: true })
isReview: boolean; // 是否是审核服
@prop({ required: true })
prefix: string; // 前缀
@@ -143,9 +146,14 @@ export default class Serverlist extends BaseModel {
return server;
}
public static async findByEnv(env?: string) {
let server: ServerlistType[] = await ServerlistModel.find({ env, serverStatus: { $gt: 0 } }).sort({ id: -1 }).lean({ getters: true, virtuals: true });
return server;
public static async findByEnv(env?: string, isReview = false) {
if(isReview) {
let server: ServerlistType[] = await ServerlistModel.find({ env, serverStatus: { $gt: 0 }, isReview }).sort({ id: -1 }).lean({ getters: true, virtuals: true });
return server;
} else {
let server: ServerlistType[] = await ServerlistModel.find({ env, serverStatus: { $gt: 0 } }).sort({ id: -1 }).lean({ getters: true, virtuals: true });
return server;
}
}
//根据多个活动id查询活动数据

View File

@@ -78,6 +78,8 @@ export class UpdateRegionParams {
versionCode: string = '';
curVersion: string = '';
updateResUrl: string = '';
reviewVersion: string = '';
reviewEnv: string = '';
maxPlayerCnt: number = 0;
timers: SERVER_TIMER[] = [];
@@ -117,6 +119,8 @@ export class UpdateRegionParams {
remark: this.remark,
versionCode: this.versionCode,
curVersion: this.curVersion,
reviewVersion: this.reviewVersion,
reviewEnv: this.reviewEnv,
updateResUrl: this.updateResUrl,
stategy
}
@@ -128,6 +132,8 @@ export class UpdateRegionParams {
remark: this.remark||oldRegion.remark,
versionCode: this.versionCode||oldRegion.versionCode,
curVersion: this.curVersion||oldRegion.curVersion,
reviewVersion: this.reviewVersion||oldRegion.reviewVersion,
reviewEnv: this.reviewEnv||oldRegion.reviewEnv,
updateResUrl: this.updateResUrl||oldRegion.updateResUrl,
stategy: { ...(oldRegion.stategy||{}), ...stategy }
}

View File

@@ -31,15 +31,40 @@ export default class GameController extends Controller {
return;
}
public async checkReview() {
const { ctx } = this;
const { version } = ctx.request.body;
let curRegion = await RegionModel.findRegionByEnv(this.app.config.realEnv);
if(!curRegion) return resResult(STATUS.VERSION_ERR);
let isReview = await ctx.service.update.checkReview(curRegion, version);
let hasNewWebServer = false, webServerUrl = '';
if(isReview && curRegion.reviewEnv) {
let reviewRegion = await RegionModel.findRegionByEnv(curRegion.reviewEnv);
if(reviewRegion) {
hasNewWebServer = true, webServerUrl = reviewRegion.webHost;
}
}
ctx.body = ctx.service.utils.resResult(STATUS.SUCCESS, { isReview, hasNewWebServer, webServerUrl });
return;
}
public async getServerList() {
try {
const { ctx } = this;
let { uid, clientVersion } = ctx;
console.log('clientVersion', clientVersion);
let { uid } = ctx;
const { version } = ctx.request.body;
let serverList = new Array<GroupParam>();
let loginServerList = new Array<ServerParamWithRole>();
let allServers = await ServerlistModel.findByEnv(ctx.app.config.realEnv);
let curRegion = await RegionModel.findRegionByEnv(this.app.config.realEnv);
if(!curRegion) return resResult(STATUS.VERSION_ERR);
let isReview = await ctx.service.update.checkReview(curRegion, version);
let env = isReview? curRegion.reviewEnv: ctx.app.config.realEnv;
let allServers = await ServerlistModel.findByEnv(env||ctx.app.config.realEnv, isReview);
let roles = await RoleModel.findAllByUid(uid, true, true);
for (let server of allServers) {
let curGroup = serverList.find(cur => cur.groupId == server.groupId);

View File

@@ -8,6 +8,7 @@ export default (app: Application) => {
router.get('/dev', controller.home.dev);
router.get('/dev/smscode', controller.account.getSmsCode);
router.get('/', controller.home.index);
router.post('/user/checkreview', controller.game.checkReview);
router.post('/user/channellogin', controller.account.channelLogin);
router.post('/user/devicelogin', controller.account.deviceLogin);
router.post('/user/getsms', controller.account.getSms);

View File

@@ -1,4 +1,5 @@
import { STATUS, } from '@consts';
import { RegionType } from '@db/Region';
import { Service } from 'egg';
// let fs = require("fs");
@@ -34,5 +35,13 @@ export default class Update extends Service {
remoteVersionUrl: `${baseUrl}/version.manifest`
});
}
public async checkReview(curRegion: RegionType, version: string) {
const ctx = this.ctx;
if(!curRegion || !curRegion.reviewVersion || !version) return false;
let reviewVersionFlag = ctx.service.utils.compareVersion(version, curRegion.reviewVersion);
return `${ctx.clientIp}`.startsWith('17.') || reviewVersionFlag > 0;
}
}