后台:添加在线人数
This commit is contained in:
@@ -56,6 +56,12 @@ export default class GameController extends Controller {
|
||||
return
|
||||
}
|
||||
|
||||
public async getOnlineUsersByServer() {
|
||||
const { ctx } = this;
|
||||
ctx.body = await ctx.service.game.getOnlineUsersByServer();
|
||||
return
|
||||
}
|
||||
|
||||
public async stopServerRegister() {
|
||||
const { ctx } = this;
|
||||
const { id } = ctx.request.body;
|
||||
|
||||
@@ -44,6 +44,7 @@ export default (app: Application) => {
|
||||
router.post('/api/game/getregions', tokenParser, controller.game.getRegions);
|
||||
router.post('/api/game/createregion', tokenParser, controller.game.createRegion);
|
||||
router.post('/api/game/getservers', tokenParser, controller.game.getServers);
|
||||
router.post('/api/game/getOnlineUsersByServer', controller.game.getOnlineUsersByServer);
|
||||
router.post('/api/game/getregionstategy', tokenParser, controller.game.getRegionStategy);
|
||||
router.post('/api/game/getwhitelist', tokenParser, controller.game.getWhiteList);
|
||||
router.post('/api/game/updatewhitelist', tokenParser, controller.game.updateWhiteList);
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
import { Service } from 'egg';
|
||||
import { STATUS } from '@consts';
|
||||
import { REDIS_KEY, STATUS } from '@consts';
|
||||
import { ServerlistModel } from '@db/Serverlist';
|
||||
import { gameData } from '@pubUtils/data';
|
||||
import { DicHero } from '@pubUtils/dictionary/DicHero';
|
||||
@@ -19,6 +19,7 @@ import { DicServerName } from '@pubUtils/dictionary/DicServerName';
|
||||
import { CreateRegionParam } from '@domain/backEndField/params';
|
||||
import { UserOrderModel } from '@db/UserOrder';
|
||||
import { SurveyModel } from '@db/Survery';
|
||||
import { RedisClient } from 'redis';
|
||||
|
||||
/**
|
||||
* Test Service
|
||||
@@ -60,6 +61,31 @@ export default class Game extends Service {
|
||||
});
|
||||
}
|
||||
|
||||
public async getOnlineUsersByServer() {
|
||||
const { ctx } = this;
|
||||
let redisClient: RedisClient = ctx.app.context.redisClient;
|
||||
let allRoles = await redisClient.hgetallAsync(REDIS_KEY.ONLINE_USERS);
|
||||
let result: { serverId: number, count: number }[] = [];
|
||||
for(let roleId in allRoles) {
|
||||
try{
|
||||
let param = allRoles[roleId].split('|');
|
||||
let [,,,, _serverId] = param;
|
||||
let serverId = parseInt(_serverId);
|
||||
let index = result.findIndex(cur => cur.serverId == serverId);
|
||||
if(index == -1) {
|
||||
result.push({ serverId, count: 1 });
|
||||
} else {
|
||||
result[index].count++;
|
||||
}
|
||||
} catch(e) {
|
||||
continue;
|
||||
}
|
||||
}
|
||||
return ctx.service.utils.resResult(STATUS.SUCCESS, {
|
||||
result
|
||||
});
|
||||
}
|
||||
|
||||
public async stopServerRegister(id: number) {
|
||||
const { ctx } = this;
|
||||
const server = await ServerlistModel.updateByServerId(id, { stopRegisterTime: nowSeconds() - 1 });
|
||||
|
||||
Reference in New Issue
Block a user