邮件,异地登录bug

This commit is contained in:
mamengke01
2021-01-09 19:08:45 +08:00
parent e22e2b168c
commit 0f04e55b34
12 changed files with 155 additions and 45 deletions
@@ -111,7 +111,6 @@ export class PvpHandler {
let checkHeroes = await checkBattleHeroesByHid(roleId, heroes);
if(!checkHeroes) return resResult(STATUS.BATTLE_HERO_NOT_FOUND);
const pvpDefense = await PvpDefenseModel.findByRoleId(roleId);
if(!pvpDefense) return resResult(STATUS.PVP_NOT_OPEN);
// 检查挑战次数
@@ -196,7 +195,7 @@ export class PvpHandler {
$set: { status: isSuccess?1:2 }
}, true);
// 增加挑战次数
// 减少挑战次数
let { challengeCnt, challengeRefTime } = comsumeChallengeCnt(pvpDefense.challengeCnt, pvpDefense.challengeRefTime, pvpDefense.seasonEndTime);
if ( hisScore < score) {
hisScore = score;
@@ -371,16 +370,13 @@ export class PvpHandler {
}
receivedBox.push(id);
let { challengeCnt, challengeRefTime } = refresh(lastChallengeCnt, lastChallengeRefTime, seasonEndTime);
await PvpDefenseModel.updateInfo(roleId, {receivedBox, challengeCnt, challengeRefTime});
let result = await addItems(roleId, roleName, sid, pvpBox.reward );
return resResult(STATUS.SUCCESS,{goods: result, receivedBox, challengeCnt, challengeRefTime});
}
async getRec(msg: {}, session: BackendSession ) {
let roleId = session.get('roleId');
let roleName = session.get('roleName');
let pvpRecords = await PvpRecordModel.getRecByRoleId(roleId);
return resResult(STATUS.SUCCESS, {list: pvpRecords});
}
@@ -12,6 +12,7 @@ import { getAp } from '../../../services/actionPointService';
import { ItemModel } from '../../../db/Item';
import { chackFunOpenWhenLogin } from '../../../services/funcSwitchService';
import { loginRefresh } from '../../../services/playerEventService';
import { getRedis, setRedis } from '../../../services/redisService';
export default function (app: Application) {
return new EntryHandler(app);
}
@@ -29,7 +30,6 @@ export class EntryHandler {
async enter(msg: { token: string, serverId: number }, session: FrontendSession) {
let self = this;
let serverId = msg.serverId;
let sessionService = self.app.get('sessionService');
let user = await UserModel.findUserByToken(msg.token);
if (!user) {
@@ -41,8 +41,13 @@ export class EntryHandler {
if (!role) {
return resResult(STATUS.ROLE_NOT_FOUND);
}
self.remoteLogin(role.roleId);
await sessionService.akick(role.roleId);//
let key = 'login_roleId_' + role.roleId;
let connect = await getRedis(key);
if (!!connect) {
self.app.rpc.connector.connectorRemote.remoteLogin.toServer(connect, role.roleId);
}
let serverName = this.app.getServerId();
setRedis(key, serverName);
await session.abind(role.roleId);
session.set('uid', role.roleId);
session.set('roleId', role.roleId);
@@ -88,21 +93,10 @@ export class EntryHandler {
role['apJson'] = apJson;
role['ce'] = reduceCe(role.ce);
role['topFiveCe'] = reduceCe(role.topFiveCe);
return resResult(STATUS.SUCCESS, { role });
}
remoteLogin(uid: string) {
let sessionService = this.app.get('sessionService');
let sessions = sessionService.getByUid(uid);
if (!!sessions) {
sessions.forEach(session=>{
let roleId = session.get('roleId');
let sid = session.get('sid');
let uids = [{uid: roleId, sid}];
this.app.get('channelService').pushMessageByUids('onRemoteLogin', resResult(STATUS.LOGIN_ERR ), uids);
});
}
}
/**
* User log out handler
*
@@ -0,0 +1,29 @@
import { Application, ChannelService, FrontendSession, RemoterClass } from 'pinus';
import { STATUS } from '../../../consts/statusCode';
import { resResult } from '../../../pubUtils/util';
export default function (app: Application) {
return new ConnectorRemote(app);
}
export class ConnectorRemote {
constructor(private app: Application) {
this.app = app;
this.channelService = app.get('channelService');
}
private channelService: ChannelService;
public async remoteLogin(uid: string) {
let sessionService = this.app.get('sessionService');
let sessions = sessionService.getByUid(uid);
if (!!sessions) {
sessions.forEach(session=>{
let roleId = session.get('roleId');
let sid = session.get('sid');
let uids = [{uid: roleId, sid}];
this.channelService.pushMessageByUids('onRemoteLogin', resResult(STATUS.LOGIN_ERR ), uids);
});
}
await sessionService.akick(uid);
}
}
@@ -1,5 +1,6 @@
import { Application, ChannelService, FrontendSession, RemoterClass } from 'pinus';
import { STATUS } from '../../../consts/statusCode';
import { resResult } from '../../../pubUtils/util';
export default function (app: Application) {
return new RoleRemote(app);
}
@@ -6,6 +6,7 @@ import { FrontendSession, RemoterClass } from 'pinus';
import { ChatRemote } from './chat/remote/chatRemote';
import { ComBattleRemote } from './battle/remote/comBattleRemote';
import { BattleRemote } from './battle/remote/battleRemote';
import { ConnectorRemote } from './connector/remote/connectorRemote';
declare global {
interface UserRpc {
@@ -16,5 +17,8 @@ declare global {
comBattleRemote: RemoterClass<FrontendSession, ComBattleRemote>;
battleRemote: RemoterClass<FrontendSession, BattleRemote>;
};
connector: {
connectorRemote: RemoterClass<FrontendSession, ConnectorRemote>;
}
}
}