ios:审核服判断逻辑
This commit is contained in:
@@ -78,6 +78,14 @@ export default class GameController extends Controller {
|
|||||||
return
|
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() {
|
public async getOrderlist() {
|
||||||
const { ctx } = this;
|
const { ctx } = this;
|
||||||
const { page, pageSize, sortField, sortOrder, form } = ctx.request.body;
|
const { page, pageSize, sortField, sortOrder, form } = ctx.request.body;
|
||||||
|
|||||||
@@ -51,6 +51,7 @@ export default (app: Application) => {
|
|||||||
router.post('/api/game/deletewhitelist', tokenParser, controller.game.deleteWhiteList);
|
router.post('/api/game/deletewhitelist', tokenParser, controller.game.deleteWhiteList);
|
||||||
router.post('/api/game/stopserverregister', tokenParser, controller.game.stopServerRegister);
|
router.post('/api/game/stopserverregister', tokenParser, controller.game.stopServerRegister);
|
||||||
router.post('/api/game/swicthserverstatus', tokenParser, controller.game.switchServerStatus);
|
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/getorderlist', tokenParser, controller.game.getOrderlist);
|
||||||
router.post('/api/game/getsurveylist', controller.game.getSurveylist);
|
router.post('/api/game/getsurveylist', controller.game.getSurveylist);
|
||||||
|
|
||||||
|
|||||||
@@ -100,6 +100,13 @@ export default class Game extends Service {
|
|||||||
return ctx.service.utils.resResult(STATUS.SUCCESS);
|
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) {
|
public async getRegionStategy(id: number) {
|
||||||
const { ctx } = this;
|
const { ctx } = this;
|
||||||
let region = await RegionModel.findRegionById(id);
|
let region = await RegionModel.findRegionById(id);
|
||||||
|
|||||||
@@ -60,6 +60,12 @@ export default class Region extends BaseModel {
|
|||||||
@prop({ required: true, type: () => ServerStategy, _id: false })
|
@prop({ required: true, type: () => ServerStategy, _id: false })
|
||||||
stategy: ServerStategy; // 策略配置
|
stategy: ServerStategy; // 策略配置
|
||||||
|
|
||||||
|
@prop({ required: true })
|
||||||
|
reviewEnv: string; // 对应的审核服
|
||||||
|
|
||||||
|
@prop({ required: true })
|
||||||
|
reviewVersion: string; // 大于这个版本的都是审核服
|
||||||
|
|
||||||
public static async createNewRegion(params: RegionUpdate, uid = 1) {
|
public static async createNewRegion(params: RegionUpdate, uid = 1) {
|
||||||
let id = await CounterAllModal.getNewCounter(COUNTER.REGION);
|
let id = await CounterAllModal.getNewCounter(COUNTER.REGION);
|
||||||
|
|
||||||
|
|||||||
@@ -40,6 +40,9 @@ export default class Serverlist extends BaseModel {
|
|||||||
@prop({ required: true })
|
@prop({ required: true })
|
||||||
env: string; // 环境变量
|
env: string; // 环境变量
|
||||||
|
|
||||||
|
@prop({ required: true })
|
||||||
|
isReview: boolean; // 是否是审核服
|
||||||
|
|
||||||
@prop({ required: true })
|
@prop({ required: true })
|
||||||
prefix: string; // 前缀
|
prefix: string; // 前缀
|
||||||
|
|
||||||
@@ -143,9 +146,14 @@ export default class Serverlist extends BaseModel {
|
|||||||
return server;
|
return server;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static async findByEnv(env?: string) {
|
public static async findByEnv(env?: string, isReview = false) {
|
||||||
let server: ServerlistType[] = await ServerlistModel.find({ env, serverStatus: { $gt: 0 } }).sort({ id: -1 }).lean({ getters: true, virtuals: true });
|
if(isReview) {
|
||||||
return server;
|
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查询活动数据
|
//根据多个活动id查询活动数据
|
||||||
|
|||||||
@@ -78,6 +78,8 @@ export class UpdateRegionParams {
|
|||||||
versionCode: string = '';
|
versionCode: string = '';
|
||||||
curVersion: string = '';
|
curVersion: string = '';
|
||||||
updateResUrl: string = '';
|
updateResUrl: string = '';
|
||||||
|
reviewVersion: string = '';
|
||||||
|
reviewEnv: string = '';
|
||||||
|
|
||||||
maxPlayerCnt: number = 0;
|
maxPlayerCnt: number = 0;
|
||||||
timers: SERVER_TIMER[] = [];
|
timers: SERVER_TIMER[] = [];
|
||||||
@@ -117,6 +119,8 @@ export class UpdateRegionParams {
|
|||||||
remark: this.remark,
|
remark: this.remark,
|
||||||
versionCode: this.versionCode,
|
versionCode: this.versionCode,
|
||||||
curVersion: this.curVersion,
|
curVersion: this.curVersion,
|
||||||
|
reviewVersion: this.reviewVersion,
|
||||||
|
reviewEnv: this.reviewEnv,
|
||||||
updateResUrl: this.updateResUrl,
|
updateResUrl: this.updateResUrl,
|
||||||
stategy
|
stategy
|
||||||
}
|
}
|
||||||
@@ -128,6 +132,8 @@ export class UpdateRegionParams {
|
|||||||
remark: this.remark||oldRegion.remark,
|
remark: this.remark||oldRegion.remark,
|
||||||
versionCode: this.versionCode||oldRegion.versionCode,
|
versionCode: this.versionCode||oldRegion.versionCode,
|
||||||
curVersion: this.curVersion||oldRegion.curVersion,
|
curVersion: this.curVersion||oldRegion.curVersion,
|
||||||
|
reviewVersion: this.reviewVersion||oldRegion.reviewVersion,
|
||||||
|
reviewEnv: this.reviewEnv||oldRegion.reviewEnv,
|
||||||
updateResUrl: this.updateResUrl||oldRegion.updateResUrl,
|
updateResUrl: this.updateResUrl||oldRegion.updateResUrl,
|
||||||
stategy: { ...(oldRegion.stategy||{}), ...stategy }
|
stategy: { ...(oldRegion.stategy||{}), ...stategy }
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -31,15 +31,40 @@ export default class GameController extends Controller {
|
|||||||
return;
|
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() {
|
public async getServerList() {
|
||||||
try {
|
try {
|
||||||
const { ctx } = this;
|
const { ctx } = this;
|
||||||
let { uid, clientVersion } = ctx;
|
let { uid } = ctx;
|
||||||
console.log('clientVersion', clientVersion);
|
const { version } = ctx.request.body;
|
||||||
let serverList = new Array<GroupParam>();
|
let serverList = new Array<GroupParam>();
|
||||||
let loginServerList = new Array<ServerParamWithRole>();
|
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);
|
let roles = await RoleModel.findAllByUid(uid, true, true);
|
||||||
for (let server of allServers) {
|
for (let server of allServers) {
|
||||||
let curGroup = serverList.find(cur => cur.groupId == server.groupId);
|
let curGroup = serverList.find(cur => cur.groupId == server.groupId);
|
||||||
|
|||||||
@@ -8,6 +8,7 @@ export default (app: Application) => {
|
|||||||
router.get('/dev', controller.home.dev);
|
router.get('/dev', controller.home.dev);
|
||||||
router.get('/dev/smscode', controller.account.getSmsCode);
|
router.get('/dev/smscode', controller.account.getSmsCode);
|
||||||
router.get('/', controller.home.index);
|
router.get('/', controller.home.index);
|
||||||
|
router.post('/user/checkreview', controller.game.checkReview);
|
||||||
router.post('/user/channellogin', controller.account.channelLogin);
|
router.post('/user/channellogin', controller.account.channelLogin);
|
||||||
router.post('/user/devicelogin', controller.account.deviceLogin);
|
router.post('/user/devicelogin', controller.account.deviceLogin);
|
||||||
router.post('/user/getsms', controller.account.getSms);
|
router.post('/user/getsms', controller.account.getSms);
|
||||||
|
|||||||
@@ -1,4 +1,5 @@
|
|||||||
import { STATUS, } from '@consts';
|
import { STATUS, } from '@consts';
|
||||||
|
import { RegionType } from '@db/Region';
|
||||||
import { Service } from 'egg';
|
import { Service } from 'egg';
|
||||||
// let fs = require("fs");
|
// let fs = require("fs");
|
||||||
|
|
||||||
@@ -34,5 +35,13 @@ export default class Update extends Service {
|
|||||||
remoteVersionUrl: `${baseUrl}/version.manifest`
|
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;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user