登录:更新服务器列表
This commit is contained in:
@@ -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 })
|
||||
|
||||
@@ -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;
|
||||
};
|
||||
|
||||
67
shared/domain/gameField/serverlist.ts
Normal file
67
shared/domain/gameField/serverlist.ts
Normal 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;
|
||||
}
|
||||
}
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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 {
|
||||
|
||||
Reference in New Issue
Block a user