防沉迷:修复登录退出时不必全部用户循环

This commit is contained in:
luying
2021-03-10 10:35:58 +08:00
parent 1764ce6462
commit 83d9e398db
3 changed files with 44 additions and 34 deletions

View File

@@ -271,45 +271,50 @@ export async function reportOnlineSchedule() {
let allRoles = await getAllOnlineRoles();
console.log('reportOnlineSchedule all roles count: ', allRoles.length)
for(let { roleId, userCode, sid, pkgName } of allRoles) {
let result = await reportOnline(userCode, pkgName); // 连接sdk
if(!result || result.code == -1) continue;
let result = reportOneOnline(roleId, userCode, sid, pkgName);
if(!result) continue;
}
}
let user = await UserModel.findUserByUserCode(userCode);
if(!user) continue;
let { reportTime = new Date(), lastLoginTime = new Date(), guestTime, isGuest, hasAuthenticated, birthday } = user;
let age = getAge(birthday);
let isAdult = age >= ADULT_AGE;
export async function reportOneOnline(roleId: string, userCode: string, sid: string, pkgName: string) {
if(isGuest || !hasAuthenticated) {
let lastTime = lastLoginTime > reportTime? lastLoginTime.getTime(): reportTime.getTime();
let guestTimeInc = Math.floor((Date.now() - lastTime)/1000);
user = await UserModel.updatePlayTime(userCode, guestTimeInc, result.total); // 记录时间
let result = await reportOnline(userCode, pkgName); // 连接sdk
if(!result || result.code == -1) return false;
let user = await UserModel.findUserByUserCode(userCode);
if(!user) return false;
let { reportTime = new Date(), lastLoginTime = new Date(), guestTime, isGuest, hasAuthenticated, birthday } = user;
guestTime = user.guestTime;
}
let age = getAge(birthday);
let isAdult = age >= ADULT_AGE;
if(result.code != ADDICTION_PREVENTION_CODE.SUCCESS && result.age != -1) { // 未成年人防沉迷
if(isGuest || !hasAuthenticated) {
let lastTime = lastLoginTime > reportTime? lastLoginTime.getTime(): reportTime.getTime();
let guestTimeInc = Math.floor((Date.now() - lastTime)/1000);
user = await UserModel.updatePlayTime(userCode, guestTimeInc, result.total); // 记录时间
guestTime = user.guestTime;
}
if(result.code != ADDICTION_PREVENTION_CODE.SUCCESS && result.age != -1) { // 未成年人防沉迷
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, {
isGuest,
guestTime, // 游客已体验时间
hasAuthenticated, // 是否进行过实名认证
hasAuthenticated, // 是否进行过实名认证
isAdult, // 是否已成年
todayPlayTime: result.total, // 今天已游戏时长
type: result.code
type: ADDICTION_PREVENTION_CODE.GUEST,
} ), [{uid: roleId, sid: sid}]);
} else {
if ((isGuest || !hasAuthenticated) && guestTime > GUEST_MAX_TIME) {
pinus.app.channelService.pushMessageByUids('onPlayTime', resResult(STATUS.SUCCESS, {
isGuest,
guestTime, // 游客已体验时间
hasAuthenticated, // 是否进行过实名认证
isAdult, // 是否已成年
todayPlayTime: result.total, // 今天已游戏时长
type: ADDICTION_PREVENTION_CODE.GUEST,
} ), [{uid: roleId, sid: sid}]);
}
}
}
}