diff --git a/game-server/app/servers/connector/handler/entryHandler.ts b/game-server/app/servers/connector/handler/entryHandler.ts index f752a6799..63c550bba 100644 --- a/game-server/app/servers/connector/handler/entryHandler.ts +++ b/game-server/app/servers/connector/handler/entryHandler.ts @@ -1,9 +1,11 @@ +import { STATUS } from './../../../consts/statusCode'; import { EquipModel } from './../../../db/Equip'; import { RoleModel } from './../../../db/Role'; import { UserModel } from '../../../db/User'; import { Application, Session } from 'pinus'; import {FrontendSession} from 'pinus'; import { HeroModel } from './../../../db/Hero'; +import { resResult } from '../../../pubUtils/util'; export default function (app: Application) { return new EntryHandler(app); @@ -19,42 +21,28 @@ export class EntryHandler { * @param {Object} msg request message * @param {Object} session current session object */ - async enter(msg: { rid: string, username: string, token: string, serverId: number }, session: FrontendSession) { + async enter(msg: { token: string, serverId: number }, session: FrontendSession) { let self = this; - let rid = msg.rid; let serverId = msg.serverId; - let uid = msg.username + '*' + rid; let sessionService = self.app.get('sessionService'); let user = await UserModel.findUserByToken(msg.token); if (!user) { console.log('user token not found'); - return { - code: 500, - error: true, - data: 'user token not found' - }; + return resResult(STATUS.TOKEN_ERR); } let role = await RoleModel.findByUid(user.uid, serverId); if (!role) { - return { - code: 201, - error: true, - data: '用户还未创建角色', - } + return resResult(STATUS.ROLE_NOT_FOUND); } // duplicate log in if (!!sessionService.getByUid(role.roleId)) { - console.log('uid not found'); - return { - code: 500, - error: true - }; + console.log('duplicate log in', role.roleId); + return resResult(STATUS.DUP_LOGIN); } await session.abind(role.roleId); - session.set('rid', rid); session.set('uid', role.roleId); session.set('roleId', role.roleId); session.set('roleName', role.roleName); @@ -64,11 +52,11 @@ export class EntryHandler { session.push('roleId', () => {}); session.push('roleName', () => {}); session.push('eventStatus', () => {}); - session.push('rid', function (err) { - if (err) { - console.error('set rid for session service failed! error is : %j', err.stack); - } - }); + // session.push('rid', function (err) { + // if (err) { + // console.error('set rid for session service failed! error is : %j', err.stack); + // } + // }); session.on('closed', this.onUserLeave.bind(this)); let channelService = self.app.get('channelService'); @@ -79,16 +67,12 @@ export class EntryHandler { // put user into channel await self.app.rpc.battle.eventBattleRemote.add.route(session)(role.roleId, self.app.get('serverId'), true); - let users = await self.app.rpc.chat.chatRemote.add.route(session)(role.roleId, self.app.get('serverId'), rid, true); + // let users = await self.app.rpc.chat.chatRemote.add.route(session)(role.roleId, self.app.get('serverId'), rid, true); let heros = await HeroModel.findByRole(role.roleId); let equips = await EquipModel.findbyRole(role.roleId); role['heros'] = heros; role['equips'] = equips; - return { - status: 200, - users: users, - role - }; + return resResult(STATUS.SUCCESS, { role }); } /** diff --git a/game-server/app/servers/gate/handler/gateHandler.ts b/game-server/app/servers/gate/handler/gateHandler.ts index a8bdd74de..ed4b3be3b 100644 --- a/game-server/app/servers/gate/handler/gateHandler.ts +++ b/game-server/app/servers/gate/handler/gateHandler.ts @@ -1,5 +1,7 @@ +import { STATUS } from './../../../consts/statusCode'; import { dispatch } from '../../../util/dispatcher'; import { Application , BackendSession} from 'pinus'; +import { resResult } from '../../../pubUtils/util'; export default function (app: Application) { return new GateHandler(app); @@ -16,26 +18,18 @@ export class GateHandler { * @param {Object} session * */ - async queryEntry(msg: {uid: string}, session: BackendSession) { - let uid = msg.uid; - if (!uid) { - return { - code: 500 - }; + async queryEntry(msg: {userCode: string}, session: BackendSession) { + let { userCode } = msg; + if (!userCode) { + return resResult(STATUS.WRONG_PARMS); } // get all connectors let connectors = this.app.getServersByType('connector'); if (!connectors || connectors.length === 0) { - return { - code: 500 - }; + return resResult(STATUS.CONNECTOR_ERR); } // select connector - let res = dispatch(uid, connectors); - return { - code: 200, - host: res.clientHost, - port: res.clientPort - }; + let res = dispatch(userCode, connectors); + return resResult(STATUS.SUCCESS, {host: res.clientHost, port: res.clientPort}); } } \ No newline at end of file diff --git a/shared/consts/statusCode.ts b/shared/consts/statusCode.ts index c5d9f9271..8feb9e95a 100644 --- a/shared/consts/statusCode.ts +++ b/shared/consts/statusCode.ts @@ -4,12 +4,14 @@ export const STATUS = { WRONG_PARMS: { code: 1, simStr: '参数错误' }, TOKEN_ERR: { code: 2, simStr: 'token失效' }, INTERNAL_ERR: { code: 3, simStr: '内部错误' }, + CONNECTOR_ERR: { code: 4, simStr: '连接服配置错误'}, // 账号相关状态 10000 - 19999 SMS_IN_60S: { code: 10001, simStr: '60秒内只能发送一次' }, SMS_CNT_LIMIT: { code: 10002, simStr: '今日短信条数已达上限' }, SMS_INVALID: { code: 10003, simStr: '验证码无效' }, SERVER_NOT_FOUND: { code: 10004, simStr: '未找到服务器列表' }, ROLE_NOT_FOUND: { code: 10005, simStr: '未找到角色' }, + DUP_LOGIN: { code: 10006, simStr: '重复登录' }, // 战斗相关状态 20000 - 29999 // 战斗通用 20000 - 20099 // 主线 20100 - 20199 diff --git a/shared/db/Game.ts b/shared/db/Game.ts index af40b3749..eb7d92fe1 100644 --- a/shared/db/Game.ts +++ b/shared/db/Game.ts @@ -3,6 +3,9 @@ import BaseModel from './BaseModel'; import { index, getModelForClass, prop } from '@typegoose/typegoose'; class ServerInfo { + @prop({ required: true }) + id: number; + @prop({ required: true }) name: string; @@ -55,7 +58,7 @@ export default class Game extends BaseModel { public static async getServerListByType(serverType: string) { let game = await GameModel.findOne().lean(); if (!game) { - const serverInfo: ServerInfo = { name: '常山少年', host: 'pinus_test.trgame.cn', port: 3014, status: 1, createTime: new Date(), serverType: 'official' }; + const serverInfo: ServerInfo = { id: 1, name: '常山少年', host: 'pinus_test.trgame.cn', port: 3014, status: 1, createTime: new Date(), serverType: 'official' }; const iconUrl = `https://download.tgamebox.cn/avatar/${APP_ID}/1.png`; game = await GameModel.findOneAndUpdate( {}, diff --git a/shared/db/User.ts b/shared/db/User.ts index 5dd6ce842..028dec31b 100644 --- a/shared/db/User.ts +++ b/shared/db/User.ts @@ -2,6 +2,7 @@ import { COUNTER } from './../consts/consts'; import { CounterModel } from './Counter'; import BaseModel from './BaseModel'; import { index, getModelForClass, prop } from '@typegoose/typegoose'; +import { genCode } from 'app/pubUtils/util'; /** * 用户字段接口 @@ -16,6 +17,9 @@ export default class User extends BaseModel { @prop({ required: true }) username: string; + @prop({ required: true }) + userCode: string; // 用户唯一字符串标识 + @prop({ required: true }) token: string; @@ -65,8 +69,9 @@ export default class User extends BaseModel { let update = {}; if (!user) { const uid = await CounterModel.getNewCounter(COUNTER.UID); + const userCode = genCode(8); const doc = new UserModel(); - update = Object.assign(update, { platform, pkgName, serverType, createTime: curTime, uid, username: `用户${uid}` }, doc.toJSON()); + update = Object.assign(update, { platform, pkgName, serverType, createTime: curTime, uid, userCode, username: `用户${uid}` }, doc.toJSON()); } update = Object.assign(update, { token, lastLoginTime: curTime }); user = await UserModel.findOneAndUpdate({ tel }, update, { upsert: true, new: true }).lean(lean); diff --git a/shared/pubUtils/util.ts b/shared/pubUtils/util.ts index 5990ff1e7..a872ea22a 100644 --- a/shared/pubUtils/util.ts +++ b/shared/pubUtils/util.ts @@ -184,5 +184,8 @@ export function getRandEelm(source: Array = [], cnt = 1): Array { export function resResult(status: {code: number, simStr: string}, data = null, customMsg = '') { const { code, simStr } = status; + if (code !== STATUS.SUCCESS.code) { + console.log(`normal err, code: ${code}, des: ${customMsg || simStr}`); + } return {code, msg: customMsg || simStr, data}; } \ No newline at end of file diff --git a/web-server/app/service/Auth.ts b/web-server/app/service/Auth.ts index c3e6b82b2..898dd3714 100644 --- a/web-server/app/service/Auth.ts +++ b/web-server/app/service/Auth.ts @@ -99,7 +99,7 @@ export default class Auth extends Service { // 用户注册登录 const token = ctx.service.utils.generateStr(256); const user = await UserModel.updateToken(tel, token, platform, pkgName, serverType); - return ctx.service.utils.resResult(STATUS.SUCCESS, { token, uid: user?.uid }); + return ctx.service.utils.resResult(STATUS.SUCCESS, { token, userCode: user?.userCode }); } public async checkRole(serverId: number) {