登录:更新服务器列表
This commit is contained in:
+2
-3
@@ -1,9 +1,8 @@
|
|||||||
import { APP_ID } from './../consts';
|
import { APP_ID } from './../consts';
|
||||||
import BaseModel from './BaseModel';
|
import BaseModel from './BaseModel';
|
||||||
import { index, getModelForClass, prop, DocumentType, modelOptions } from '@typegoose/typegoose';
|
import { index, getModelForClass, prop, DocumentType, modelOptions } from '@typegoose/typegoose';
|
||||||
import { getSeconds } from '../pubUtils/timeUtil';
|
|
||||||
|
|
||||||
class ServerInfo {
|
export class ServerInfo {
|
||||||
@prop({ required: true })
|
@prop({ required: true })
|
||||||
id: number; // 小区id
|
id: number; // 小区id
|
||||||
|
|
||||||
@@ -34,7 +33,7 @@ class ServerInfo {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@prop({ required: true, set:(val: Date) => { return val }, get: (val: Date) => {return getSeconds(val)} })
|
@prop({ required: true })
|
||||||
openTime: Date;
|
openTime: Date;
|
||||||
|
|
||||||
@prop({ required: true })
|
@prop({ required: true })
|
||||||
|
|||||||
+19
-51
@@ -1,4 +1,3 @@
|
|||||||
import { APP_ID } from './../consts';
|
|
||||||
import BaseModel from './BaseModel';
|
import BaseModel from './BaseModel';
|
||||||
import { index, getModelForClass, prop, DocumentType, modelOptions } from '@typegoose/typegoose';
|
import { index, getModelForClass, prop, DocumentType, modelOptions } from '@typegoose/typegoose';
|
||||||
import { getSeconds } from '../pubUtils/timeUtil';
|
import { getSeconds } from '../pubUtils/timeUtil';
|
||||||
@@ -11,66 +10,35 @@ import { getSeconds } from '../pubUtils/timeUtil';
|
|||||||
export default class Notice extends BaseModel {
|
export default class Notice extends BaseModel {
|
||||||
|
|
||||||
@prop({ required: true })
|
@prop({ required: true })
|
||||||
id: number;
|
id: number; // 公告id
|
||||||
|
@prop({ required: true })
|
||||||
|
title: string; // 公告标题
|
||||||
|
@prop({ required: true })
|
||||||
|
tag: number; // 公告显示标签,在系统参数表中配了
|
||||||
|
@prop({ required: true })
|
||||||
|
type: number; // 类型 1-公告 2-活动
|
||||||
|
@prop({ required: true })
|
||||||
|
content: number; // 公告内容
|
||||||
|
@prop({ required: true })
|
||||||
|
time: string; // 活动时间
|
||||||
|
|
||||||
|
@prop({ required: true, set: (val: Date) => {return val}, get: (val: Date) => { return getSeconds(val) }})
|
||||||
|
startTime: Date; // 公告
|
||||||
|
@prop({ required: true, set: (val: Date) => {return val}, get: (val: Date) => { return getSeconds(val) }})
|
||||||
|
endTime: Date;
|
||||||
|
|
||||||
@prop({ required: true })
|
@prop({ required: true })
|
||||||
title: string;
|
sort: number;
|
||||||
|
|
||||||
@prop({ required: true })
|
|
||||||
tag: number;
|
|
||||||
|
|
||||||
@prop({ required: true })
|
|
||||||
type: number;
|
|
||||||
|
|
||||||
@prop({ required: true })
|
|
||||||
content: number;
|
|
||||||
|
|
||||||
@prop({ required: true })
|
|
||||||
order: number;
|
|
||||||
|
|
||||||
@prop({ required: true })
|
|
||||||
order: number;
|
|
||||||
|
|
||||||
|
|
||||||
@prop({ required: true })
|
@prop({ required: true })
|
||||||
showStartTime: Date;
|
showStartTime: Date;
|
||||||
|
|
||||||
@prop({ required: true })
|
@prop({ required: true })
|
||||||
showEndTime: Date;
|
showEndTime: Date;
|
||||||
|
|
||||||
public static async getAllServerList() {
|
|
||||||
let game: GameType = await GameModel.findOne().lean();
|
|
||||||
if(game) {
|
|
||||||
return game.serverList;
|
|
||||||
} else {
|
|
||||||
return []
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public static async getServerList() {
|
|
||||||
let game: GameType = await GameModel.findOne().lean({ getter: true, virtuals: true });
|
|
||||||
if (!game) {
|
|
||||||
const serverInfo = new ServerInfo(1, '常山少年', 1, '逍遥津', 'pinus_test.trgame.cn', 3014, 1, 'official');
|
|
||||||
const iconUrl = `https://download.tgamebox.cn/avatar/${APP_ID}/1.png`;
|
|
||||||
game = await GameModel.findOneAndUpdate(
|
|
||||||
{},
|
|
||||||
{ id: 1, name: '赵云传', nameEn: 'zyz', des: '牛逼的战棋', iconUrl, version: '0.0.1', versionCode: 1, $push: { serverList: serverInfo } },
|
|
||||||
{ upsert: true, new: true },
|
|
||||||
).lean({ getter: true, virtuals: true });
|
|
||||||
}
|
|
||||||
let serverList: Array<ServerInfo> = game ? game.serverList : [];
|
|
||||||
return serverList;
|
|
||||||
}
|
|
||||||
|
|
||||||
public static async newServer(serverId: number, serverType: string, name: string, host: string, port: number, status: number, lean = true) {
|
|
||||||
let serverInfo = new ServerInfo(serverId, name, 1, '逍遥津', host, port, status, serverType);
|
|
||||||
let game: GameType = await GameModel.findOneAndUpdate({}, {$push: {serverList: serverInfo}}, {new: true}).lean(lean);
|
|
||||||
return game;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
export const GameModel = getModelForClass(Game);
|
export const NoticeModel = getModelForClass(Notice);
|
||||||
|
|
||||||
export interface GameType extends Pick<DocumentType<Game>, keyof Game>{
|
export interface NoticeType extends Pick<DocumentType<Notice>, keyof Notice>{
|
||||||
id: number;
|
id: number;
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -0,0 +1,67 @@
|
|||||||
|
import { ServerInfo } from '../../db/Game';
|
||||||
|
import { RoleType } from '../../db/Role';
|
||||||
|
import { getSeconds } from '../../pubUtils/timeUtil';
|
||||||
|
|
||||||
|
export class ServerParam {
|
||||||
|
id: number; // 区号
|
||||||
|
serverStr: string; // 显示的区号 S1
|
||||||
|
name: string; // 区名
|
||||||
|
host: string; // pinus地址
|
||||||
|
port: number; // pinus端口
|
||||||
|
status: number; // 状态
|
||||||
|
openTime: number; // 开服时间
|
||||||
|
serverType: string; // 分区类型 官服 测试服 开发服
|
||||||
|
|
||||||
|
constructor(server: ServerInfo) {
|
||||||
|
this.id = server.id;
|
||||||
|
this.serverStr = `S${this.id}`;
|
||||||
|
this.name = server.name;
|
||||||
|
this.host = server.host;
|
||||||
|
this.port = server.port;
|
||||||
|
this.status = server.status;
|
||||||
|
this.openTime = getSeconds(server.openTime);
|
||||||
|
this.serverType = server.serverType;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
export class GroupParam {
|
||||||
|
groupId: number; // 大区号
|
||||||
|
groupName: string; // 大区名
|
||||||
|
serverStr: string; // 大区内小区编号 S1-S10
|
||||||
|
servers: ServerParam[]; // 区
|
||||||
|
|
||||||
|
constructor(server: ServerInfo) {
|
||||||
|
this.groupId = server.groupId;
|
||||||
|
this.groupName = server.groupName;
|
||||||
|
this.serverStr = `S${server.id}-S${server.id + 9}`;
|
||||||
|
this.servers = new Array<ServerParam>();
|
||||||
|
}
|
||||||
|
|
||||||
|
public pushServer(server: ServerInfo) {
|
||||||
|
let srv = new ServerParam(server);
|
||||||
|
this.servers.push(srv);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
export class ServerParamWithRole extends ServerParam {
|
||||||
|
groupId: number; // 大区号
|
||||||
|
groupName: string; // 大区名
|
||||||
|
|
||||||
|
roleId: string; // 玩家账号
|
||||||
|
roleName: string; // 玩家名
|
||||||
|
headHid: number; // 头像
|
||||||
|
sHid: number; // 形象
|
||||||
|
lv: number; // 等级
|
||||||
|
|
||||||
|
constructor(role: RoleType, server: ServerInfo) {
|
||||||
|
super(server);
|
||||||
|
this.groupId = server.groupId;
|
||||||
|
this.groupName = server.groupName;
|
||||||
|
|
||||||
|
this.roleId = role.roleId;
|
||||||
|
this.roleName = role.roleName;
|
||||||
|
this.headHid = role.headHid;
|
||||||
|
this.sHid = role.sHid;
|
||||||
|
this.lv = role.lv;
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -2,6 +2,7 @@ import { STATUS } from '@consts';
|
|||||||
import { GameModel } from '@db/Game';
|
import { GameModel } from '@db/Game';
|
||||||
import { Controller } from 'egg';
|
import { Controller } from 'egg';
|
||||||
import { RoleModel } from '@db/Role';
|
import { RoleModel } from '@db/Role';
|
||||||
|
import { ServerParamWithRole, GroupParam } from '../domain/gameField/serverlist';
|
||||||
|
|
||||||
export default class GameController extends Controller {
|
export default class GameController extends Controller {
|
||||||
|
|
||||||
@@ -9,26 +10,26 @@ export default class GameController extends Controller {
|
|||||||
const { ctx } = this;
|
const { ctx } = this;
|
||||||
let { serverType, auth, uid } = ctx;
|
let { serverType, auth, uid } = ctx;
|
||||||
|
|
||||||
let serverList = [];
|
let serverList = new Array<GroupParam>();
|
||||||
let loginServerList = [];
|
let loginServerList = new Array<ServerParamWithRole>();
|
||||||
|
|
||||||
let allServers = await GameModel.getServerList();
|
let allServers = await GameModel.getServerList();
|
||||||
let roles = await RoleModel.findAllByUid(uid);
|
let roles = await RoleModel.findAllByUid(uid);
|
||||||
console.log(roles.length)
|
|
||||||
|
|
||||||
for(let server of allServers) {
|
for(let server of allServers) {
|
||||||
if(auth === 1 || (!auth && server.serverType == serverType)) {
|
if(auth === 1 || (!auth && server.serverType == serverType)) {
|
||||||
serverList.push(server);
|
server['serverStr'] = `S${server.id}`;
|
||||||
|
let curGroup = serverList.find(cur => cur.groupId == server.groupId);
|
||||||
|
if(!curGroup) {
|
||||||
|
curGroup = new GroupParam(server);
|
||||||
|
serverList.push(curGroup);
|
||||||
|
}
|
||||||
|
curGroup.pushServer(server);
|
||||||
|
|
||||||
let role = roles.find(role => role.serverId == server.id);
|
let role = roles.find(role => role.serverId == server.id);
|
||||||
if(!!role) {
|
if(!!role) {
|
||||||
let roleInfo = {
|
let curLoginInfo = new ServerParamWithRole(role, server);
|
||||||
roleId: role.roleId,
|
loginServerList.push(curLoginInfo);
|
||||||
roleName: role.roleName,
|
|
||||||
headHid: role.headHid,
|
|
||||||
sHid: role.sHid,
|
|
||||||
lv: role.lv
|
|
||||||
};
|
|
||||||
loginServerList.push({...server, ...roleInfo});
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -43,7 +43,7 @@ module.exports = options => {
|
|||||||
|
|
||||||
await next();
|
await next();
|
||||||
const resBody = ctx.body;
|
const resBody = ctx.body;
|
||||||
console.log('return value:', resBody);
|
console.log('return value:', JSON.stringify(resBody));
|
||||||
if (isJSON(resBody)) {
|
if (isJSON(resBody)) {
|
||||||
ctx.body = { result: aesEncrypt(JSON.stringify(resBody), ENCRYPT_KEY, ENCRYPT_IV) };
|
ctx.body = { result: aesEncrypt(JSON.stringify(resBody), ENCRYPT_KEY, ENCRYPT_IV) };
|
||||||
} else {
|
} else {
|
||||||
|
|||||||
Reference in New Issue
Block a user