diff --git a/shared/domain/activityField/popUpShopField.ts b/shared/domain/activityField/popUpShopField.ts index d0a864d07..ba93efb69 100644 --- a/shared/domain/activityField/popUpShopField.ts +++ b/shared/domain/activityField/popUpShopField.ts @@ -1,5 +1,5 @@ import moment = require("moment"); -import { POP_UP_SHOP_CONDITION_TYPE, POP_UP_SHOP_REFRESH_TIME_TYPE, REFRESH_TIME } from "../../consts"; +import { POP_UP_SHOP_CONDITION_TYPE, POP_UP_SHOP_REFRESH_TIME_TYPE, REFRESH_TIME, SHOP_REFRESH_TYPE } from "../../consts"; import { ActivityModelType } from "../../db/Activity"; import { ActivityPopUpShopModelType, PopUpShopItem as ActivityPopUpShopItem } from "../../db/ActivityPopUpShop"; import { RewardInter } from "../../pubUtils/interface"; @@ -7,7 +7,7 @@ import { parseNumberList } from "../../pubUtils/util"; import { stringWithTypeToRewardInter } from "../../pubUtils/roleUtil"; import { ActivityBase } from './activityField'; import { PVPConfigModel } from "../../db/SystemConfig"; -import { nowSeconds } from "../../pubUtils/timeUtil"; +import { getZeroPointOfTimeD, nowSeconds } from "../../pubUtils/timeUtil"; // 数据库格式 interface PopUpShopDataInDb { @@ -302,22 +302,23 @@ export class PopUpShopPackage { effectEndTime = new Date(this.parent.endTime); break; case POP_UP_SHOP_REFRESH_TIME_TYPE.NATURAL_DAY: - effectBeginTime = moment(now).startOf('d').add(REFRESH_TIME, 'h').toDate(); - effectEndTime = moment(now).endOf('d').add(REFRESH_TIME, 'h').toDate(); + effectBeginTime = getZeroPointOfTimeD(now, SHOP_REFRESH_TYPE.DAILY); + effectEndTime = moment(effectBeginTime).add(1, 'd').toDate(); break; case POP_UP_SHOP_REFRESH_TIME_TYPE.NATURAL_WEEK: - effectBeginTime = moment(now).startOf('w').add(REFRESH_TIME, 'h').toDate(); - effectEndTime = moment(now).endOf('w').add(REFRESH_TIME, 'h').toDate(); + effectBeginTime = getZeroPointOfTimeD(now, SHOP_REFRESH_TYPE.WEEKLY); + effectEndTime = moment(effectBeginTime).add(1, 'w').toDate(); break; case POP_UP_SHOP_REFRESH_TIME_TYPE.NATURAL_MONTH: - effectBeginTime = moment(now).startOf('month').add(REFRESH_TIME, 'h').toDate(); - effectEndTime = moment(now).endOf('month').add(REFRESH_TIME, 'h').toDate(); + effectBeginTime = getZeroPointOfTimeD(now, SHOP_REFRESH_TYPE.MONTHLY); + effectEndTime = moment(effectBeginTime).add(1, 'month').toDate(); break; case POP_UP_SHOP_REFRESH_TIME_TYPE.DAYS: let gap = moment(now).diff(this.parent.beginTime, 'd'); let n = Math.floor(gap / this.refreshDay); - effectBeginTime = moment(this.parent.beginTime).startOf('d').add(n * this.refreshDay, 'd').add(REFRESH_TIME, 'h').toDate(); - effectEndTime = moment(this.parent.beginTime).startOf('d').add((n + 1) * this.refreshDay, 'd').add(REFRESH_TIME, 'h').toDate(); + let zeroPoint = getZeroPointOfTimeD(this.parent.beginTime, SHOP_REFRESH_TYPE.DAILY); + effectBeginTime = moment(zeroPoint).add(n * this.refreshDay, 'd').toDate(); + effectEndTime = moment(zeroPoint).add(n * this.refreshDay, 'd').toDate(); break; case POP_UP_SHOP_REFRESH_TIME_TYPE.PVP: let pvpConfig = await PVPConfigModel.findCurPVPConfig(); diff --git a/shared/pubUtils/timeUtil.ts b/shared/pubUtils/timeUtil.ts index 6b1809a50..0ee658429 100644 --- a/shared/pubUtils/timeUtil.ts +++ b/shared/pubUtils/timeUtil.ts @@ -268,7 +268,7 @@ class Time { * @param seconds 几秒 */ public getMonthZeroPoint(day: number = 1, hour = REFRESH_TIME, minute = 0, seconds = 0) { - let t = this._getTimeWithWeek(this.time, day, hour, minute, seconds); + let t = this._getTimeWithMonth(this.time, day, hour, minute, seconds); if(this.now > t) { return this._returnResult(t); } else { @@ -505,14 +505,14 @@ export function getZeroPointOfTime(refTime: Date|number, refreshType: SHOP_REFRE } } -export function getZeroPointOfTimeD(refTime: Date, refreshType: SHOP_REFRESH_TYPE = SHOP_REFRESH_TYPE.DAILY) { +export function getZeroPointOfTimeD(refTime: Date|number, refreshType: SHOP_REFRESH_TYPE = SHOP_REFRESH_TYPE.DAILY, hour = REFRESH_TIME) { let t = new Time(TIME_OUTPUT_TYPE.DATE, refTime); if(refreshType == SHOP_REFRESH_TYPE.DAILY) { - return t.getDayZeroPoint(); + return t.getDayZeroPoint(hour); } else if (refreshType == SHOP_REFRESH_TYPE.WEEKLY) { - return t.getWeekZeroPoint(); + return t.getWeekZeroPoint(1, hour); } else if (refreshType == SHOP_REFRESH_TYPE.MONTHLY) { - return t.getMonthZeroPoint(); + return t.getMonthZeroPoint(1, hour); } }