登录:更新服务器列表

This commit is contained in:
luying
2021-03-05 16:26:15 +08:00
parent d22e22fd30
commit f1e9c1efd6
5 changed files with 102 additions and 67 deletions

View File

@@ -1,9 +1,8 @@
import { APP_ID } from './../consts';
import BaseModel from './BaseModel';
import { index, getModelForClass, prop, DocumentType, modelOptions } from '@typegoose/typegoose';
import { getSeconds } from '../pubUtils/timeUtil';
class ServerInfo {
export class ServerInfo {
@prop({ required: true })
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;
@prop({ required: true })

View File

@@ -1,4 +1,3 @@
import { APP_ID } from './../consts';
import BaseModel from './BaseModel';
import { index, getModelForClass, prop, DocumentType, modelOptions } from '@typegoose/typegoose';
import { getSeconds } from '../pubUtils/timeUtil';
@@ -11,66 +10,35 @@ import { getSeconds } from '../pubUtils/timeUtil';
export default class Notice extends BaseModel {
@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 })
title: string;
@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;
sort: number;
@prop({ required: true })
showStartTime: Date;
@prop({ required: true })
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;
};

View File

@@ -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;
}
}

View File

@@ -2,6 +2,7 @@ import { STATUS } from '@consts';
import { GameModel } from '@db/Game';
import { Controller } from 'egg';
import { RoleModel } from '@db/Role';
import { ServerParamWithRole, GroupParam } from '../domain/gameField/serverlist';
export default class GameController extends Controller {
@@ -9,26 +10,26 @@ export default class GameController extends Controller {
const { ctx } = this;
let { serverType, auth, uid } = ctx;
let serverList = [];
let loginServerList = [];
let serverList = new Array<GroupParam>();
let loginServerList = new Array<ServerParamWithRole>();
let allServers = await GameModel.getServerList();
let roles = await RoleModel.findAllByUid(uid);
console.log(roles.length)
for(let server of allServers) {
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);
if(!!role) {
let roleInfo = {
roleId: role.roleId,
roleName: role.roleName,
headHid: role.headHid,
sHid: role.sHid,
lv: role.lv
};
loginServerList.push({...server, ...roleInfo});
let curLoginInfo = new ServerParamWithRole(role, server);
loginServerList.push(curLoginInfo);
}
}
}

View File

@@ -43,7 +43,7 @@ module.exports = options => {
await next();
const resBody = ctx.body;
console.log('return value:', resBody);
console.log('return value:', JSON.stringify(resBody));
if (isJSON(resBody)) {
ctx.body = { result: aesEncrypt(JSON.stringify(resBody), ENCRYPT_KEY, ENCRYPT_IV) };
} else {