From 100105bf2ea506c116916b36efddc5a3f36a71ff Mon Sep 17 00:00:00 2001 From: luying Date: Tue, 27 Apr 2021 13:59:37 +0800 Subject: [PATCH] =?UTF-8?q?=E6=8A=BD=E5=8D=A1=EF=BC=9A=E5=88=B7=E6=96=B0?= =?UTF-8?q?=E5=BF=83=E6=84=BF=E5=8D=95=E9=94=99=E8=AF=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- game-server/app/services/gachaService.ts | 5 +++-- shared/db/UserGacha.ts | 4 ++-- shared/pubUtils/timeUtil.ts | 8 ++++---- 3 files changed, 9 insertions(+), 8 deletions(-) diff --git a/game-server/app/services/gachaService.ts b/game-server/app/services/gachaService.ts index de8b56dc1..dad14beb1 100644 --- a/game-server/app/services/gachaService.ts +++ b/game-server/app/services/gachaService.ts @@ -37,14 +37,15 @@ export async function refreshGacha(dicGacha: DicGacha, userGacha: UserGachaType) return userGacha; } - let { roleId, gachaId, refFreeTime, refHopeTime } = userGacha; + let { roleId, gachaId, refFreeTime, refHopeTime, hope } = userGacha; if(shouldRefresh(refFreeTime, new Date(), REFRESH_HOUR, day)) { let ref = getNextDayByGap(refFreeTime, new Date(), day); userGacha = await UserGachaModel.refreshFreeCount(roleId, gachaId, 0, ref); } if(shouldRefresh(refHopeTime, new Date(), REFRESH_HOUR)) { + hope = hope.map(cur => { return { ...cur, hasGet: false}}); let ref = getTodayZeroDate(REFRESH_HOUR); - userGacha = await UserGachaModel.refreshHopeCount(roleId, gachaId, 0, ref); + userGacha = await UserGachaModel.refreshHopeCount(roleId, gachaId, 0, hope, ref); } return userGacha } diff --git a/shared/db/UserGacha.ts b/shared/db/UserGacha.ts index e438d7f51..d9ef81359 100644 --- a/shared/db/UserGacha.ts +++ b/shared/db/UserGacha.ts @@ -119,8 +119,8 @@ export default class UserGacha extends BaseModel { return rec; } - public static async refreshHopeCount(roleId: string, gachaId: number, activityId: number, refHopeTime: Date) { - let rec: UserGachaType = await UserGachaModel.findOneAndUpdate({ roleId, gachaId, activityId }, { $set: { 'hope.$.hasGet': false, refHopeTime } }, { new: true }).lean({ virtuals: true }); + public static async refreshHopeCount(roleId: string, gachaId: number, activityId: number, hope: Hope[], refHopeTime: Date) { + let rec: UserGachaType = await UserGachaModel.findOneAndUpdate({ roleId, gachaId, activityId }, { $set: { hope, refHopeTime } }, { new: true }).lean({ virtuals: true }); return rec; } } diff --git a/shared/pubUtils/timeUtil.ts b/shared/pubUtils/timeUtil.ts index fe970afef..826741045 100644 --- a/shared/pubUtils/timeUtil.ts +++ b/shared/pubUtils/timeUtil.ts @@ -251,7 +251,7 @@ export function getDayGap(preDate: Date, curDate: Date) { let cur = getZeroDate(curDate, REFRESH_HOUR); let pre = getZeroDate(preDate, REFRESH_HOUR); - return Math.floor((cur.getTime() - pre.getTime()) / PER_DAY) + return Math.floor((cur.getTime() - pre.getTime()) / PER_DAY / PER_SECOND) } /** @@ -262,8 +262,8 @@ export function getDayGap(preDate: Date, curDate: Date) { */ export function getNextDayByGap(preDate: Date, curDate: Date, day: number) { let gap = getDayGap(preDate, curDate); - let n = Math.ceil(gap / day); - let time = getAfterDateByDay(preDate, n); + let n = Math.floor(gap / day); + let time = getAfterDateByDay(preDate, n * day); return new Date(time * PER_SECOND); } @@ -272,6 +272,6 @@ export function getNextDayByGap(preDate: Date, curDate: Date, day: number) { * @param day */ export function getAfterDateByDay(preDate: Date, day: number) { - let time = getZeroDate(preDate, REFRESH_HOUR).getTime() - day * PER_DAY; + let time = getZeroDate(preDate, REFRESH_HOUR).getTime() + day * PER_DAY * PER_SECOND; return Math.floor(time/PER_SECOND); } \ No newline at end of file