时间:整理时间方法

This commit is contained in:
luying
2021-05-08 19:09:51 +08:00
parent 6f03a96c51
commit 78e3c26a7a
51 changed files with 662 additions and 411 deletions

View File

@@ -1,6 +1,7 @@
import BaseModel from './BaseModel';
import { index, getModelForClass, prop, DocumentType } from '@typegoose/typegoose';
import { DAILY_CONST } from './../consts';
import { getZeroPoint } from '../pubUtils/timeUtil';
/**
@@ -28,8 +29,7 @@ export default class DailyRecord extends BaseModel {
public static async refreshRecord(roleId: string, type: number, lean = true) {
const dailyRecord: DailyRecordType = await DailyRecordModel.findOne({ roleId, type }).lean(lean);
let {count = 0, refTime = 0, buyCount = 0} = dailyRecord||{};
let now = new Date();
let today = now.setHours(DAILY_CONST.REFRESH_TIME, 0, 0, 0);
let today = getZeroPoint();
if(today > refTime) {
refTime = today; count = 0; buyCount = 0;

View File

@@ -1,5 +1,6 @@
import BaseModel from './BaseModel';
import { index, getModelForClass, prop, DocumentType } from '@typegoose/typegoose';
import { getZeroPointD } from '../pubUtils/timeUtil';
/**
* 情谊点记录
@@ -29,14 +30,14 @@ export default class FriendPoint extends BaseModel {
* @memberof FriendPoint
*/
public static async updatePointToday(roleId: string, roleName: string, cntInc: number, maxPerDay: number, type: number, lean = true) {
const curTime = new Date((new Date()).setHours(0, 0, 0, 0));
const curTime = getZeroPointD();
// 当 oldCnt + cntInc > maxPerDay 时需计算实际可以获得的点数cntInc - (newCnt - maxPerDay)
const rec: FriendPointType = await FriendPointModel.findOneAndUpdate({roleId, roleName, createdAt: {$gte: curTime}, cnt: {$lt: maxPerDay}, type}, {$inc: {cnt: cntInc, sendCnt: 0}}, {upsert: true, new: true}).lean(lean);
return rec;
}
public static async updateSendCntToday(roleId: string, roleName: string, cntInc: number, maxPerDay: number, type: number, lean = true) {
const curTime = new Date((new Date()).setHours(0, 0, 0, 0));
const curTime = getZeroPointD();
// 当 oldCnt + cntInc > maxPerDay 时需计算实际可以获得的点数cntInc - (newCnt - maxPerDay)
const rec: FriendPointType = await FriendPointModel.findOneAndUpdate({roleId, roleName, createdAt: {$gte: curTime}, sendCnt: {$lt: maxPerDay}, type}, {$inc: {sendCnt: cntInc, cnt: 0}}, {upsert: true, new: true}).lean(lean);
return rec;
@@ -52,7 +53,7 @@ export default class FriendPoint extends BaseModel {
* @memberof FriendPoint
*/
public static async getFrdPointRecToday(roleId: string, type: number, lean = true) {
const curTime = new Date((new Date()).setHours(0, 0, 0, 0));
const curTime = getZeroPointD();
const rec: FriendPointType = await FriendPointModel.findOne({roleId, createdAt: {$gte: curTime}, type}).lean(lean);
return rec;
}

View File

@@ -2,8 +2,8 @@ import BaseModel from './BaseModel';
import { index, getModelForClass, prop, DocumentType, Ref } from '@typegoose/typegoose';
import Role, { RoleType } from './Role';
import { genCode } from '../pubUtils/util';
import { GUILD_STRUCTURE, GUILD_STATUS, GUILD_PER_PAGE, GUILD_SELECT, REDIS_KEY } from '../consts';
import { getCurWeekTime, nowSeconds } from '../pubUtils/timeUtil';
import { GUILD_STRUCTURE, GUILD_STATUS, GUILD_PER_PAGE, GUILD_SELECT, REDIS_KEY, SHOP_REFRESH_TYPE } from '../consts';
import { getZeroPoint, nowSeconds } from '../pubUtils/timeUtil';
import { reduceCe } from '../pubUtils/util';
class Structure {
@@ -229,7 +229,7 @@ export default class Guild extends BaseModel {
* @param lean
*/
public static async resetGuildTrain(code: string, serverId: number, trainLv: number, lean = true) {
const time = getCurWeekTime(1, 5);//每周一5点刷新
const time = getZeroPoint(SHOP_REFRESH_TYPE.WEEKLY);//每周一5点刷新
const result = await GuildModel.findOneAndUpdate({ code, status: GUILD_STATUS.RUNNING, serverId, resetTrainTime:{$ne:time}},{$set: {trainId: 1, resetTrainTime: time, trainLv}}, {new: true}).lean(lean);
return result;
}

View File

@@ -1,6 +1,7 @@
import BaseModel from './BaseModel';
import { index, getModelForClass, prop, DocumentType } from '@typegoose/typegoose';
import { getCurWeekDate} from '../pubUtils/timeUtil';
import { getZeroPointD } from '../pubUtils/timeUtil';
import { SHOP_REFRESH_TYPE } from '../consts';
@index({ serverId: 1, cityId: 1, createdAt: 1 })
export default class GuildActivityCity extends BaseModel {
@@ -28,14 +29,14 @@ export default class GuildActivityCity extends BaseModel {
// 每天宣战一次
public static async getAllCities(serverId: number) {
let curWeek = getCurWeekDate(1, 0);
let curWeek = getZeroPointD(SHOP_REFRESH_TYPE.WEEKLY);
let rec: GuildActivityCityType[] = await GuildActivityCityModel.find({ serverId, createdAt: { $gte: curWeek }}).lean();
return rec;
}
public static async getCity(serverId: number, cityId: number) {
let curWeek = getCurWeekDate(1, 0);
let curWeek = getZeroPointD(SHOP_REFRESH_TYPE.WEEKLY);
let rec: GuildActivityCityType = await GuildActivityCityModel.findOne({ serverId, cityId, createdAt: { $gte: curWeek }}).lean();
return rec;
@@ -43,7 +44,7 @@ export default class GuildActivityCity extends BaseModel {
// 检查是否宣战过
public static async checkDeclartion(serverId: number, guildCode: string) {
let curWeek = getCurWeekDate(1, 0);
let curWeek = getZeroPointD(SHOP_REFRESH_TYPE.WEEKLY);
let rec: GuildActivityCityType = await GuildActivityCityModel.findOne(
{ serverId, createdAt: { $gte: curWeek }, declareGuilds: { $in: [guildCode]}}).lean();
@@ -52,7 +53,7 @@ export default class GuildActivityCity extends BaseModel {
// 宣言
public static async declare(serverId: number, cityId: number, guildCode: string) {
let curWeek = getCurWeekDate(1, 0);
let curWeek = getZeroPointD(SHOP_REFRESH_TYPE.WEEKLY);
let rec: GuildActivityCityType = await GuildActivityCityModel.findOneAndUpdate(
{ serverId, cityId, createdAt: { $gte: curWeek } },
{ $setOnInsert: { serverId, cityId }, $push: { declareGuilds: guildCode }, $inc: {declareCount: 1 } },
@@ -63,7 +64,7 @@ export default class GuildActivityCity extends BaseModel {
// 占领
public static async guard(serverId: number, cityId: number, guildCode: string, guildName: string) {
let curWeek = getCurWeekDate(1, 0);
let curWeek = getZeroPointD(SHOP_REFRESH_TYPE.WEEKLY);
let rec: GuildActivityCityType = await GuildActivityCityModel.findOneAndUpdate(
{ serverId, cityId, createdAt: { $gte: curWeek } },
{ $set: { guardGuildCode: guildCode, guardGuildName: guildName, guardTime: new Date()} },
@@ -74,7 +75,7 @@ export default class GuildActivityCity extends BaseModel {
// 活动结束后需要清空占领情况
public static async clearGuard(serverId: number, cityId: number) {
let curWeek = getCurWeekDate(1, 0);
let curWeek = getZeroPointD(SHOP_REFRESH_TYPE.WEEKLY);
let rec: GuildActivityCityType = await GuildActivityCityModel.findOneAndUpdate(
{ serverId, cityId, createdAt: { $gte: curWeek } },
{ $set: { guardGuildCode: "", guardGuildName: "", declareCount: 0, declareGuilds: [] } },

View File

@@ -1,7 +1,7 @@
import BaseModel from './BaseModel';
import { index, getModelForClass, prop, DocumentType } from '@typegoose/typegoose';
import { ItemReward } from '../domain/dbGeneral';
import { getTodayZeroDate } from '../pubUtils/timeUtil';
import { getZeroPointD } from '../pubUtils/timeUtil';
import { genCode } from '../pubUtils/util';
import { Member, WoodenHorse, Event } from '../domain/battleField/guildActivity'
@@ -63,7 +63,7 @@ export default class GuildActivityRecord extends BaseModel {
// 每天一条记录
public static async getRecord(guildCode: string, serverId: number, aid: number, events?: Event[]) {
let today = getTodayZeroDate();
let today = getZeroPointD();
let docs = new GuildActivityRecordModel();
let code = genCode(10);
let update = Object.assign(docs, { code, guildCode, serverId, aid, createdAt: new Date() });
@@ -76,7 +76,7 @@ export default class GuildActivityRecord extends BaseModel {
}
public static async updateInfo(guildCode: string, update: GuildActivityRecordUpdateParam) {
let today = getTodayZeroDate();
let today = getZeroPointD();
let rec: GuildActivityRecordType = await GuildActivityRecordModel.findOneAndUpdate(
{ guildCode, createdAt: { $gte: today } },
@@ -86,7 +86,7 @@ export default class GuildActivityRecord extends BaseModel {
public static async pushEvent(guildCode: string, event: Event) {
let today = getTodayZeroDate();
let today = getZeroPointD();
let rec: GuildActivityRecordType = await GuildActivityRecordModel.findOneAndUpdate(
{ guildCode, createdAt: { $gte: today } },

View File

@@ -1,6 +1,6 @@
import BaseModel from './BaseModel';
import { index, getModelForClass, prop, DocumentType } from '@typegoose/typegoose';
import { getBeforeDayDate } from '../pubUtils/timeUtil';
import { getTimeFun } from '../pubUtils/timeUtil';
import { genCode } from '../pubUtils/util';
import { PvpHeroInfo } from '../domain/dbGeneral';
import { EXTERIOR } from '../pubUtils/dicParam';
@@ -96,7 +96,8 @@ export default class PvpRecord extends BaseModel {
}
public static async delPvpRecords() {
let result = await PvpRecordModel.deleteMany({ createTime: {$lt: getBeforeDayDate(3)}});//删除小于三天的战报
let t = <number>getTimeFun().getBeforeDayWithHour(3);
let result = await PvpRecordModel.deleteMany({ createTime: {$lt: t}});//删除小于三天的战报
return result;
}
}

View File

@@ -1,10 +1,10 @@
import { HANG_UP_CONSTS, ROLE_TERAPH, ROLE_SELECT, ABI_TYPE } from './../consts';
import { HANG_UP_CONSTS, ROLE_TERAPH, ROLE_SELECT, ABI_TYPE, TIME_OUTPUT_TYPE } from './../consts';
import BaseModel from './BaseModel';
import { index, getModelForClass, prop, DocumentType, Ref, mongoose } from '@typegoose/typegoose';
import User from './User';
import { shouldRefresh, reduceCe } from '../pubUtils/util';
import { initRoleAtrr } from '../pubUtils/playerCe';
import { nowSeconds, getBeforeDayDate } from '../pubUtils/timeUtil';
import { nowSeconds, getTimeFunD } from '../pubUtils/timeUtil';
import { Figure } from '../domain/dbGeneral';
import { EXTERIOR } from '../pubUtils/dicParam';
import Hero from './Hero';
@@ -360,7 +360,7 @@ export default class Role extends BaseModel {
const result = await RoleModel.findOne({ roleId }).lean(lean);
const lastSpdUpTime = result?.lastSpdUpTime;
let role: RoleType;
if (!lastSpdUpTime || (shouldRefresh(lastSpdUpTime, curTime, HANG_UP_CONSTS.REFRESH_TIME, 1) && cnt <= HANG_UP_CONSTS.MAX_SPD_UP_CNT)) {
if (!lastSpdUpTime || (shouldRefresh(lastSpdUpTime, curTime) && cnt <= HANG_UP_CONSTS.MAX_SPD_UP_CNT)) {
role = await RoleModel.findOneAndUpdate({ roleId }, { hangUpSpdUpCnt: HANG_UP_CONSTS.MAX_SPD_UP_CNT - cnt, lastSpdUpTime: curTime }, { new: true }).lean(lean);
} else {
role = await RoleModel.findOneAndUpdate({ roleId, hangUpSpdUpCnt: { $gte: cnt } }, { $inc: { hangUpSpdUpCnt: -cnt }, lastSpdUpTime: curTime }, { new: true }).lean(lean);
@@ -634,8 +634,8 @@ export default class Role extends BaseModel {
// 获取战力在中位数的玩家
public static async getMedianRole(serverId: number) {
let yesterday = getBeforeDayDate(1);
const roles: RoleType[] = await RoleModel.find({ serverId, updatedAt: { $gte: new Date(yesterday) } })
let yesterday = <Date>getTimeFunD().getBeforeDayWithHour(1);
const roles: RoleType[] = await RoleModel.find({ serverId, updatedAt: { $gte: yesterday } })
.select('topLineup')
.sort({ ce: -1 }).lean();
return roles[Math.floor(roles.length / 2)]

View File

@@ -1,7 +1,6 @@
import BaseModel from './BaseModel';
import { index, getModelForClass, prop, DocumentType, modelOptions } from '@typegoose/typegoose';
import { getTodayZeroDate } from '../pubUtils/timeUtil';
import { REFRESH_HOUR } from '../consts';
import { getZeroPointD } from '../pubUtils/timeUtil';
import { RECRUIT } from '../pubUtils/dicParam';
class Floor {
@@ -61,13 +60,13 @@ export default class UserGacha extends BaseModel {
@prop({ required: true, default: 0 })
freeCount: number; // 免费次数
@prop({ required: true, default: () => { return getTodayZeroDate(REFRESH_HOUR) } })
@prop({ required: true, default: getZeroPointD })
refFreeTime: Date; // 免费次数刷新时间
@prop({ required: true, type: () => Hope, default: [], _id: false })
hope: Hope[]; // 心愿单
@prop({ required: true, default: () => { return getTodayZeroDate(REFRESH_HOUR) } })
@prop({ required: true, default: getZeroPointD })
refHopeTime: Date; // 心愿单刷新时间
@prop({ required: true, default: 0 })
@@ -87,7 +86,7 @@ export default class UserGacha extends BaseModel {
@prop({ required: true, default: [], type: Number })
visitedHero: number[]; // 玩家指定武将
@prop({ required: true, default: () => { return getTodayZeroDate(REFRESH_HOUR) } })
@prop({ required: true, default: getZeroPointD })
refVisitedTime: Date; // 玩家指定武将
public static async findAllByRole(roleId: string) {

View File

@@ -2,7 +2,7 @@ import BaseModel from './BaseModel';
import { index, getModelForClass, prop, DocumentType, Ref } from '@typegoose/typegoose';
import Role, { RoleType } from './Role';
import { GUILD_AUTH, USER_GUILD_STATUS, GUILD_JOB } from '../consts';
import { getTodayZeroDate, nowSeconds } from '../pubUtils/timeUtil';
import { getZeroPointD, nowSeconds } from '../pubUtils/timeUtil';
import { ARMY } from '../pubUtils/dicParam';
class ActiveRecord {
@prop({ required: true })
@@ -187,7 +187,7 @@ export default class UserGuild extends BaseModel {
}
public static async getWishPoolGoods(guildCode: string, select?: string, lean = true) {
const userGuilds: UserGuildType[] = await UserGuildModel.find({ guildCode, status: USER_GUILD_STATUS.ON, refTimeDaily: { $gte: getTodayZeroDate() } })
const userGuilds: UserGuildType[] = await UserGuildModel.find({ guildCode, status: USER_GUILD_STATUS.ON, refTimeDaily: { $gte: getZeroPointD() } })
.select(select).lean(lean);
return userGuilds;
}

View File

@@ -1,6 +1,6 @@
import BaseModel from './BaseModel';
import { index, getModelForClass, prop, DocumentType } from '@typegoose/typegoose';
import { getTodayZeroDate } from '../pubUtils/timeUtil';
import { getZeroPointD } from '../pubUtils/timeUtil';
import { genCode } from '../pubUtils/util';
export class Record {
@@ -89,7 +89,7 @@ export default class UserGuildActivityRec extends BaseModel {
// 每天一条记录
public static async getRecord(roleId: string, roleName: string, guildCode: string, serverId: number, sourceCode: string, aid: number) {
let today = getTodayZeroDate();
let today = getZeroPointD();
let docs = new UserGuildActivityRecModel();
let code = genCode(10);
let update = Object.assign(docs, { code, roleId, roleName, guildCode, serverId, aid });
@@ -104,7 +104,7 @@ export default class UserGuildActivityRec extends BaseModel {
public static async findByRoleId(roleId: string, aid: number) {
let today = getTodayZeroDate();
let today = getZeroPointD();
let rec: UserGuildActivityRecType = await UserGuildActivityRecModel.findOne({ roleId, aid, createdAt: { $gte: today }}).lean();
return rec;
@@ -139,7 +139,7 @@ export default class UserGuildActivityRec extends BaseModel {
}
public static async updateInfoByRoleId(roleId: string, update: UserGuildActivityRecUpdateParam) {
let today = getTodayZeroDate();
let today = getZeroPointD();
let rec: UserGuildActivityRecType = await UserGuildActivityRecModel.findOneAndUpdate(
{ roleId, createdAt: { $gte: today } }, { $set: update }, { new: true }).lean();
return rec;

View File

@@ -1,7 +1,7 @@
import BaseModel from './BaseModel';
import { index, getModelForClass, prop, DocumentType, modelOptions } from '@typegoose/typegoose';
import { genCode } from '../pubUtils/util';
import { getCurWeekDate, getCurMonthDate, getTodayZeroDate } from '../pubUtils/timeUtil';
import { getZeroPointD } from '../pubUtils/timeUtil';
import { SHOP_REFRESH_TYPE } from '../consts';
import { DicShop } from '../pubUtils/dictionary/DicShop';
@@ -37,9 +37,9 @@ export default class UserShop extends BaseModel {
count: number; // 数量
private static getRefreshCondition() {
let today = getTodayZeroDate(5);
let cutWeek = getCurWeekDate(1, 5);
let curMonth = getCurMonthDate(1, 5);
let today = getZeroPointD();
let cutWeek = getZeroPointD(SHOP_REFRESH_TYPE.WEEKLY);
let curMonth = getZeroPointD(SHOP_REFRESH_TYPE.MONTHLY);
return [
{ createdAt: { $gte: today }, refreshType: SHOP_REFRESH_TYPE.DAILY },

View File

@@ -1,6 +1,7 @@
import BaseModel from './BaseModel';
import { index, getModelForClass, prop, DocumentType, modelOptions } from '@typegoose/typegoose';
import { getCurWeekDate } from '../pubUtils/timeUtil';
import { getZeroPointD } from '../pubUtils/timeUtil';
import { SHOP_REFRESH_TYPE } from '../consts';
/**
* 玩家购买商店记录表,每个商品一条,每次刷新新建一条
@@ -39,7 +40,7 @@ export default class UserTask extends BaseModel {
public static async findByRole(roleId: string) {
let curWeek = getCurWeekDate(1, 5);
let curWeek = getZeroPointD(SHOP_REFRESH_TYPE.WEEKLY);
let rec: UserTaskType = await UserTaskModel.findOneAndUpdate({ roleId }, { $setOnInsert: {
mainTaskStage: 1, dailyTaskPoint: 0, dailyTaskRefWeekly: curWeek, dailyTaskPointWeekly: 0, dailyTaskBox: [], achievementPoint: 0, achievementBox: []
} }, { new: true, upsert: true }).lean();
@@ -86,7 +87,7 @@ export default class UserTask extends BaseModel {
}
public static async refreshWeekly(roleId: string, debug = false) {
let curWeek = getCurWeekDate(1, 5);
let curWeek = getZeroPointD(SHOP_REFRESH_TYPE.WEEKLY);
let condition = { roleId };
if(!debug) {
condition['dailyTaskRefWeekly'] = { $lt: curWeek }

View File

@@ -2,7 +2,7 @@ import BaseModel from './BaseModel';
import { index, getModelForClass, prop, DocumentType, modelOptions } from '@typegoose/typegoose';
import { TASK_FUN_TYPE } from '../consts';
import { genCode } from '../pubUtils/util';
import { getTodayZeroDate } from '../pubUtils/timeUtil';
import { getZeroPointD } from '../pubUtils/timeUtil';
/**
* 玩家任务记录表
@@ -34,7 +34,7 @@ export default class UserTaskRec extends BaseModel {
received: number[]; // 是否已领取
private static getRefreshCondition(type: number) {
let today = getTodayZeroDate(5);
let today = getZeroPointD();
if(type == TASK_FUN_TYPE.DAILY) {
return { type, createdAt: { $gte: today } };
@@ -100,7 +100,7 @@ export default class UserTaskRec extends BaseModel {
}
public static async getHistoryRec(roleId: string, type: number, today?: Date) {
if(!today) today = getTodayZeroDate(5);
if(!today) today = getZeroPointD();
let rec: UserTaskRecType[] = await UserTaskRecModel.find({ roleId, type, createdAt: { $lt: today } }).lean();
return rec
}

View File

@@ -1,6 +1,6 @@
import BaseModel from './BaseModel';
import { index, getModelForClass, prop, DocumentType } from '@typegoose/typegoose';
import { nowSeconds, getTodayZeroPoint } from '../pubUtils/timeUtil';
import { nowSeconds, getTimeFun } from '../pubUtils/timeUtil';
@index({ guildCode: 1 })
@@ -37,7 +37,7 @@ export default class WishPoolReport extends BaseModel {
}
//获得day天之前的许愿池战报
public static async getReportsByTime(guildCode: string, day: number) {
let time = getTodayZeroPoint() - day * 24 * 60;
let time = <number>getTimeFun().getBeforeDayWithHour(day);
const reports = await WishPoolReportModel.find({ guildCode, dntTime: {$gte: time}}).sort({ dntTime : -1 });
return reports;
}