diff --git a/shared/consts/statusCode.ts b/shared/consts/statusCode.ts index b8bb50993..f820e41f7 100644 --- a/shared/consts/statusCode.ts +++ b/shared/consts/statusCode.ts @@ -12,6 +12,7 @@ export const STATUS = { SERVER_NOT_FOUND: { code: 10004, simStr: '未找到服务器列表' }, ROLE_NOT_FOUND: { code: 10005, simStr: '未找到角色' }, DUP_LOGIN: { code: 10006, simStr: '重复登录' }, + NEW_SERVER_ERR: { code: 10007, simStr: '添加新服务器失败' }, // 战斗相关状态 20000 - 29999 // 战斗通用 20000 - 20099 BATTLE_MISS_INFO: { code: 20001, simStr: '缺少关卡信息' }, diff --git a/shared/db/Game.ts b/shared/db/Game.ts index eb7d92fe1..f419327da 100644 --- a/shared/db/Game.ts +++ b/shared/db/Game.ts @@ -43,7 +43,7 @@ export default class Game extends BaseModel { @prop({ required: true }) des: string; - @prop({ required: true }) + @prop({ required: true, type: ServerInfo, default: [] }) serverList: Array; @prop({ required: true }) @@ -72,6 +72,12 @@ export default class Game extends BaseModel { console.log(serverType, serverList); return serverList; } + + public static async newServer(serverId: number, serverType: string, name: string, host: string, port: number, status: number, lean = true) { + let serverInfo: ServerInfo = {id: serverId, name, host, port, status, createTime: new Date(), serverType}; + let game = await GameModel.findOneAndUpdate({}, {$push: {serverList: serverInfo}}, {new: true}).lean(lean); + return game; + } } export const GameModel = getModelForClass(Game); diff --git a/web-server/app/controller/game.ts b/web-server/app/controller/game.ts index 3f706264d..8fc8183b8 100644 --- a/web-server/app/controller/game.ts +++ b/web-server/app/controller/game.ts @@ -1,5 +1,5 @@ import { STATUS } from '@consts/statusCode'; -import { GameModel } from '@db/Game'; +import Game, { GameModel } from '@db/Game'; import { Controller } from 'egg'; export default class GameController extends Controller { @@ -13,4 +13,15 @@ export default class GameController extends Controller { ctx.body = ctx.service.utils.resResult(STATUS.SERVER_NOT_FOUND); } } + + public async newServer() { + const { ctx } = this; + const { serverId, serverType, name, host, port, status } = ctx.request.body; + 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); + } + } }