🐞 fix(gvg): gvg个人排行

This commit is contained in:
luying
2023-02-18 19:22:01 +08:00
parent 8065a81988
commit 96cbc19391
8 changed files with 156 additions and 56 deletions

View File

@@ -11,13 +11,13 @@ import { GVGVestigeLeagueRankModel, GVGVestigeLeagueRankType } from "../../db/GV
import { GVGVestigeLockModel } from "../../db/GVGVestigeLock";
import { GVGVestigeRankModel, GVGVestigeRankType, GVGVestigeRankUpdate } from "../../db/GVGVestigeRank";
import { GVGVestigeRecType } from "../../db/GVGVestigeRec";
import { GVGVestigeSumRankModel } from "../../db/GVGVestigeSumRank";
import { GVGVestigeSumRankModel, GVGVestigeSumRankType } from "../../db/GVGVestigeSumRank";
import { HeroModel, HeroType } from "../../db/Hero";
import { RoleModel } from "../../db/Role";
import { OppDetailData, OppPlayerHeroInfo, OppPlayerInfo } from "../../domain/gvgField/gvgDb";
import { GVGVestigeOppPlayer } from "../../domain/gvgField/returnData";
import { KeyNameParam, LeagueRankInfo, myIdInter, RoleRankInfo } from "../../domain/rank";
import { gameData, getGVGVestigeLeagueRank, getGVGVestigeRange } from "../../pubUtils/data";
import { gameData, getGVGVestigeLeagueRank, getGVGVestigePlayerRank, getGVGVestigeRange } from "../../pubUtils/data";
import { GVG } from "../../pubUtils/dicParam";
import { RewardInter } from "../../pubUtils/interface";
import { getTimeFun, nowSeconds } from "../../pubUtils/timeUtil";
@@ -344,7 +344,7 @@ export async function savePlayerRank(configId: number, groupId: number, serverTy
let dicRankMap = gameData.gvgVestige.get(vestigeId);
let newRank = dicRankMap?.get(playerInfo.newRank)?.score||0;
let oldRank = dicRankMap?.get(playerInfo.oldRank)?.score||0;
let myScore = await GVGVestigeSumRankModel.incScore(playerInfo.roleId, playerInfo.leagueCode, groupId, serverType, newRank - oldRank);
let myScore = await GVGVestigeSumRankModel.incScore(playerInfo.roleId, playerInfo.leagueCode, configId, groupId, serverType, newRank - oldRank);
let r1 = new Rank(REDIS_KEY.GVG_VESTIGE_MEMBER_ALL, { serverType, groupId, day: getDayKeyInfo() });
await r1.setRankWithRoleInfo(playerInfo.roleId, myScore.score, myScore.updatedAt.getTime());
let leagueScore = await GVGVestigeLeagueRankModel.incScore(configId, playerInfo.leagueCode, groupId, serverType, newRank - oldRank);
@@ -355,8 +355,12 @@ export async function savePlayerRank(configId: number, groupId: number, serverTy
export async function getVestigeRank(redisKey: REDIS_KEY, isSimple: boolean, keyParam: KeyNameParam, myId: myIdInter, serverNames?: any) {
let r = new Rank(redisKey, keyParam);
r.setGenerFieldsFun((obj => {
if(redisKey == REDIS_KEY.GVG_VESTIGE_MEMBER_ALL && isSimple && obj instanceof RoleRankInfo) {
return { rank: obj.rank, name: obj.roleName, serverName: serverNames[obj.serverId], score: obj.num }
if(redisKey == REDIS_KEY.GVG_VESTIGE_MEMBER_ALL && obj instanceof RoleRankInfo) {
if(isSimple) {
return { rank: obj.rank, name: obj.roleName, serverName: serverNames[obj.serverId], score: obj.num }
} else {
return { ...obj, serverName: serverNames[obj.serverId], score: obj.num }
}
}
if(redisKey == REDIS_KEY.GVG_VESTIGE_LEAGUE && obj instanceof LeagueRankInfo) {
if(isSimple) {
@@ -394,22 +398,39 @@ export async function saveVestigeRankSchedule() {
await addVestigeLeagueRankRec(config.configId, ranks);
}
let memberKeys = await findKeys(`${REDIS_KEY.GVG_VESTIGE_MEMBER_ALL}:${day}:`);
for(let key of memberKeys) {
let [,, _groupId, _serverType] = key.split(':');
let groupId = parseInt(_groupId);
let serverType = parseInt(_serverType);
let r = new Rank(REDIS_KEY.GVG_VESTIGE_MEMBER_ALL, { groupId, serverType, day});
let ranks = await r.getRankByRangeRaw();
await GVGVestigeSumRankModel.saveRank(groupId, serverType, ranks);
}
let playerSumRanks = await GVGVestigeSumRankModel.findAllScores();
await GVGUserDataModel.addVestigeScores(config.configId, playerSumRanks);
}
export function calVestigeLeagueBoxRewards(canReceiveRanks: GVGVestigeLeagueRankType[]) {
export function calVestigeLeagueBoxRewards(canReceiveRanks: GVGVestigeLeagueRankType[], canReceivePlayerRanks: GVGVestigeSumRankType[]) {
let rewards: RewardInter[] = [], leagueReward: RewardInter[] = [];
for(let { rank } of canReceiveRanks) {
let dicRank = getGVGVestigeLeagueRank(rank);
if(!dicRank) { console.error('dic_zyz_GVGVestigeLeagueRank error'); continue; }
console.log('###### league', rank, dicRank)
combinePushItem(rewards, dicRank.rankReward);
combinePushItem(leagueReward, dicRank.rankLeagueReward);
}
for(let { rank } of canReceivePlayerRanks) {
let dicRank = getGVGVestigePlayerRank(rank);
if(!dicRank) { console.error('dic_zyz_GVGVestigPlayerRank error'); continue; }
console.log('###### player', rank, dicRank)
combinePushItem(rewards, dicRank.rankPlayerReward);
combinePushItem(leagueReward, dicRank.rankPlayerLeagueReward);
}
let boxPreview: { id: number, count: number, itemType: number }[] = [];
for(let { id, count } of rewards) boxPreview.push({ id, count, itemType: GVG_RETURN_ITEM_TYPE.NORMAL_ITEM });
for(let { id, count } of leagueReward) boxPreview.push({ id, count, itemType: GVG_RETURN_ITEM_TYPE.GVG_ITEM });
return {
leagueReward, rewards, boxPreview, canReceiveBox: canReceiveRanks.length > 0
leagueReward, rewards, boxPreview, canReceiveBox: canReceiveRanks.length > 0 || canReceivePlayerRanks.length > 0
}
}