登录:显示防沉迷类型

This commit is contained in:
luying
2021-03-13 15:07:41 +08:00
parent fef762747f
commit 482d4fa628
4 changed files with 29 additions and 17 deletions

View File

@@ -294,19 +294,8 @@ export async function reportOneOnline(roleId: string, userCode: string, sid: str
user = await UserModel.updatePlayTime(userCode, guestTimeInc, result.total); // 记录时间 user = await UserModel.updatePlayTime(userCode, guestTimeInc, result.total); // 记录时间
guestTime = user.guestTime; guestTime = user.guestTime;
}
if(result.code != ADDICTION_PREVENTION_CODE.SUCCESS && result.age != -1) { // 未成年人防沉迷 if ( guestTime > GUEST_MAX_TIME ) {
pinus.app.channelService.pushMessageByUids('onPlayTime', resResult(STATUS.SUCCESS, {
isGuest,
guestTime, // 游客已体验时间
hasAuthenticated, // 是否进行过实名认证
isAdult, // 是否已成年
todayPlayTime: result.total, // 今天已游戏时长
type: result.code
} ), [{uid: roleId, sid: sid}]);
} else {
if ((isGuest || !hasAuthenticated) && guestTime > GUEST_MAX_TIME) {
pinus.app.channelService.pushMessageByUids('onPlayTime', resResult(STATUS.SUCCESS, { pinus.app.channelService.pushMessageByUids('onPlayTime', resResult(STATUS.SUCCESS, {
isGuest, isGuest,
guestTime, // 游客已体验时间 guestTime, // 游客已体验时间
@@ -316,5 +305,18 @@ export async function reportOneOnline(roleId: string, userCode: string, sid: str
type: ADDICTION_PREVENTION_CODE.GUEST, type: ADDICTION_PREVENTION_CODE.GUEST,
} ), [{uid: roleId, sid: sid}]); } ), [{uid: roleId, sid: sid}]);
} }
} else {
if(result.code != ADDICTION_PREVENTION_CODE.SUCCESS && result.age != -1) { // 未成年人防沉迷
user = await UserModel.updatePlayTime(userCode, 0, result.total, result.code); // 记录时间
pinus.app.channelService.pushMessageByUids('onPlayTime', resResult(STATUS.SUCCESS, {
isGuest,
guestTime, // 游客已体验时间
hasAuthenticated, // 是否进行过实名认证
isAdult, // 是否已成年
todayPlayTime: result.total, // 今天已游戏时长
type: result.code
} ), [{uid: roleId, sid: sid}]);
}
} }
} }

View File

@@ -57,6 +57,8 @@ export default class User extends BaseModel {
pi: string; // 已通过实名认证用户唯一标识 pi: string; // 已通过实名认证用户唯一标识
@prop({ required: false, default: 0 }) @prop({ required: false, default: 0 })
todayPlayTime: number; // 今日游戏时间 todayPlayTime: number; // 今日游戏时间
@prop({ required: false, default: 0 })
todayPlayType: number; // 未成年防沉迷类型
@prop({ required: false }) @prop({ required: false })
reportTime: Date; // 汇报时间 reportTime: Date; // 汇报时间
@@ -215,8 +217,10 @@ export default class User extends BaseModel {
} }
public static async updatePlayTime(userCode: string, guestTimeInc: number, todayPlayTime: number, lean = true) { public static async updatePlayTime(userCode: string, guestTimeInc: number, todayPlayTime: number, todayPlayType?: number) {
const user: UserType = await UserModel.findOneAndUpdate({ userCode }, { $inc: { guestTime: guestTimeInc }, $set: { todayPlayTime, reportTime: new Date() }}, { new: true }).lean(lean); let update = { todayPlayTime, todayPlayType, reportTime: new Date() };
if(todayPlayType) update.todayPlayType;
const user: UserType = await UserModel.findOneAndUpdate({ userCode }, { $inc: { guestTime: guestTimeInc }, $set: update}, { new: true }).lean();
return user; return user;
} }
} }

View File

@@ -4,7 +4,7 @@ import { DEFAULT_HEROES } from '@consts';
import { HeroModel } from '@db/Hero'; import { HeroModel } from '@db/Hero';
import { RoleModel } from '@db/Role'; import { RoleModel } from '@db/Role';
import { UserModel, UserType } from '@db/User'; import { UserModel, UserType } from '@db/User';
import { STATUS, GET_SMS_TYPE } from '@consts'; import { STATUS, GET_SMS_TYPE, ADDICTION_PREVENTION_CODE } from '@consts';
import { smsModel } from '@db/Sms'; import { smsModel } from '@db/Sms';
import { Service } from 'egg'; import { Service } from 'egg';
import Counter from '@db/Counter'; import Counter from '@db/Counter';
@@ -95,9 +95,15 @@ export default class Auth extends Service {
let age = getAge(user.birthday); let age = getAge(user.birthday);
let isAdult = age >= ADULT_AGE; let isAdult = age >= ADULT_AGE;
let todayPlayTime = user.todayPlayTime; let todayPlayTime = user.todayPlayTime;
let type = user.todayPlayType;
if(shouldRefresh(user.reportTime, new Date(), 0)) { if(shouldRefresh(user.reportTime, new Date(), 0)) {
todayPlayTime = 0; todayPlayTime = 0;
type = 0;
} }
if((user.isGuest || !user.hasAuthenticated) && user.guestTime > GUEST_MAX_TIME) {
type = ADDICTION_PREVENTION_CODE.GUEST;
}
return { return {
tel: user.tel, tel: user.tel,
isGuest: !!user.isGuest, isGuest: !!user.isGuest,
@@ -105,7 +111,7 @@ export default class Auth extends Service {
hasAuthenticated: !!user.hasAuthenticated, // 是否进行过实名认证 hasAuthenticated: !!user.hasAuthenticated, // 是否进行过实名认证
isAdult, // 是否已成年 isAdult, // 是否已成年
todayPlayTime, // 今天已游戏时长 todayPlayTime, // 今天已游戏时长
type, // 防沉迷类型
hasSetPw: user.hasSetPw, // 是否设置了密码 hasSetPw: user.hasSetPw, // 是否设置了密码
token: user.token, // 用户token token: user.token, // 用户token
userCode: user.userCode // 用户标识 userCode: user.userCode // 用户标识

View File

@@ -40,7 +40,7 @@ export default (appInfo: EggAppInfo) => {
}, },
}; };
config.decodeParm = false; config.decodeParm = true;
config.static = { config.static = {
prefix: '/', prefix: '/',