import { STATUS } from '@consts'; import { GameModel } from '@db/Game'; import { Controller } from 'egg'; import { RoleModel } from '@db/Role'; import { NoticeModel } from '@db/Notice'; import { ServerParamWithRole, GroupParam } from '../domain/gameField/serverlist'; export default class GameController extends Controller { public async getServerList() { const { ctx } = this; let { serverType, auth, uid } = ctx; let serverList = new Array(); let loginServerList = new Array(); let allServers = await GameModel.getServerList(); let roles = await RoleModel.findAllByUid(uid, true, true); allServers.sort((a, b) => { return b.id - a.id; }); for(let server of allServers) { if(auth === 1 || (!auth && server.serverType == serverType)) { 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 curLoginInfo = new ServerParamWithRole(role, server); loginServerList.push(curLoginInfo); } } } loginServerList.sort((a, b) => { return b.updatedAt.getTime() - a.updatedAt.getTime()}); if (serverList && serverList.length > 0) { ctx.body = ctx.service.utils.resResult(STATUS.SUCCESS, { serverList, loginServerList }); } else { ctx.body = ctx.service.utils.resResult(STATUS.SERVER_NOT_FOUND); } return } public async newServer() { const { ctx } = this; const { serverId, serverType, name, host, port, status } = ctx.request.body; const serverList = await GameModel.getAllServerList(); for (let { id, host: preHost, port: prePort } of serverList) { if (preHost === host && prePort === port && id === serverId) { ctx.body = ctx.service.utils.resResult(STATUS.SERVER_EXISTS); return; } } const gameInfo = await GameModel.newServer(serverId, serverType, name, host, port, status); if (gameInfo) { ctx.body = ctx.service.utils.resResult(STATUS.SUCCESS, { gameInfo }); } else { ctx.body = ctx.service.utils.resResult(STATUS.NEW_SERVER_ERR); } return } public async getnotice() { const { ctx } = this; let { serverType } = ctx; console.log(serverType); let notice = await NoticeModel.getAllNotice(serverType); let result = notice.map(cur => { let {id, title, tag, type, content, time} = cur; return { id, title, tag, type, content, time } }) ctx.body = ctx.service.utils.resResult(STATUS.SUCCESS, { notice: result }); return } }