邮件,异地登录bug
This commit is contained in:
@@ -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>;
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user