🐞 fix(稷下学宫): 修改每周奖励
This commit is contained in:
@@ -1193,7 +1193,7 @@ export class RougeHandler {
|
|||||||
let sid: string = session.get('sid');
|
let sid: string = session.get('sid');
|
||||||
let roleName: string = session.get('roleName');
|
let roleName: string = session.get('roleName');
|
||||||
let { index } = msg;
|
let { index } = msg;
|
||||||
const lastMaxLv = await RougelikeRecordModel.getLastMaxLv(roleId);
|
const lastMaxLv = await RougelikeExtendModel.getLastMaxLv(roleId);
|
||||||
const rougeScoreRewardByLvData = gameData.rougeScoreRewardByLv.get(lastMaxLv);
|
const rougeScoreRewardByLvData = gameData.rougeScoreRewardByLv.get(lastMaxLv);
|
||||||
if (!rougeScoreRewardByLvData) return resResult(STATUS.DIC_DATA_NOT_FOUND);
|
if (!rougeScoreRewardByLvData) return resResult(STATUS.DIC_DATA_NOT_FOUND);
|
||||||
let dicScore = rougeScoreRewardByLvData.get(index);
|
let dicScore = rougeScoreRewardByLvData.get(index);
|
||||||
|
|||||||
@@ -41,7 +41,7 @@ export async function getRougeData(roleId: string) {
|
|||||||
|
|
||||||
const dbExtends = await RougelikeExtendModel.findByRoleId(roleId);
|
const dbExtends = await RougelikeExtendModel.findByRoleId(roleId);
|
||||||
const limitIds = dbExtends.map(cur => cur.limitId);
|
const limitIds = dbExtends.map(cur => cur.limitId);
|
||||||
const lastMaxLv = await RougelikeRecordModel.getLastMaxLv(roleId);
|
const lastMaxLv = await RougelikeExtendModel.getLastMaxLv(roleId);
|
||||||
return { isPlaying, gameCode, weeklyScore: dbScore?.score || 0, receivedScore: dbScore?.received || [], ...techData, collections, limitIds, takeoutRewardCnt: dbScore?.takeoutRewardCnt, lastMaxLv }
|
return { isPlaying, gameCode, weeklyScore: dbScore?.score || 0, receivedScore: dbScore?.received || [], ...techData, collections, limitIds, takeoutRewardCnt: dbScore?.takeoutRewardCnt, lastMaxLv }
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -923,12 +923,12 @@ export function getAuthorTypeCardNum(authorType: number, cards: Card[]) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
export async function repaireSendScoreReward() {
|
export async function repaireSendScoreReward() {
|
||||||
let refTime = new Date(getZeroPointOfTimeD(Date.now() - 86400000, SHOP_REFRESH_TYPE.WEEKLY).getTime() - (86400000 * 7));
|
let refTime = new Date(getZeroPointOfTimeD(Date.now(), SHOP_REFRESH_TYPE.WEEKLY).getTime() - (86400000 * 7));
|
||||||
let allRewards = await RougelikeScoreModel.findByRefTime(refTime);
|
let allRewards = await RougelikeScoreModel.findByRefTime(refTime);
|
||||||
let updateArr: RougelikeScorePara[] = [];
|
let updateArr: RougelikeScorePara[] = [];
|
||||||
|
|
||||||
const roleIds = allRewards.map(cur => { return cur.roleId });
|
const roleIds = allRewards.map(cur => { return cur.roleId });
|
||||||
const lastMaxLvMap = await RougelikeRecordModel.getLastMaxLvMap(roleIds);
|
const lastMaxLvMap = await RougelikeExtendModel.getLastMaxLvMap(roleIds);
|
||||||
for (let { roleId, received, score, receiveNum } of allRewards) {
|
for (let { roleId, received, score, receiveNum } of allRewards) {
|
||||||
if (!lastMaxLvMap.has(roleId)) continue;
|
if (!lastMaxLvMap.has(roleId)) continue;
|
||||||
let goods: RewardInter[] = [];
|
let goods: RewardInter[] = [];
|
||||||
|
|||||||
@@ -1,3 +1,6 @@
|
|||||||
|
import { SHOP_REFRESH_TYPE } from '../consts/constModules/sysConst';
|
||||||
|
import { gameData } from '../pubUtils/data';
|
||||||
|
import { getZeroPointOfTimeD } from '../pubUtils/timeUtil';
|
||||||
import BaseModel from './BaseModel';
|
import BaseModel from './BaseModel';
|
||||||
import { getModelForClass, prop, DocumentType, index } from '@typegoose/typegoose';
|
import { getModelForClass, prop, DocumentType, index } from '@typegoose/typegoose';
|
||||||
|
|
||||||
@@ -21,14 +24,13 @@ export default class RougelikeExtend extends BaseModel {
|
|||||||
@prop({ required: true, default: 0 })
|
@prop({ required: true, default: 0 })
|
||||||
limitId: number; // 前置试炼id,只会是已通关
|
limitId: number; // 前置试炼id,只会是已通关
|
||||||
|
|
||||||
@prop({ required: true, type: RewardInter, default: 0, _id: false})
|
@prop({ required: true, type: RewardInter, default: 0, _id: false })
|
||||||
firstReward: RewardInter[]; //首通奖励
|
firstReward: RewardInter[]; //首通奖励
|
||||||
|
|
||||||
@prop({ required: true, default: '' })
|
@prop({ required: true, default: '' })
|
||||||
gameCode: string;
|
gameCode: string;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
public static async update(roleId: string, limitId: number, firstReward: RewardInter[], gameCode: string, lean = true) {
|
public static async update(roleId: string, limitId: number, firstReward: RewardInter[], gameCode: string, lean = true) {
|
||||||
const result: RougelikeExtendType = await RougelikeExtendModel.findOneAndUpdate({ roleId, limitId }, { firstReward, gameCode }, { new: true, upsert: true }).lean(lean);
|
const result: RougelikeExtendType = await RougelikeExtendModel.findOneAndUpdate({ roleId, limitId }, { firstReward, gameCode }, { new: true, upsert: true }).lean(lean);
|
||||||
return result;
|
return result;
|
||||||
@@ -43,7 +45,30 @@ export default class RougelikeExtend extends BaseModel {
|
|||||||
const result: RougelikeExtendType = await RougelikeExtendModel.findOne({ roleId, limitId }).lean(lean);
|
const result: RougelikeExtendType = await RougelikeExtendModel.findOne({ roleId, limitId }).lean(lean);
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static async getLastMaxLv(roleId: string) {
|
||||||
|
let endTime = getZeroPointOfTimeD(Date.now(), SHOP_REFRESH_TYPE.WEEKLY);
|
||||||
|
const result: RougelikeExtendType[] = await RougelikeExtendModel.find({ roleId, createdAt: { $lt: endTime } }).lean(true);
|
||||||
|
let lastMaxLv = 1;
|
||||||
|
for (const { limitId } of result) {
|
||||||
|
const dicData = gameData.rougeTypeGradeById.get(limitId);
|
||||||
|
lastMaxLv = Math.max(lastMaxLv, dicData.gradeIndex);
|
||||||
|
}
|
||||||
|
return lastMaxLv;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static async getLastMaxLvMap(roleIds: string[]) {
|
||||||
|
let endTime = new Date(getZeroPointOfTimeD(Date.now(), SHOP_REFRESH_TYPE.WEEKLY).getTime() - 86400000 * 7);
|
||||||
|
const result: RougelikeExtendType[] = await RougelikeExtendModel.find({ roleId: { $in: roleIds }, createdAt: { $lt: endTime } }).lean(true);
|
||||||
|
let lastMaxLvMap = new Map<string, number>();
|
||||||
|
for (const { roleId, limitId } of result) {
|
||||||
|
if (!limitId) continue;
|
||||||
|
let tempLv = lastMaxLvMap.has(roleId) ? lastMaxLvMap.get(roleId) : 1;
|
||||||
|
const dicData = gameData.rougeTypeGradeById.get(limitId);
|
||||||
|
lastMaxLvMap.set(roleId, Math.max(tempLv, dicData.gradeIndex));
|
||||||
|
}
|
||||||
|
return lastMaxLvMap;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
export const RougelikeExtendModel = getModelForClass(RougelikeExtend);
|
export const RougelikeExtendModel = getModelForClass(RougelikeExtend);
|
||||||
|
|||||||
@@ -105,30 +105,6 @@ export default class RougelikeRecord extends BaseModel {
|
|||||||
return result;
|
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 const RougelikeRecordModel = getModelForClass(RougelikeRecord);
|
||||||
export interface RougelikeRecordType extends Pick<DocumentType<RougelikeRecord>, keyof RougelikeRecord> { };
|
export interface RougelikeRecordType extends Pick<DocumentType<RougelikeRecord>, keyof RougelikeRecord> { };
|
||||||
|
|||||||
Reference in New Issue
Block a user