登录:当账号登录的时候,将已登录玩家踢下
This commit is contained in:
@@ -48,6 +48,9 @@ export default class Auth extends Service {
|
||||
if (getuiCID) {//更新个推cid
|
||||
await UserModel.updateGetuiCID(tel, getuiCID);
|
||||
}
|
||||
if(user && user.userCode) {
|
||||
ctx.service.utils.checkOnlineUser(user.userCode);
|
||||
}
|
||||
let param = this.getReturnParam(user);
|
||||
|
||||
return this.ctx.service.utils.resResult(STATUS.SUCCESS, {
|
||||
@@ -68,6 +71,9 @@ export default class Auth extends Service {
|
||||
if (getuiCID) {//更新个推cid
|
||||
await UserModel.updateGetuiCID(user.tel, getuiCID);
|
||||
}
|
||||
if(user && user.userCode) {
|
||||
ctx.service.utils.checkOnlineUser(user.userCode);
|
||||
}
|
||||
let param = this.getReturnParam(user);
|
||||
|
||||
let canLogin = true;
|
||||
@@ -219,6 +225,9 @@ export default class Auth extends Service {
|
||||
if (getuiCID) {//更新个推cid
|
||||
await UserModel.updateGetuiCID(tel, getuiCID);
|
||||
}
|
||||
if(user && user.userCode) {
|
||||
ctx.service.utils.checkOnlineUser(user.userCode);
|
||||
}
|
||||
let param = this.getReturnParam(user);
|
||||
return ctx.service.utils.resResult(STATUS.SUCCESS, param);
|
||||
}
|
||||
@@ -281,6 +290,9 @@ export default class Auth extends Service {
|
||||
if (getuiCID) {//更新个推cid
|
||||
await UserModel.updateGetuiCID(tel, getuiCID);
|
||||
}
|
||||
if(user && user.userCode) {
|
||||
ctx.service.utils.checkOnlineUser(user.userCode);
|
||||
}
|
||||
let param = this.getReturnParam(user);
|
||||
return ctx.service.utils.resResult(STATUS.SUCCESS, { ...param });
|
||||
}
|
||||
@@ -410,11 +422,11 @@ export default class Auth extends Service {
|
||||
|
||||
let channelId = getChannelId(channelType, requestResult.data.uid);
|
||||
const token = ctx.service.utils.generateStr(256);
|
||||
let { isCreate, user} = await UserModel.createOrUpdateChannelUser(channelId, channelType, {
|
||||
let { user} = await UserModel.createOrUpdateChannelUser(channelId, channelType, {
|
||||
...requestResult.data, childGameId:`${childGameId}`, platformAppid
|
||||
}, token, platform, pkgName, serverType, deviceId, ctx.clientIp);
|
||||
if(isCreate) {
|
||||
// ctx.service.sdk.reportTAEventWithDistinctId(distinctId, TA_EVENT.REGISTER, null, ctx.clientIp);
|
||||
if(user && user.userCode) {
|
||||
ctx.service.utils.checkOnlineUser(user.userCode);
|
||||
}
|
||||
|
||||
if (getuiCID) {//更新个推cid
|
||||
|
||||
@@ -3,6 +3,7 @@ import { resResult as pubResult } from '../pubUtils/util';
|
||||
import { gameData } from 'app/pubUtils/data';
|
||||
import { RedisClient } from 'redis';
|
||||
import { REDIS_KEY } from '@consts';
|
||||
import { getRedisSubChannel } from 'app/pubUtils/sdkUtil';
|
||||
const csprng = require('csprng');
|
||||
/**
|
||||
* Utils Service
|
||||
@@ -57,6 +58,25 @@ export default class Utils extends Service {
|
||||
}
|
||||
}
|
||||
|
||||
public async checkOnlineUser(userCode: string) {
|
||||
let redisClient: RedisClient = this.ctx.app.context.redisClient;
|
||||
let onlineRoleId = await redisClient.hgetAsync(REDIS_KEY.USER_CODE, userCode);
|
||||
|
||||
if (!!onlineRoleId) { // 多地登陆踢下线
|
||||
let str = await redisClient.hgetAsync(REDIS_KEY.ONLINE_USERS, onlineRoleId);
|
||||
|
||||
if(str) {
|
||||
try {
|
||||
let [,sid] = str?.split('|')??[];
|
||||
let name = getRedisSubChannel(REDIS_KEY.USER_CHANNEL, this.ctx.app.config.env);
|
||||
let result = await redisClient.publishAsync(name, `${sid}|${onlineRoleId}`);
|
||||
} catch(e) {
|
||||
console.error('checkOnlineUser', e);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// 检测是否可以登录
|
||||
public async validateCanLogin() {
|
||||
if(gameData.serverConst.CLOSE_LOGIN == 1) return false;
|
||||
|
||||
Reference in New Issue
Block a user