防沉迷:修复登录退出时不必全部用户循环
This commit is contained in:
@@ -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}]);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user