抽卡:刷新心愿单错误

This commit is contained in:
luying
2021-04-27 13:59:37 +08:00
parent 957eda3955
commit 100105bf2e
3 changed files with 9 additions and 8 deletions

View File

@@ -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
}

View File

@@ -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;
}
}

View File

@@ -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);
}