From 47c3c093f235bfc678ccb033b8a4f7128c8fb2a3 Mon Sep 17 00:00:00 2001 From: luying Date: Thu, 25 Feb 2021 11:35:41 +0800 Subject: [PATCH] =?UTF-8?q?=E5=A5=BD=E5=8F=8B=EF=BC=9A=E7=89=B9=E6=AE=8A?= =?UTF-8?q?=E6=83=85=E5=86=B5=E5=A4=84=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../app/servers/role/handler/friendHandler.ts | 18 ++++++++++++++++-- shared/db/FriendApply.ts | 5 +++++ 2 files changed, 21 insertions(+), 2 deletions(-) diff --git a/game-server/app/servers/role/handler/friendHandler.ts b/game-server/app/servers/role/handler/friendHandler.ts index cca3f5da2..8b93b9701 100644 --- a/game-server/app/servers/role/handler/friendHandler.ts +++ b/game-server/app/servers/role/handler/friendHandler.ts @@ -149,7 +149,7 @@ export class FriendHandler { let hisSid = await getRedis(`login_roleId_${hisRoleId}`); uids.push({ uid: hisRoleId, sid: hisSid }); } - console.log(JSON.stringify(uids)) + this.channelService.pushMessageByUids('onFriendApply', resResult(STATUS.SUCCESS, { roleId }), uids); return resResult(STATUS.SUCCESS, { @@ -167,6 +167,7 @@ export class FriendHandler { let myFriendRelation = await FriendRelationModel.findFriendByRole(roleId, POPULATE_TYPE.NOT); let list = await FriendApplyModel.getApplyList(roleId); let result = new Array(); + let delApplyCodeList = new Array(); for(let apply of list) { let friend = apply.friend; let type = getRecommendType(myFriendRelation, roleId, friend.roleId); @@ -178,9 +179,15 @@ export class FriendHandler { param.setServerName(serverId, serverName); param.setType(type); + if(type != FRIEND_RELATION_TYPE.NORMAL) { + delApplyCodeList.push(apply.applyCode); + continue; + } result.push(param); } + await FriendApplyModel.deleteApply(delApplyCodeList); + return resResult(STATUS.SUCCESS, { list: result }); @@ -205,10 +212,13 @@ export class FriendHandler { for(let apply of applyList) { let type = getRecommendType(myFriendRelation, roleId, apply.frdRoleId); if(type == FRIEND_RELATION_TYPE.HAS_FRIEND) { - str = getResStr(STATUS.FRIEND_HAS_ADD); continue; + str = getResStr(STATUS.FRIEND_HAS_ADD); + resultApplyCodeList.push(apply.applyCode); continue; } else if(type == FRIEND_RELATION_TYPE.HAS_BLOCKED) { + resultApplyCodeList.push(apply.applyCode); str = getResStr(STATUS.FRIEND_HAS_BLOCKED); continue; } else if (type == FRIEND_RELATION_TYPE.MYSELF) { + resultApplyCodeList.push(apply.applyCode); str = getResStr(STATUS.FRIEND_YOURSELF); continue; } @@ -244,6 +254,9 @@ export class FriendHandler { await FriendApplyModel.deleteApply(resultApplyCodeList); + // 特殊处理:如果他点一键同意,有很多人,这个单独的人就不做这个额外的提示,直接把他好友申请删掉就好 + if(str == getResStr(STATUS.FRIEND_HAS_ADD) && resultApplyCodeList.length > 1) str = ''; + return resResult(STATUS.SUCCESS, { isSuccess: str == '', msg: str, @@ -377,6 +390,7 @@ export class FriendHandler { await FriendRelationModel.moveFromFriend(hisRoleId, role, friendShip, false, !!curFriend); //从对方好友删除 await FriendRelationModel.moveFromFriend(roleId, friend, friendShip, true, !!curFriend); // 删除好友关系并拉黑 + await FriendApplyModel.deleteApplyByRoles(roleId, hisRoleId); // 删除双方的申请 let param = new BlackListParam(friend); let isOnline = await isRoleOnline(friend.roleId); diff --git a/shared/db/FriendApply.ts b/shared/db/FriendApply.ts index f28ad1498..99bc8b32f 100644 --- a/shared/db/FriendApply.ts +++ b/shared/db/FriendApply.ts @@ -64,6 +64,11 @@ export default class FriendApply extends BaseModel { return result; } + // 拉黑时删除申请 + public static async deleteApplyByRoles(roleId: string, frdRoleId: string) { + const result = await FriendApplyModel.deleteMany({ $or: [{ roleId, frdRoleId}, {roleId: frdRoleId, frdRoleId: roleId}] }); + return result; + } public static async deleteAccount(roleId: string) { let result = await FriendApplyModel.deleteMany({ $or: [{ roleId: roleId }, { frdRoleId: roleId }] });