好友:拉黑
This commit is contained in:
@@ -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
|
||||
});
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user