diff --git a/shared/domain/activityField/rechargeMoneyField.ts b/shared/domain/activityField/rechargeMoneyField.ts index 60be28125..1c56ce00f 100644 --- a/shared/domain/activityField/rechargeMoneyField.ts +++ b/shared/domain/activityField/rechargeMoneyField.ts @@ -1,5 +1,6 @@ import { ActivityModelType } from '../../db/Activity'; import { ActivityRechargeMoneyModelType } from '../../db/ActivityRechargeMoney'; +import { getZeroPointD } from '../../pubUtils/timeUtil'; import { getRandEelmWithWeight, getRandSingleEelm } from '../../pubUtils/util'; import { ActivityBase } from './activityField'; @@ -29,6 +30,8 @@ export class RechargeMoneyPool { quality: number; // 物品的品级 hasGet: boolean = false; // 是否已经获取过了 + getNumBeforeToday: number = 0; // 获取次数 + getNumToday: number = 0; constructor(data: RechargeMoneyPoolInDb) { this.id = data.id; @@ -37,8 +40,21 @@ export class RechargeMoneyPool { this.quality = data.quality; } - setHasGet(hasGet: boolean) { - this.hasGet = hasGet; + setRecord(record: ActivityRechargeMoneyModelType) { + this.hasGet = true; + if(record.rewardTime < getZeroPointD()) { + this.getNumBeforeToday ++; + } else { + this.getNumToday ++; + } + } + + unsetHasGet() { + this.hasGet = false; + } + + setHasGet() { + this.hasGet = true; } } @@ -89,7 +105,7 @@ export class RechargeMoneyData extends ActivityBase { } } let result = getRandSingleEelm(elems); - result.setHasGet(true); + result.setHasGet(); return result; } @@ -106,7 +122,21 @@ export class RechargeMoneyData extends ActivityBase { } if(record.poolId) { let pool = this.findItemFromPool(record.poolId); - if(pool) pool.setHasGet(true); + if(pool) { + pool.setRecord(record); + } + } + } + this.resetPool(); + } + + private resetPool() { + let beforeNums = this.pool.map(cur => cur.getNumBeforeToday); + let min = Math.min(...beforeNums); + let max = Math.max(...beforeNums); + if(max != 0 && max == min) { // 当所有奖池都抽过一遍的时候,第二天五点,重置 + for(let item of this.pool) { + if(item.getNumToday <= 0) item.unsetHasGet(); } } }