登录:同一设备不可重复使用游客模式

This commit is contained in:
luying
2021-03-03 19:39:28 +08:00
parent bbdc20240d
commit 0e7fa64393
3 changed files with 34 additions and 16 deletions

View File

@@ -1,4 +1,4 @@
import { COUNTER, HERO_SYSTEM_TYPE, DEFAULT_LV, DEFAULT_ITEMS, ITID, DEFAULT_GOLD, DEFAULT_HERO_LV, DEFAULT_EQUIPS, DEFAULT_COIN, ADULT_AGE } from '@consts';
import { COUNTER, HERO_SYSTEM_TYPE, DEFAULT_LV, DEFAULT_ITEMS, ITID, DEFAULT_GOLD, DEFAULT_HERO_LV, DEFAULT_EQUIPS, DEFAULT_COIN, ADULT_AGE, GUEST_MAX_TIME, GUEST_DAY } from '@consts';
import { DEFAULT_HEROES } from '@consts';
import { HeroModel } from '@db/Hero';
import { RoleModel } from '@db/Role';
@@ -34,17 +34,29 @@ export default class Auth extends Service {
if(isGuest) {
const tel = ctx.service.utils.genCode(10);
const token = ctx.service.utils.generateStr(256);
user = await UserModel.createUser(isGuest, tel, token, platform, pkgName, serverType, deviceId);
let param = this.getReturnParam(user);
// TODO 判断同一设备号15天内是否重复使用游客模式
if(param.isGuest && param.guestTime > 60*60*1000) {
loginType = 2;
let lastGuest = await UserModel.getLastDeviceGuest(deviceId);
let { guestTime, createdAt } = lastGuest;
if(shouldRefresh(createdAt, new Date(), 0, GUEST_DAY)) {
guestTime = 0;
}
return this.ctx.service.utils.resResult(STATUS.SUCCESS, {
canLogin: true,
loginType,
...param
});
if(guestTime > GUEST_MAX_TIME) {
loginType = 3;
return this.ctx.service.utils.resResult(STATUS.SUCCESS, {
canLogin: true,
loginType
});
} else {
user = await UserModel.createUser(isGuest, tel, token, platform, pkgName, serverType, deviceId, guestTime);
let param = this.getReturnParam(user);
return this.ctx.service.utils.resResult(STATUS.SUCCESS, {
canLogin: true,
loginType,
...param
});
}
} else {
return this.ctx.service.utils.resResult(STATUS.SUCCESS, {
@@ -56,7 +68,7 @@ export default class Auth extends Service {
user = await UserModel.updateToken(user.tel, token, deviceId);
let param = this.getReturnParam(user);
if(param.isGuest && param.guestTime > 60*60*1000) {
if(param.isGuest && param.guestTime > GUEST_MAX_TIME) {
loginType = 2;
}
return this.ctx.service.utils.resResult(STATUS.SUCCESS, {