好友:拉黑

This commit is contained in:
luying
2021-02-03 11:49:37 +08:00
parent 585a741be5
commit 2d2c9907ab
7 changed files with 194 additions and 14 deletions

View File

@@ -1,10 +1,10 @@
import { Application, BackendSession } from "pinus";
import { resResult, getRandEelm, getResStr } from "../../../pubUtils/util";
import { STATUS, ROLE, FRIEND_DROP_TYPE, FRIEND_RELATION_TYPE } from "../../../consts";
import { STATUS, ROLE, FRIEND_DROP_TYPE, FRIEND_RELATION_TYPE, POPULATE_TYPE, BLOCK_OPEATE } from "../../../consts";
import { RoleModel, RoleType } from "../../../db/Role";
import { getBeforeDaySeconds } from "../../../pubUtils/timeUtil";
import { FriendApplyModel } from "../../../db/FriendApply";
import { FriendApplyParams, FriendListParam, FriendRecommendParams } from "../../../domain/roleField/friend";
import { FriendApplyParams, FriendListParam, FriendRecommendParams, BlackListParam } from "../../../domain/roleField/friend";
import { FriendShipModel, FriendShipType } from "../../../db/FriendShip";
import { FriendRelationModel } from "../../../db/FriendRelation";
import { isRoleOnline } from "../../../services/redisService";
@@ -29,7 +29,7 @@ export class FriendHandler {
const { lv } = await RoleModel.findByRoleId(roleId, ROLE.GET_LV);
let allList = await RoleModel.getRecommedList(lv - 5, lv + 5, day);
let myFriendRelation = await FriendRelationModel.findFriendByRole(roleId, false);
let myFriendRelation = await FriendRelationModel.findFriendByRole(roleId, POPULATE_TYPE.NOT);
let paramAllList = new Array<FriendRecommendParams>();
for(let role of allList) {
@@ -53,7 +53,7 @@ export class FriendHandler {
let { value } = msg;
let allList = await RoleModel.searchByNameOrId(value);
let myFriendRelation = await FriendRelationModel.findFriendByRole(roleId, false);
let myFriendRelation = await FriendRelationModel.findFriendByRole(roleId, POPULATE_TYPE.NOT);
let list = new Array<FriendRecommendParams>();
for(let role of allList) {
@@ -73,7 +73,7 @@ export class FriendHandler {
let roleIds = msg.roleIds;
const role = await RoleModel.findByRoleId(roleId, ROLE.GET_ROLE_ID);
let myFriendRelation = await FriendRelationModel.findFriendByRole(roleId, false);
let myFriendRelation = await FriendRelationModel.findFriendByRole(roleId, POPULATE_TYPE.NOT);
let str = '', resultRoleIds = new Array<string>();
for(let hisRoleId of roleIds) {
@@ -128,7 +128,7 @@ export class FriendHandler {
let role = await RoleModel.findByRoleId(roleId);
let friendCnt = role.friendCnt;
let myFriendRelation = await FriendRelationModel.findFriendByRole(roleId, false);
let myFriendRelation = await FriendRelationModel.findFriendByRole(roleId, POPULATE_TYPE.NOT);
let applyList = await FriendApplyModel.getApplyListByCode(applyCodeList);
let list = new Array<FriendListParam>();
@@ -187,7 +187,7 @@ export class FriendHandler {
let role = await RoleModel.findByRoleId(roleId);
let list = new Array<FriendListParam>();
let myRelation = await FriendRelationModel.findFriendByRole(roleId);
let myRelation = await FriendRelationModel.findFriendByRole(roleId, POPULATE_TYPE.FRIEND);
let friendList = myRelation?myRelation.friends: [];
for(let friend of friendList) {
let role = <RoleType>friend.role;
@@ -221,4 +221,112 @@ export class FriendHandler {
friendCnt, blockCnt
});
}
// 获取黑名单
public async getBlackList(msg: { }, session: BackendSession) {
let roleId: string = session.get('roleId');
let role = await RoleModel.findByRoleId(roleId);
let list = new Array<BlackListParam>();
let myRelation = await FriendRelationModel.findFriendByRole(roleId, POPULATE_TYPE.BLACKLIST);
let blacklist = myRelation?myRelation.blacklist: [];
for(let bl of blacklist) {
let role = <RoleType>bl.role;
if(!role) continue;
let param = new BlackListParam(role);
let isOnline = await isRoleOnline(role.roleId);
param.setOnline(isOnline);
list.push(param);
}
let { friendCnt = 0, blockCnt = 0 } = role;
return resResult(STATUS.SUCCESS, {
list,
friendCnt, blockCnt
});
}
// 拉黑/移除
public async setBlackList(msg: { roleId: string, type: number }, session: BackendSession) {
let roleId: string = session.get('roleId');
let { roleId: hisRoleId, type } = msg;
let role = await RoleModel.findByRoleId(roleId);
let str = '', list = new Array<BlackListParam>();
if(type == BLOCK_OPEATE.ADD) {
let myRelation = await FriendRelationModel.findFriendByRole(roleId, POPULATE_TYPE.FRIEND);
let friends = myRelation?myRelation.friends: [];
let blacklist = myRelation?myRelation.blacklist: [];
let curFriend = friends.find(cur => cur.roleId == hisRoleId);
let curBlack = blacklist.find(cur => cur.roleId == hisRoleId);
if(curBlack) {
return resResult(STATUS.FRIEND_BLACK_HAS_ADD);
}
role = await RoleModel.increaseBlockCnt(roleId, 1, curFriend? -1: 0, 100); // 增加黑名单人数
if(!role) {
return resResult(STATUS.FRIEND_BLACK_MAX)
}
await RoleModel.increaseFriendCnt(hisRoleId, curFriend? -1: 0); // 对方好友减少
let friend: RoleType, friendShip: FriendShipType;
if(!!curFriend) {
await FriendShipModel.clearValue([roleId, hisRoleId]);
friend = <RoleType>curFriend.role;
friendShip = <FriendShipType>curFriend.friendShip;
} else {
friend = await RoleModel.findByRoleId(hisRoleId);
}
await FriendRelationModel.moveFromFriend(hisRoleId, role, friendShip, false); //从对方好友删除
await FriendRelationModel.moveFromFriend(roleId, friend, friendShip, true); // 删除好友关系并拉黑
let param = new BlackListParam(friend);
let isOnline = await isRoleOnline(role.roleId);
param.setOnline(isOnline);
list.push(param);
} else if(type == BLOCK_OPEATE.REMOVE || type == BLOCK_OPEATE.REMOVE_AND_APPLY){
let myRelation = await FriendRelationModel.findFriendByRole(roleId, POPULATE_TYPE.BLACKLIST);
let blacklist = myRelation?myRelation.blacklist: [];
let curFriend = blacklist.find(cur => cur.roleId == hisRoleId);
if(!curFriend) {
return resResult(STATUS.FRIEND_BLACK_NOT_FOUND);
}
role = await RoleModel.increaseBlockCnt(roleId, -1, 0, 100); // 黑名单人数减
if(!role) {
return resResult(STATUS.FRIEND_BLACK_MAX)
}
await FriendRelationModel.removeFromBlack(roleId, hisRoleId);
if(type == BLOCK_OPEATE.REMOVE_AND_APPLY) {
// 申请好友
let applyResult = await RoleModel.increaseFriendApplyCnt(hisRoleId, 1, 50);
if(!applyResult) {
str = getResStr(STATUS.FRIEND_HIS_APPLY_MAX);
}
await FriendApplyModel.createApply(hisRoleId, role);
}
} else {
return resResult(STATUS.WRONG_PARMS);
}
let { friendCnt = 0, blockCnt = 0 } = role;
return resResult(STATUS.SUCCESS, {
isSuccess: str == '',
msg: str,
list,
friendCnt, blockCnt
});
}
}