✨ feat(稷下学宫): 修改每周学分进度奖励
This commit is contained in:
@@ -123,7 +123,7 @@ export default class RougelikeChara extends BaseModel {
|
||||
await RougelikeCharaModel.bulkWrite(updateArr.map((param) => {
|
||||
delete param._id;
|
||||
const { gameCode, charaCode } = param
|
||||
return { updateOne: { filter: { gameCode, charaCode }, update: { $set: { ...param } } } }
|
||||
return { updateOne: { filter: { gameCode, charaCode }, update: { $set: { ...param } }, upsert: true } }
|
||||
}))
|
||||
}
|
||||
|
||||
|
||||
@@ -43,6 +43,7 @@ export default class RougelikeExtend extends BaseModel {
|
||||
const result: RougelikeExtendType = await RougelikeExtendModel.findOne({ roleId, limitId }).lean(lean);
|
||||
return result;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
export const RougelikeExtendModel = getModelForClass(RougelikeExtend);
|
||||
|
||||
@@ -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> { };
|
||||
|
||||
@@ -48,6 +48,11 @@ export default class RougelikeScore extends BaseModel {
|
||||
return result;
|
||||
}
|
||||
|
||||
public static async findByRefTime(refTime: Date) {
|
||||
let result: RougelikeScoreType[] = await RougelikeScoreModel.find({ refTime }).lean();
|
||||
return result;
|
||||
}
|
||||
|
||||
public static async receiveAll(_ids: string[], maxNum: number) {
|
||||
await RougelikeScoreModel.updateMany({ _id: { $in: _ids } }, { $set: { receiveNum: maxNum } });
|
||||
}
|
||||
@@ -59,6 +64,16 @@ export default class RougelikeScore extends BaseModel {
|
||||
return result;
|
||||
}
|
||||
|
||||
public static async bulkWriteUpdate(updateArr: RougelikeScorePara[]) {
|
||||
if (updateArr.length == 0) return;
|
||||
await RougelikeScoreModel.bulkWrite(updateArr.map((param) => {
|
||||
delete param._id;
|
||||
const { roleId, refTime } = param
|
||||
return { updateOne: { filter: { roleId, refTime }, update: { $set: { ...param } }, upsert: true } }
|
||||
}))
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
export const RougelikeScoreModel = getModelForClass(RougelikeScore);
|
||||
|
||||
Reference in New Issue
Block a user