防沉迷:不使用厚土sdk
This commit is contained in:
@@ -16,6 +16,8 @@ export const AUTH_SMS_CNT_PER_DAY = 8;
|
||||
|
||||
export const ADULT_AGE = 18;
|
||||
export const GUEST_MAX_TIME = 60 * 60; // 游客体验时间
|
||||
export const TEEN_HOLIDAY_MAX_TIME = 3 * 60 * 60; // 未成年人节假日每天3小时
|
||||
export const TEEN_DAILY_MAX_TIME = 1.5 * 60 * 60; // 未成年人工作日每天1.5小时
|
||||
export const GUEST_DAY = 15; // 同一设备15天内不得重复体验游客模式
|
||||
|
||||
export const REFRESH_TIME = 5; // 统一一天刷新时间
|
||||
@@ -206,6 +208,7 @@ export const REDIS_KEY = {
|
||||
GUILD_ACTIVE_RANK: "guildActiveRank", // 公会周活跃排行榜
|
||||
DB_GAME: 'dbGame', // 服务器列表
|
||||
ONLINE_USERS: 'onlineUsers', // 在线用户情况
|
||||
ONLINE_TIME: 'onlineTime', // 玩家在线时间
|
||||
CHANNEL_SERVERS: 'chat:channelServers', // 渠道对应的 chat 服务器 Id,
|
||||
USER_GATE_ACTIVITY: 'usrGateAct', // 蛮夷入侵玩家排行
|
||||
GATE_ACTIVITY: 'gateAct', // 蛮夷入侵军团排行
|
||||
@@ -461,6 +464,7 @@ export const FILENAME = {
|
||||
DIC_GK_PROBATION: 'dic_zyz_gk_probation',
|
||||
DIC_QUENCH_QUALITY: 'dic_zyz_quench_quality',
|
||||
DIC_QUENCH_CONSUME: 'dic_zyz_quench_consume',
|
||||
DIC_HOLIDAY: 'dic_holiday',
|
||||
}
|
||||
|
||||
export const WAR_RELATE_TABLES = [
|
||||
@@ -513,10 +517,6 @@ export enum BLOCK_OPEATE {
|
||||
REMOVE_FRIEND = 4
|
||||
}
|
||||
|
||||
export enum TIME_FORMAT {
|
||||
TYPE_SLASH = 1
|
||||
}
|
||||
|
||||
export enum ADDICTION_PREVENTION_CODE {
|
||||
FAIL = -1,
|
||||
SUCCESS = 1, // 接口的返回
|
||||
|
||||
+4
-4
@@ -1,8 +1,8 @@
|
||||
import BaseModel from './BaseModel';
|
||||
import { index, getModelForClass, prop, DocumentType, modelOptions } from '@typegoose/typegoose';
|
||||
import { formatTime } from '../pubUtils/timeUtil';
|
||||
import { TIME_FORMAT, COUNTER } from '../consts'
|
||||
import { COUNTER } from '../consts'
|
||||
import { CounterModel } from './Counter';
|
||||
import moment = require('moment');
|
||||
|
||||
/**
|
||||
* 游戏字段接口
|
||||
@@ -29,8 +29,8 @@ export default class Notice extends BaseModel {
|
||||
@prop({ required: true })
|
||||
endTime: Date; // 活动结束时间
|
||||
public get time() {
|
||||
let startTime = formatTime(this.startTime, TIME_FORMAT.TYPE_SLASH);
|
||||
let endTime = formatTime(this.endTime, TIME_FORMAT.TYPE_SLASH);
|
||||
let startTime = moment(this.startTime).format('YYYY/MM/DD');
|
||||
let endTime = moment(this.endTime).format('YYYY/MM/DD');
|
||||
|
||||
return this.timeStr.replace(/%startTime/g, startTime).replace(/%endTime/g, endTime);
|
||||
}
|
||||
|
||||
+3
-7
@@ -64,10 +64,8 @@ export default class User extends BaseModel {
|
||||
pi: string; // 已通过实名认证用户唯一标识
|
||||
@prop({ required: false, default: 0 })
|
||||
todayPlayTime: number; // 今日游戏时间
|
||||
@prop({ required: false, default: 0 })
|
||||
todayPlayType: number; // 未成年防沉迷类型
|
||||
@prop({ required: false })
|
||||
reportTime: Date; // 汇报时间
|
||||
playTime: number; // 总游戏时间
|
||||
|
||||
@prop({ required: false, default: false })
|
||||
hasSetPw: boolean; // 是否设置过密码
|
||||
@@ -242,10 +240,8 @@ export default class User extends BaseModel {
|
||||
}
|
||||
|
||||
|
||||
public static async updatePlayTime(userCode: string, guestTimeInc: number, todayPlayTime: number, todayPlayType?: number) {
|
||||
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({ getters: true });
|
||||
public static async updatePlayTime(userCode: string, isGuest: boolean, todayPlayTime: number, playTime: number) {
|
||||
const user: UserType = await UserModel.findOneAndUpdate({ userCode }, { $set: { guestTime: isGuest?playTime: 0, todayPlayTime: todayPlayTime, playTime } }, { new: true }).lean({ getters: true });
|
||||
return user;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,27 @@
|
||||
|
||||
import * as moment from "moment";
|
||||
import { ADDICTION_PREVENTION_CODE, TEEN_DAILY_MAX_TIME, TEEN_HOLIDAY_MAX_TIME } from "../consts";
|
||||
import { gameData } from './data';
|
||||
|
||||
export function checkTeeanAgerTime(isAdult: boolean, todaySumTime: number) {
|
||||
if(isAdult) return ADDICTION_PREVENTION_CODE.SUCCESS;
|
||||
|
||||
let now = new Date();
|
||||
let hour = now.getHours();
|
||||
if(hour < 8 || hour > 22) return ADDICTION_PREVENTION_CODE.CURFEW;
|
||||
|
||||
let isHoliday = checkIsHoliday();
|
||||
if(isHoliday && todaySumTime > TEEN_HOLIDAY_MAX_TIME) {
|
||||
return ADDICTION_PREVENTION_CODE.HOLIDAY;
|
||||
} else if (!isHoliday && todaySumTime > TEEN_DAILY_MAX_TIME) {
|
||||
return ADDICTION_PREVENTION_CODE.WORKDAY;
|
||||
}
|
||||
return ADDICTION_PREVENTION_CODE.SUCCESS;
|
||||
}
|
||||
|
||||
export function checkIsHoliday() {
|
||||
let now = new Date();
|
||||
let day = now.getDay();
|
||||
let str = moment().format('YYYY-MM-DD');
|
||||
return day == 0 || day == 6 || gameData.holiday.indexOf(str) != -1;
|
||||
}
|
||||
@@ -90,6 +90,7 @@ import { dicApBuy, dicApMaxBuyTimes, loadApBuy } from "./dictionary/DicApBuy";
|
||||
import { dicTaskExp, loadTskExp} from './dictionary/DicTaskExp';
|
||||
import { dicQuenchByQuality, dicQuenchRangeByQuality, dicQuenchRangeByQualityAndGrade, loadQuenchQuality } from './dictionary/DicQuenchQuality';
|
||||
import { dicQuenchConsume, loadQuenchConsume } from './dictionary/DicQuenchConsume';
|
||||
import { dicHoliday, loadHoliday } from './dictionary/DicHoliday';
|
||||
|
||||
export const gameData = {
|
||||
blurprtCompose: dicBlueprtCompose,
|
||||
@@ -224,7 +225,8 @@ export const gameData = {
|
||||
quenchConsume: dicQuenchConsume,
|
||||
quenchByQuality: dicQuenchByQuality,
|
||||
equipAttributeRatio: new Map<number, number>(),
|
||||
ceRatio: new Array<{type: number, val: number}>()
|
||||
ceRatio: new Array<{type: number, val: number}>(),
|
||||
holiday: dicHoliday
|
||||
};
|
||||
|
||||
// 在此提供一些原先在gamedata中提供的方法,以便更方便获取gameData数据
|
||||
@@ -866,6 +868,7 @@ function loadDatas() {
|
||||
loadQuenchQuality();
|
||||
loadQuenchConsume();
|
||||
loadEquipAttributeRatio();
|
||||
loadHoliday();
|
||||
}
|
||||
|
||||
// 重载dicParam
|
||||
|
||||
@@ -0,0 +1,23 @@
|
||||
// 武将觉醒表
|
||||
import { readFileAndParse } from '../util'
|
||||
import { FILENAME } from '../../consts';
|
||||
|
||||
export interface DicHoliday {
|
||||
|
||||
// 唯一id
|
||||
readonly id: number;
|
||||
// 节假日
|
||||
readonly holiday: string;
|
||||
|
||||
}
|
||||
|
||||
export const dicHoliday = new Array<string>();
|
||||
export function loadHoliday() {
|
||||
dicHoliday.splice(0, dicHoliday.length);
|
||||
let arr = readFileAndParse(FILENAME.DIC_HOLIDAY);
|
||||
|
||||
arr.forEach(o => {
|
||||
dicHoliday.push(o.holiday)
|
||||
});
|
||||
arr = undefined;
|
||||
}
|
||||
@@ -1,4 +1,4 @@
|
||||
import { TIME_FORMAT, REFRESH_TIME, TIME_OUTPUT_TYPE, SHOP_REFRESH_TYPE } from '../consts';
|
||||
import { REFRESH_TIME, TIME_OUTPUT_TYPE, SHOP_REFRESH_TYPE } from '../consts';
|
||||
|
||||
/**
|
||||
* 时间
|
||||
@@ -488,26 +488,6 @@ export function getAge(birthday: string) {
|
||||
return age
|
||||
}
|
||||
|
||||
/**
|
||||
* 将Date格式的数据转为string格式
|
||||
* @param {Date} d 时间
|
||||
* @param {TIME_FORMAT} type 类型
|
||||
*/
|
||||
export function formatTime(d: Date, type: TIME_FORMAT) {
|
||||
let year = d.getFullYear();
|
||||
let month = d.getMonth() + 1;
|
||||
let day = d.getDate();
|
||||
let yearStr = year.toString();
|
||||
let monthStr = month.toString();
|
||||
let dayStr = day.toString();
|
||||
|
||||
if(type == TIME_FORMAT.TYPE_SLASH) {
|
||||
if(day < 10) dayStr = '0' + dayStr;
|
||||
if(month < 10) monthStr = '0' + monthStr;
|
||||
return `${yearStr}/${monthStr}/${dayStr}`;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 获得某个时间是星期几
|
||||
* @param needHandle 是否处理周日
|
||||
|
||||
@@ -4,7 +4,7 @@ import { HeroModel, HeroType } from '../db/Hero';
|
||||
|
||||
import fs = require('fs');
|
||||
import path = require('path');
|
||||
import { HERO_CE_RATIO, ABI_STAGE, GACHA_TO_FLOOR, REFRESH_TIME } from '../consts';
|
||||
import { HERO_CE_RATIO, ABI_STAGE, GACHA_TO_FLOOR, REFRESH_TIME, } from '../consts';
|
||||
|
||||
import { findIndex } from 'underscore';
|
||||
import { getTimeFunM } from './timeUtil';
|
||||
|
||||
Reference in New Issue
Block a user