diff --git a/game-server/app/services/guildActivity/guildActivityService.ts b/game-server/app/services/guildActivity/guildActivityService.ts index 0b65d23b0..a8bcce768 100644 --- a/game-server/app/services/guildActivity/guildActivityService.ts +++ b/game-server/app/services/guildActivity/guildActivityService.ts @@ -392,13 +392,20 @@ export async function gateActivitySettleReward(guildCode: string, serverId: numb let myR = new Rank(REDIS_KEY.USER_GATE_ACTIVITY, { serverId, guildCode }, true); + let hasSentMember: string[] = []; let ranks = await myR.getRankByRange(); for (let { rank, roleId, num: myScore } of ranks) { - let honour = dic.honour + myScore * GUILDACTIVITY.GATEACTIVITY_HONOUR_RATIO; - await updateUserRecAndSendHonour(honour, myScore, rank, roleId, members); + if(hasSentMember.indexOf(roleId) == -1) { + let honour = dic.honour + myScore * GUILDACTIVITY.GATEACTIVITY_HONOUR_RATIO; + await updateUserRecAndSendHonour(honour, myScore, rank, roleId); + hasSentMember.push(roleId); + } } for (let { roleId } of members) { // 只参加了,没有分数的人 - await updateUserRecAndSendHonour(dic.honour, 0, 0, roleId, members); + if(hasSentMember.indexOf(roleId) == -1) { + await updateUserRecAndSendHonour(dic.honour, 0, 0, roleId); + hasSentMember.push(roleId); + } } // 加入拍卖行 @@ -407,13 +414,11 @@ export async function gateActivitySettleReward(guildCode: string, serverId: numb // obj.delGuildRecord(guildCode, serverId); } -async function updateUserRecAndSendHonour(honour: number, myScore: number, rank: number, roleId: string, members: Member[]) { +async function updateUserRecAndSendHonour(honour: number, myScore: number, rank: number, roleId: string) { let honourObj = getHonourObject(Math.floor(honour)); await sendMailByContent(MAIL_TYPE.GUILD_ACTIVITY_REWARD, roleId, { goods: [honourObj] }) await UserGuildActivityRecModel.updateInfoByRoleId(roleId, { score: myScore, rank }); - let index = members.findIndex(cur => cur.roleId == roleId); - members.splice(index, 1); } @@ -460,14 +465,21 @@ export async function cityActivitySettleReward(cityId: number, serverId: number) let myR = new Rank(REDIS_KEY.USER_GATE_ACTIVITY, { serverId, guildCode }, true); let ranks = await myR.getRankByRange(); let userRank = 0; + let hasSentMember: string[] = []; for (let { rank, roleId, num: myScore } of ranks) { - let honour = dic.honour + getCityActivityRewards(dicCity.type, guildRank, rank); - await updateUserRecAndSendHonour(honour, myScore, rank, roleId, members); + if(hasSentMember.indexOf(roleId) == -1) { + let honour = dic.honour + getCityActivityRewards(dicCity.type, guildRank, rank); + await updateUserRecAndSendHonour(honour, myScore, rank, roleId); + hasSentMember.push(roleId); + } userRank = rank; } for (let { roleId } of members) { // 只参加了,没有分数的人 - let honour = dic.honour + getCityActivityRewards(dicCity.type, guildRank, userRank); - await updateUserRecAndSendHonour(honour, 0, 0, roleId, members); + if(hasSentMember.indexOf(roleId) == -1) { + let honour = dic.honour + getCityActivityRewards(dicCity.type, guildRank, userRank); + await updateUserRecAndSendHonour(honour, 0, 0, roleId); + hasSentMember.push(roleId); + } } } @@ -683,10 +695,14 @@ export async function raceActivitySettleReward(guildCode: string, woodenHorse: W let dic = gameData.guildActivity.get(GUILD_ACTIVITY_TYPE.RACE_ACTIVITY); let honour = dic.honour + Math.floor(durability * GUILDACTIVITY.RACEACTIVITY_DURABILITY_REWARD); + let hasSentMember: string[] = []; for(let { roleId } of members) { - await updateUserRecAndSendHonour(honour, 0, rank, roleId, members); - // 发放活跃 - await addActive(roleId, serverId, GUILD_POINT_WAYS.ACTIVITY); //获得活跃值 + if(hasSentMember.indexOf(roleId) == -1) { + await updateUserRecAndSendHonour(honour, 0, rank, roleId); + // 发放活跃 + await addActive(roleId, serverId, GUILD_POINT_WAYS.ACTIVITY); //获得活跃值 + hasSentMember.push(roleId); + } } }