抽卡:刷新心愿单错误
This commit is contained in:
@@ -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
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
Reference in New Issue
Block a user