60 lines
2.9 KiB
TypeScript
60 lines
2.9 KiB
TypeScript
import moment = require("moment");
|
|
import { pinus } from "pinus";
|
|
import { ADDICTION_PREVENTION_CODE, ADULT_AGE, GUEST_MAX_TIME, STATUS } from "../consts";
|
|
import { UserModel, UserType } from "../db/User";
|
|
import { getAge } from "../pubUtils/timeUtil";
|
|
import { resResult } from "../pubUtils/util";
|
|
import { incOnlineTime, setOnlineTime } from "./redisService";
|
|
import { checkTeeanAgerTime } from '../pubUtils/authenticateUtil';
|
|
|
|
export async function reportOneOnline(roleId: string, userCode: string, sid: string, isLogin: boolean = false, user?: UserType) {
|
|
if (!user) user = await UserModel.findUserByUserCode(userCode);
|
|
if (!user) return false;
|
|
|
|
let sumTime = await incOnlineTime(userCode, false, 5 * 60); // 返回单位为分
|
|
let todaySumTime = await incOnlineTime(userCode, true, 5 * 60);
|
|
|
|
let { isGuest, hasAuthenticated, birthday } = user;
|
|
let age = getAge(birthday);
|
|
let isAdult = age >= ADULT_AGE;
|
|
|
|
if (isGuest || !hasAuthenticated) {
|
|
if (sumTime > GUEST_MAX_TIME) {
|
|
pinus.app.channelService.pushMessageByUids('onPlayTime', resResult(STATUS.SUCCESS, {
|
|
isGuest,
|
|
guestTime: sumTime, // 游客已体验时间
|
|
hasAuthenticated, // 是否进行过实名认证
|
|
isAdult, // 是否已成年
|
|
todayPlayTime: todaySumTime, // 今天已游戏时长
|
|
type: ADDICTION_PREVENTION_CODE.GUEST,
|
|
}), [{ uid: roleId, sid: sid }]);
|
|
}
|
|
} else {
|
|
let code = checkTeeanAgerTime(isAdult, todaySumTime);
|
|
if(code != ADDICTION_PREVENTION_CODE.SUCCESS) {
|
|
pinus.app.channelService.pushMessageByUids('onPlayTime', resResult(STATUS.SUCCESS, {
|
|
isGuest,
|
|
guestTime: 0, // 游客已体验时间
|
|
hasAuthenticated, // 是否进行过实名认证
|
|
isAdult, // 是否已成年
|
|
todayPlayTime: todaySumTime, // 今天已游戏时长
|
|
type: code
|
|
}), [{ uid: roleId, sid: sid }]);
|
|
}
|
|
}
|
|
}
|
|
|
|
export async function savePlayTime(userCode: string, user?: UserType) {
|
|
if (!user) user = await UserModel.findUserByUserCode(userCode);
|
|
if (!user) return false;
|
|
|
|
let time = Date.now() - user.lastLoginTime.getTime();
|
|
let setsumTime = (user.playTime||0) + Math.floor(time/1000);
|
|
let settodaySumTime = (user.todayPlayTime||0) + Math.floor(time/1000);
|
|
|
|
let sumTime = await setOnlineTime(userCode, false, setsumTime); // 返回单位为分
|
|
let todaySumTime = await setOnlineTime(userCode, true, settodaySumTime);
|
|
|
|
let { isGuest, hasAuthenticated } = user;
|
|
await UserModel.updatePlayTime(userCode, isGuest || !hasAuthenticated, settodaySumTime, setsumTime);
|
|
} |