feat(稷下学宫): 修改每周学分进度奖励

This commit is contained in:
zhangxk
2023-09-08 21:25:39 +08:00
parent 7faeeb10e1
commit 77d30f8722
11 changed files with 285 additions and 30 deletions

View File

@@ -1,3 +1,6 @@
import { SHOP_REFRESH_TYPE } from '../consts';
import { gameData } from '../pubUtils/data';
import { getZeroPointOfTimeD } from '../pubUtils/timeUtil';
import BaseModel from './BaseModel';
import { getModelForClass, prop, DocumentType, index } from '@typegoose/typegoose';
@@ -103,6 +106,30 @@ export default class RougelikeRecord extends BaseModel {
return result;
}
public static async getLastMaxLv(roleId: string) {
let endTime = getZeroPointOfTimeD(Date.now() - 86400000, SHOP_REFRESH_TYPE.WEEKLY);
let startTime = new Date(endTime.getTime() - (86400000 * 7));
const result: RougelikeRecordType[] = await RougelikeRecordModel.find({ roleId, updatedAt: { $gt: startTime, $lt: endTime } }).lean(true);
let lastMaxLv = 1;
for (const { grade = 1 } of result) {
lastMaxLv = Math.max(lastMaxLv, grade);
}
return lastMaxLv;
}
public static async getLastMaxLvMap(roleIds: string[]) {
let endTime = getZeroPointOfTimeD(Date.now() - 86400000, SHOP_REFRESH_TYPE.WEEKLY);
let startTime = new Date(endTime.getTime() - (86400000 * 7));
const result: RougelikeRecordType[] = await RougelikeRecordModel.find({ roleId: { $in: roleIds }, updatedAt: { $gt: startTime, $lt: endTime } }).lean(true);
let lastMaxLvMap = new Map<string, number>();
for (const { roleId, grade } of result) {
if (!grade) continue;
let tempLv = lastMaxLvMap.has(roleId) ? lastMaxLvMap.get(roleId) : 1;
lastMaxLvMap.set(roleId, Math.max(tempLv, grade));
}
return lastMaxLvMap;
}
};
export const RougelikeRecordModel = getModelForClass(RougelikeRecord);
export interface RougelikeRecordType extends Pick<DocumentType<RougelikeRecord>, keyof RougelikeRecord> { };