diff --git a/game-server/app/services/auctionService.ts b/game-server/app/services/auctionService.ts index bfd307464..746fd0e29 100644 --- a/game-server/app/services/auctionService.ts +++ b/game-server/app/services/auctionService.ts @@ -1,6 +1,6 @@ import { MailModel, MailType } from './../db/Mail'; import { DividendModel } from './../db/Dividend'; -import { LOT_CODE_LEN, AUCTION_STAGE, AUCTION_TIME, DIVIDEND_CODE_LEN, DIVIDEND_STATUS, LOT_STATUS, MAIL_TYPE, CURRENCY_BY_TYPE, CURRENCY_TYPE, STATUS, DIVIDENDWEEKENDRATE, DIVIDENDMAXRATIO, DIVIDENDPOSITIONMAXRATIO, ROLE_RECEIVE_STATUS, AUCTION_BID_STATUS, DEBUG_MAGIC_WORD } from './../consts'; +import { LOT_CODE_LEN, AUCTION_STAGE, AUCTION_TIME, DIVIDEND_CODE_LEN, DIVIDEND_STATUS, LOT_STATUS, MAIL_TYPE, CURRENCY_BY_TYPE, CURRENCY_TYPE, STATUS, DIVIDENDWEEKENDRATE, DIVIDENDMAXRATIO, DIVIDENDPOSITIONMAXRATIO, ROLE_RECEIVE_STATUS, AUCTION_BID_STATUS, DEBUG_MAGIC_WORD, AUCTION_SOURCE } from './../consts'; import { DividendRec, ItemReward } from "../domain/dbGeneral"; import { genCode, resResult } from '../pubUtils/util'; import { LotModel, LotParam } from '../db/Lot'; @@ -52,39 +52,85 @@ export async function officialAuctionLots(session: FrontendOrBackendSession, beg return lots; } +// 拍卖行开始时间 今天20:20 export function auctionBegin() { let { hour, minute } = gameData.auctionTime.get(AUCTION_TIME.GUILD_OPEN); - return getTimeFunD().getAfterDayWithHour(0, hour, minute); + return getTimeFunD().getAfterDayAndSetHour(0, hour, minute); } +// 军团拍卖行结束时间 20:30 export function guildAuctionEnd() { let { hour, minute } = gameData.auctionTime.get(AUCTION_TIME.GUILD_CLOSE); - return getTimeFunD().getAfterDayWithHour(0, hour, minute); + return getTimeFunD().getAfterDayAndSetHour(0, hour, minute); } +// 拍卖行结束时间 22:00 export function auctionEnd() { let { hour, minute } = gameData.auctionTime.get(AUCTION_TIME.WORLD_CLOSE); - return getTimeFunD().getAfterDayWithHour(0, hour, minute); + return getTimeFunD().getAfterDayAndSetHour(0, hour, minute); } +// 今天军团拍卖行开始时间 20:20 export function todayGuildBegin() { let { hour, minute } = gameData.auctionTime.get(AUCTION_TIME.GUILD_OPEN); - return getTimeFunD(getZeroPointD()).getAfterDayWithHour(0, hour, minute); + return getTimeFunD().getAfterDayAndSetHour(0, hour, minute); } + +// 明天军团拍卖行开始时间 20:20 +export function tomorrowGuildBegin() { + let { hour, minute } = gameData.auctionTime.get(AUCTION_TIME.GUILD_OPEN); + console.log(hour, minute) + return getTimeFunD().getAfterDayAndSetHour(1, hour, minute); +} + +// 明天军团拍卖行开始时间 20:20 +export function tomorrowGuildEnd() { + let { hour, minute } = gameData.auctionTime.get(AUCTION_TIME.GUILD_CLOSE); + console.log(hour, minute) + return getTimeFunD().getAfterDayAndSetHour(1, hour, minute); +} + +// 昨天军团拍卖行开始时间 20:20 export function yestodayGuildBegin() { let { hour, minute } = gameData.auctionTime.get(AUCTION_TIME.GUILD_OPEN); - return getTimeFunD(getZeroPointD()).getAfterDayWithHour(-1, hour, minute); + return getTimeFunD().getAfterDayAndSetHour(-1, hour, minute); } +// 今天世界拍卖行开始时间 20:40 export function todayWorldBegin() { let { hour, minute } = gameData.auctionTime.get(AUCTION_TIME.WORLD_OPEN); - return getTimeFunD(getZeroPointD()).getAfterDayWithHour(0, hour, minute); + return getTimeFunD().getAfterDayAndSetHour(0, hour, minute); } +// 今天世界拍卖行结束时间 22:00 export function todayWorldEnd() { let { hour, minute } = gameData.auctionTime.get(AUCTION_TIME.WORLD_CLOSE); - return getTimeFunD(getZeroPointD()).getAfterDayWithHour(0, hour, minute); + return getTimeFunD().getAfterDayAndSetHour(0, hour, minute); +} + +// 拍卖行预览时间 20:00 +export function guildAuctionPreview() { + let { hour, minute } = gameData.auctionTime.get(AUCTION_TIME.GUILD_PREVIEW); + return getTimeFunD().getAfterDayAndSetHour(0, hour, minute); +} + +// 演武台。8点以前是今天的,8点以后是明天的 +export function getBossAuctionBegin() { + if(Date.now() < guildAuctionPreview().getTime()) { + return todayGuildBegin(); + } else { + return tomorrowGuildBegin(); + } +} + +// 演武台。8点以前是今天的,8点以后是明天的 +export function getBossAuctionEnd() { + if(Date.now() < guildAuctionPreview().getTime()) { + return guildAuctionEnd(); + } else { + return tomorrowGuildEnd(); + } } /** @@ -97,9 +143,13 @@ export function todayWorldEnd() { * @param {ItemReward[]} rewards */ export async function genAuction(guildCode: string, sourceType: number, sourceCode: string, serverId: number, rewards: ItemReward[]) { - const begin = auctionBegin(); + let begin = auctionBegin(); + let end = auctionEnd(); + if(sourceType == AUCTION_SOURCE.BOSS) { // 军团boss本 + begin = getBossAuctionBegin(); + end = getBossAuctionEnd(); + } const guildEnd = guildAuctionEnd(); - const end = auctionEnd(); const lotsData: LotParam[] = rewards.map(reward => { const { id, count } = reward; const code = genCode(LOT_CODE_LEN); diff --git a/shared/pubUtils/timeUtil.ts b/shared/pubUtils/timeUtil.ts index 460c2874c..842ef6a79 100644 --- a/shared/pubUtils/timeUtil.ts +++ b/shared/pubUtils/timeUtil.ts @@ -312,6 +312,32 @@ class Time { } } + /** + * @description 获取几天前的指定时分秒,但是不做前后的计算 + * @param day 几天前 + * @param hour 几点,默认为刷新时间 + * @param minute 几分 + * @param seconds 几秒 + */ + public getBeforeDayAndSetHour(day: number = 0, hour = REFRESH_TIME, minute = 0, seconds = 0) { + let t = this._setHour(this.time, hour, minute, seconds); + let timestamp = t.getTime() - day * this.DAY_TO_MS; + return this._returnResult(timestamp); + } + + /** + * @description 获取几天后的指定时分秒,但是不做前后的计算 + * @param day 几天前 + * @param hour 几点,默认为刷新时间 + * @param minute 几分 + * @param seconds 几秒 + */ + public getAfterDayAndSetHour(day: number = 0, hour = REFRESH_TIME, minute = 0, seconds = 0) { + let t = this._setHour(this.time, hour, minute, seconds); + let timestamp = t.getTime() + day * this.DAY_TO_MS; + return this._returnResult(timestamp); + } + /** * @description 获取某个时间的纯粹的几天前 * @param day 几天前