75 lines
2.0 KiB
TypeScript
75 lines
2.0 KiB
TypeScript
import { Service } from 'egg';
|
|
import { resResult as pubResult } from '../pubUtils/util';
|
|
import { gameData } from 'app/pubUtils/data';
|
|
import { RedisClient } from 'redis';
|
|
import { REDIS_KEY } from '@consts';
|
|
const csprng = require('csprng');
|
|
/**
|
|
* Utils Service
|
|
*/
|
|
export default class Utils extends Service {
|
|
/**
|
|
* 生成 len 长度的随机字符串
|
|
* @param len 长度
|
|
* @param radix 基数
|
|
*/
|
|
public generateStr(len: number, radix = 36) {
|
|
return `${csprng(len, radix)}`;
|
|
}
|
|
|
|
public genCode(len) {
|
|
const chars = '123456789ABCDEFGHJKLMNPQRSTWXYZabcdefghijklmnopqrstuvwxyz';
|
|
const charArr = chars.split('');
|
|
let code = '';
|
|
for (let i = 0; i < len; i++) {
|
|
code += charArr[Math.floor(Math.random() * charArr.length)];
|
|
}
|
|
return code;
|
|
}
|
|
|
|
/**
|
|
* 生成指定长度的随机数
|
|
* @param len 随机数长度
|
|
*/
|
|
public generateNum(len: number) {
|
|
let code = '';
|
|
for (let i = 0; i < len; i++) {
|
|
code += parseInt(`${Math.random() * 10}`);
|
|
}
|
|
return code;
|
|
}
|
|
|
|
public resResult(status: {code: number, simStr: string}, data?, customMsg?: string) {
|
|
return pubResult(status, data, customMsg);
|
|
}
|
|
|
|
public log(level: 'DEBUG'|'INFO'|'WARN'| 'ERROR', message: string) {
|
|
const log = this.app.loggers.get('linkLogger');
|
|
|
|
if(level == 'DEBUG') {
|
|
log.error(`${message}`);
|
|
} else if (level == 'INFO') {
|
|
log.info(`${message}`);
|
|
} else if (level == 'WARN') {
|
|
log.warn(`${message}`);
|
|
} else if (level == "ERROR") {
|
|
log.error(`${message}`);
|
|
}
|
|
}
|
|
|
|
// 检测是否可以登录
|
|
public async validateCanLogin() {
|
|
if(gameData.serverConst.CLOSE_LOGIN == 1) return false;
|
|
if(gameData.serverConst.CLOSE_LOGIN_WHEN_ONLINE_MAX) {
|
|
|
|
let redisClient: RedisClient = this.ctx.app.context.redisClient;
|
|
let count = await redisClient.hlenAsync(REDIS_KEY.ONLINE_USERS);
|
|
|
|
if(count >= gameData.serverConst.MAX_ONLINE_USER_COUNT) {
|
|
return false
|
|
}
|
|
}
|
|
return true;
|
|
}
|
|
}
|