From f95eeb282b141445d1a786e074a84bd1cbea1f22 Mon Sep 17 00:00:00 2001 From: luying Date: Fri, 3 Mar 2023 10:56:32 +0800 Subject: [PATCH] =?UTF-8?q?=F0=9F=90=9E=20fix(gvg):=20gvg=E9=81=97?= =?UTF-8?q?=E8=BF=B9=E8=81=94=E5=86=9B=E5=A5=96=E5=8A=B1=E9=A2=86=E5=8F=96?= =?UTF-8?q?=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../app/servers/guild/handler/gvgFightHandler.ts | 6 +++--- .../app/services/activity/bindPhoneService.ts | 2 +- shared/db/GVGVestigeLeagueRank.ts | 14 +++++++------- 3 files changed, 11 insertions(+), 11 deletions(-) diff --git a/game-server/app/servers/guild/handler/gvgFightHandler.ts b/game-server/app/servers/guild/handler/gvgFightHandler.ts index 51df96f34..f9908428d 100644 --- a/game-server/app/servers/guild/handler/gvgFightHandler.ts +++ b/game-server/app/servers/guild/handler/gvgFightHandler.ts @@ -430,7 +430,7 @@ export class GVGProduceHandler { const { ranks: memberRank, myRank: myMemberRank } = await getVestigeRank(REDIS_KEY.GVG_VESTIGE_MEMBER_ALL, false, { groupKey, day: getDayKeyInfo() }, { roleId }, serverNames); let yesterdayRank = await GVGVestigeLeagueRankModel.getYesterdayRank(myLeague.leagueCode); - let canReceiveLeagueRanks = await GVGVestigeLeagueRankModel.getCanReceiveRanks(configId, myLeague.leagueCode); + let canReceiveLeagueRanks = await GVGVestigeLeagueRankModel.getCanReceiveRanks(configId, myLeague.leagueCode, roleId); let canReceivePlayerRanks = await GVGVestigeSumRankModel.getCanReceiveRanks(configId, roleId); let { canReceiveBox, boxPreview } = calVestigeLeagueBoxRewards(canReceiveLeagueRanks, canReceivePlayerRanks); @@ -495,13 +495,13 @@ export class GVGProduceHandler { if(!myLeague) return resResult(STATUS.GVG_LEAGUE_NOT_EXIST); let { configId } = getGVGPeriodData(); - let canReceiveLeagueRanks = await GVGVestigeLeagueRankModel.getCanReceiveRanks(configId, myLeague.leagueCode); + let canReceiveLeagueRanks = await GVGVestigeLeagueRankModel.getCanReceiveRanks(configId, myLeague.leagueCode, roleId); let canReceivePlayerRanks = await GVGVestigeSumRankModel.getCanReceiveRanks(configId, roleId); if(canReceiveLeagueRanks.length <= 0 && canReceivePlayerRanks.length <= 0) return resResult(STATUS.GVG_RECEIVE_NO_RANK_REWARD); let { leagueReward, rewards } = calVestigeLeagueBoxRewards(canReceiveLeagueRanks, canReceivePlayerRanks); let leagueGoods = await addGVGReward(roleId, roleName, myLeague.leagueCode, sid, leagueReward, rewards, ITEM_CHANGE_REASON.GVG_VESTIGE_RECEIVE_RANK) - await GVGVestigeLeagueRankModel.receiveRanks(canReceiveLeagueRanks.map(cur => cur._id)); + await GVGVestigeLeagueRankModel.receiveRanks(canReceiveLeagueRanks.map(cur => cur._id), roleId); await GVGVestigeSumRankModel.receiveRanks(canReceivePlayerRanks.map(cur => cur._id)); return resResult(STATUS.SUCCESS, { diff --git a/game-server/app/services/activity/bindPhoneService.ts b/game-server/app/services/activity/bindPhoneService.ts index 50ed96bcf..5627a4c28 100644 --- a/game-server/app/services/activity/bindPhoneService.ts +++ b/game-server/app/services/activity/bindPhoneService.ts @@ -22,7 +22,7 @@ import { getActivitiesByType, getActivityById } from './activityService'; export async function getBindPhoneData(activityId: number, roleId: string, serverId: number, uid: number) { let activityData: ActivityModelType = await getActivityById(activityId); - if(activityData.type != ACTIVITY_TYPE.BIND_PHONE) return null; + if(!activityData || activityData.type != ACTIVITY_TYPE.BIND_PHONE) return null; let createTime = await getRoleCreateTime(roleId); let serverTime = await getServerCreateTime(serverId); diff --git a/shared/db/GVGVestigeLeagueRank.ts b/shared/db/GVGVestigeLeagueRank.ts index 54c2d76af..1be906259 100644 --- a/shared/db/GVGVestigeLeagueRank.ts +++ b/shared/db/GVGVestigeLeagueRank.ts @@ -24,14 +24,14 @@ export default class GVGVestigeLeagueRank extends BaseModel { @prop({ required: true }) rank: number; // 最后的排名,每天22点定格 - @prop({ required: true }) - isReceived: boolean; // 是否领取过 + @prop({ required: true, type: String }) + receiveMembers: string[]; // 是否领取过 public static async incScore(configId: number, leagueCode: string, groupKey: string, inc: number) { let today = getZeroPoint(); let result: GVGVestigeLeagueRankType = await GVGVestigeLeagueRankModel.findOneAndUpdate({ day: today, groupKey, leagueCode - }, { $inc: { score: inc }, $set: { configId }, $setOnInsert: { rank: 0, isReceived: false } }, { new: true, upsert: true }).lean(); + }, { $inc: { score: inc }, $set: { configId }, $setOnInsert: { rank: 0, receiveMembers: [] } }, { new: true, upsert: true }).lean(); return result; } @@ -61,13 +61,13 @@ export default class GVGVestigeLeagueRank extends BaseModel { return result; } - public static async getCanReceiveRanks(configId: number, leagueCode: string) { - let result: GVGVestigeLeagueRankType[] = await GVGVestigeLeagueRankModel.find({ configId, leagueCode, rank: { $gt: 0 }, isReceived: false }).lean(); + public static async getCanReceiveRanks(configId: number, leagueCode: string, roleId: string) { + let result: GVGVestigeLeagueRankType[] = await GVGVestigeLeagueRankModel.find({ configId, leagueCode, rank: { $gt: 0 }, receiveMembers: { $nin: [roleId] } }).lean(); return result; } - public static async receiveRanks(_ids: string[]) { - await GVGVestigeLeagueRankModel.updateMany({ _id: { $in: _ids } }, { $set: { isReceived: true } }); + public static async receiveRanks(_ids: string[], roleId: string) { + await GVGVestigeLeagueRankModel.updateMany({ _id: { $in: _ids } }, { $push: { receiveMembers: roleId } }); } }