🐞 fix(gvg): 后加入的玩家不可领取之前的遗迹奖励
This commit is contained in:
@@ -1,6 +1,6 @@
|
||||
import { pinus } from "pinus";
|
||||
import { GVGConfigModel, GVGConfigType } from "../../db/GVGConfig";
|
||||
import { getTimeFun, nowSeconds, WEEK_TO_SECOND } from "../../pubUtils/timeUtil";
|
||||
import { getSeconds, getTimeFun, nowSeconds, WEEK_TO_SECOND } from "../../pubUtils/timeUtil";
|
||||
import { getServerCreateTime } from "../redisService";
|
||||
import { GVG_PERIOD, GVG_SERVER_TYPE, LEAGUE_JOB, PUSH_ROUTE } from "../../consts";
|
||||
import { GVGLeagueModel, GVGLeagueType } from "../../db/GVGLeague";
|
||||
@@ -25,6 +25,7 @@ import { sendMessageToGuildWithSuc } from "../pushService";
|
||||
import { GVGCityModel } from "../../db/GVGCity";
|
||||
import { GVGRoleDataModel } from "../../db/GVGRoleData";
|
||||
import { getGVGGroupIdOfServer } from "../serverService";
|
||||
import { UserGuildModel } from "../../db/UserGuild";
|
||||
|
||||
// 定时器相关
|
||||
export async function createNewGVGConfig() {
|
||||
@@ -297,7 +298,8 @@ export async function getContribute(myUserData: GVGUserDataType) {
|
||||
}
|
||||
|
||||
export async function getLeagueRankBox(configId: number, leagueCode: string, roleId: string) {
|
||||
let canReceiveLeagueRanks = await GVGVestigeLeagueRankModel.getCanReceiveRanks(configId, leagueCode, roleId);
|
||||
let joinTime = await getMemberJoinLeagueTime(leagueCode, roleId);
|
||||
let canReceiveLeagueRanks = await GVGVestigeLeagueRankModel.getCanReceiveRanks(configId, leagueCode, roleId, joinTime);
|
||||
let canReceivePlayerRanks = await GVGVestigeSumRankModel.getCanReceiveRanks(configId, roleId);
|
||||
let { canReceiveBox } = calVestigeLeagueBoxRewards(canReceiveLeagueRanks, canReceivePlayerRanks);
|
||||
return { canReceiveBox }
|
||||
@@ -311,4 +313,27 @@ export async function getGroupKey(serverId: number) {
|
||||
let groupId = await getGVGGroupIdOfServer(serverId);
|
||||
return `g${groupId}`;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 之前gvgLeague表的members没有记录加入联军时间,所以如果查询没有time的话,根据userGuild的time来更新一下这个数据
|
||||
*
|
||||
* 获取玩家加入联军时间
|
||||
* @param leagueCode 联军id
|
||||
* @param roleId
|
||||
* @param league 联军表数据
|
||||
* @returns
|
||||
*/
|
||||
export async function getMemberJoinLeagueTime(leagueCode: string, roleId: string, league?: GVGLeagueType) {
|
||||
if(!league) league = await GVGLeagueModel.findByCode(leagueCode, 'members');
|
||||
let members = league?.members||[];
|
||||
let member = members.find(cur => cur.roleId == roleId);
|
||||
if(!member) return 0;
|
||||
if(!member.time) {
|
||||
let userGuild = await UserGuildModel.getMyGuild(roleId, 'createdAt');
|
||||
let time = getSeconds(userGuild.createdAt);
|
||||
await GVGLeagueModel.setMemberTime(leagueCode, roleId, time);
|
||||
return time;
|
||||
}
|
||||
return member.time;
|
||||
}
|
||||
Reference in New Issue
Block a user