好友:拉黑bug,添加申请等推送
This commit is contained in:
@@ -15,7 +15,7 @@ import { UserGuildApplyModel } from '../../../db/UserGuildApply';
|
|||||||
import { hasStructureConsume, getStructureConsume, gameData } from '../../../pubUtils/data';
|
import { hasStructureConsume, getStructureConsume, gameData } from '../../../pubUtils/data';
|
||||||
import { GuildRecModel } from '../../../db/GuildRec';
|
import { GuildRecModel } from '../../../db/GuildRec';
|
||||||
import { sendMail } from '../../../services/mailService';
|
import { sendMail } from '../../../services/mailService';
|
||||||
import { existsRank, initSingleRankWithServer, getRank, setRank, redisUserInfoUpdate, redisUserInfoAdd, removeFromRank, getMyRank, isRoleOnline } from '../../../services/redisService';
|
import { existsRank, initSingleRankWithServer, getRank, setRank, redisUserInfoUpdate, redisUserInfoAdd, removeFromRank, getMyRank, isRoleOnline, getRedis } from '../../../services/redisService';
|
||||||
import { lockData } from '../../../services/redLockService';
|
import { lockData } from '../../../services/redLockService';
|
||||||
import { DATA_NAME } from '../../../consts/dataName';
|
import { DATA_NAME } from '../../../consts/dataName';
|
||||||
import { openGuildRefine } from '../../../services/guildRefineService';
|
import { openGuildRefine } from '../../../services/guildRefineService';
|
||||||
@@ -25,7 +25,9 @@ export default function (app: Application) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
export class GuildHandler {
|
export class GuildHandler {
|
||||||
|
channelService: ChannelService;
|
||||||
constructor(private app: Application) {
|
constructor(private app: Application) {
|
||||||
|
this.channelService = app.get('channelService');
|
||||||
}
|
}
|
||||||
|
|
||||||
// 创建军团
|
// 创建军团
|
||||||
@@ -431,13 +433,17 @@ export class GuildHandler {
|
|||||||
|
|
||||||
const roleList = await RoleModel.findRoleByField('roleId', roleIds);
|
const roleList = await RoleModel.findRoleByField('roleId', roleIds);
|
||||||
let result = new Array<string>();
|
let result = new Array<string>();
|
||||||
|
let uids = [];
|
||||||
for(let role of roleList) {
|
for(let role of roleList) {
|
||||||
if(!role.hasGuild) {
|
if(!role.hasGuild) {
|
||||||
await UserGuildApplyModel.createUserGuildApply(role, guild, GUILD_APPLY_TYPE.INVITE);
|
await UserGuildApplyModel.createUserGuildApply(role, guild, GUILD_APPLY_TYPE.INVITE);
|
||||||
result.push(role.roleId);
|
result.push(role.roleId);
|
||||||
}
|
let hisSid = await getRedis(`login_roleId_${role.roleId}`);
|
||||||
|
uids.push({ uid: role.roleId, sid: hisSid })
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
this.channelService.pushMessageByUids('onGuildInvite', resResult(STATUS.SUCCESS, { code }), uids);
|
||||||
|
|
||||||
return resResult(STATUS.SUCCESS, { roleIds: result });
|
return resResult(STATUS.SUCCESS, { roleIds: result });
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
import { Application, BackendSession } from "pinus";
|
import { Application, BackendSession, ChannelService } from "pinus";
|
||||||
import { resResult, getRandEelm, getResStr, shouldRefresh } from "../../../pubUtils/util";
|
import { resResult, getRandEelm, getResStr, shouldRefresh } from "../../../pubUtils/util";
|
||||||
import { STATUS, ROLE_SELECT, FRIEND_DROP_TYPE, FRIEND_RELATION_TYPE, POPULATE_TYPE, BLOCK_OPEATE, CONSUME_TYPE, ITID, HERO_SELECT, EQUIP_SELECT, REDIS_KEY } from "../../../consts";
|
import { STATUS, ROLE_SELECT, FRIEND_DROP_TYPE, FRIEND_RELATION_TYPE, POPULATE_TYPE, BLOCK_OPEATE, CONSUME_TYPE, ITID, HERO_SELECT, EQUIP_SELECT, REDIS_KEY } from "../../../consts";
|
||||||
import { RoleModel, RoleType } from "../../../db/Role";
|
import { RoleModel, RoleType } from "../../../db/Role";
|
||||||
@@ -7,7 +7,7 @@ import { FriendApplyModel } from "../../../db/FriendApply";
|
|||||||
import { FriendApplyParams, FriendListParam, FriendRecommendParams, BlackListParam, FriendValueListParam } from "../../../domain/roleField/friend";
|
import { FriendApplyParams, FriendListParam, FriendRecommendParams, BlackListParam, FriendValueListParam } from "../../../domain/roleField/friend";
|
||||||
import { FriendShipModel, FriendShipType } from "../../../db/FriendShip";
|
import { FriendShipModel, FriendShipType } from "../../../db/FriendShip";
|
||||||
import { FriendRelationModel, Relation } from "../../../db/FriendRelation";
|
import { FriendRelationModel, Relation } from "../../../db/FriendRelation";
|
||||||
import { isRoleOnline, getServerName, getMyRank } from "../../../services/redisService";
|
import { isRoleOnline, getServerName, getMyRank, getRedis } from "../../../services/redisService";
|
||||||
import { increaseFrdCnt, getRecommendType, sortByBeSentHeart } from "../../../services/friendService";
|
import { increaseFrdCnt, getRecommendType, sortByBeSentHeart } from "../../../services/friendService";
|
||||||
import { FriendPointModel } from "../../../db/FriendPoint";
|
import { FriendPointModel } from "../../../db/FriendPoint";
|
||||||
import { gameData } from "../../../pubUtils/data";
|
import { gameData } from "../../../pubUtils/data";
|
||||||
@@ -28,8 +28,10 @@ export default function (app: Application) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
export class FriendHandler {
|
export class FriendHandler {
|
||||||
|
channelService: ChannelService;
|
||||||
|
|
||||||
constructor(private app: Application) {
|
constructor(private app: Application) {
|
||||||
|
this.channelService = this.app.get('channelService');
|
||||||
}
|
}
|
||||||
|
|
||||||
// 获取推荐好友列表
|
// 获取推荐好友列表
|
||||||
@@ -74,7 +76,6 @@ export class FriendHandler {
|
|||||||
if(list2.length < FRIEND.FRIEND_RECONMMEND_NUM - myServerLen) {
|
if(list2.length < FRIEND.FRIEND_RECONMMEND_NUM - myServerLen) {
|
||||||
list1 = getRandEelm(myServerList, FRIEND.FRIEND_RECONMMEND_NUM - list2.length);
|
list1 = getRandEelm(myServerList, FRIEND.FRIEND_RECONMMEND_NUM - list2.length);
|
||||||
}
|
}
|
||||||
console.log
|
|
||||||
|
|
||||||
let list = list1.concat(list2);
|
let list = list1.concat(list2);
|
||||||
|
|
||||||
@@ -115,6 +116,7 @@ export class FriendHandler {
|
|||||||
let myFriendRelation = await FriendRelationModel.findFriendByRole(roleId, POPULATE_TYPE.NOT);
|
let myFriendRelation = await FriendRelationModel.findFriendByRole(roleId, POPULATE_TYPE.NOT);
|
||||||
|
|
||||||
let str = '', resultRoleIds = new Array<string>();
|
let str = '', resultRoleIds = new Array<string>();
|
||||||
|
let uids = [];
|
||||||
for(let hisRoleId of roleIds) {
|
for(let hisRoleId of roleIds) {
|
||||||
let type = getRecommendType(myFriendRelation, roleId, hisRoleId);
|
let type = getRecommendType(myFriendRelation, roleId, hisRoleId);
|
||||||
if(type == FRIEND_RELATION_TYPE.HAS_FRIEND) {
|
if(type == FRIEND_RELATION_TYPE.HAS_FRIEND) {
|
||||||
@@ -132,7 +134,11 @@ export class FriendHandler {
|
|||||||
|
|
||||||
await FriendApplyModel.createApply(hisRoleId, role);
|
await FriendApplyModel.createApply(hisRoleId, role);
|
||||||
resultRoleIds.push(hisRoleId);
|
resultRoleIds.push(hisRoleId);
|
||||||
|
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, {
|
return resResult(STATUS.SUCCESS, {
|
||||||
isSuccess: str == '',
|
isSuccess: str == '',
|
||||||
@@ -336,8 +342,8 @@ export class FriendHandler {
|
|||||||
friend = await RoleModel.findByRoleId(hisRoleId);
|
friend = await RoleModel.findByRoleId(hisRoleId);
|
||||||
}
|
}
|
||||||
|
|
||||||
await FriendRelationModel.moveFromFriend(hisRoleId, role, friendShip, false); //从对方好友删除
|
await FriendRelationModel.moveFromFriend(hisRoleId, role, friendShip, false, !!curFriend); //从对方好友删除
|
||||||
await FriendRelationModel.moveFromFriend(roleId, friend, friendShip, true); // 删除好友关系并拉黑
|
await FriendRelationModel.moveFromFriend(roleId, friend, friendShip, true, !!curFriend); // 删除好友关系并拉黑
|
||||||
|
|
||||||
let param = new BlackListParam(friend);
|
let param = new BlackListParam(friend);
|
||||||
let isOnline = await isRoleOnline(friend.roleId);
|
let isOnline = await isRoleOnline(friend.roleId);
|
||||||
@@ -370,8 +376,8 @@ export class FriendHandler {
|
|||||||
friend = <RoleType>curFriend.role;
|
friend = <RoleType>curFriend.role;
|
||||||
friendShip = <FriendShipType>curFriend.friendShip;
|
friendShip = <FriendShipType>curFriend.friendShip;
|
||||||
|
|
||||||
await FriendRelationModel.moveFromFriend(hisRoleId, role, friendShip, false); //从对方好友删除
|
await FriendRelationModel.moveFromFriend(hisRoleId, role, friendShip, false, !!curFriend); //从对方好友删除
|
||||||
await FriendRelationModel.moveFromFriend(roleId, friend, friendShip, false); // 删除好友关系并拉黑
|
await FriendRelationModel.moveFromFriend(roleId, friend, friendShip, false, !!curFriend); // 删除好友关系并拉黑
|
||||||
|
|
||||||
frdRoleIds.push(roleId);
|
frdRoleIds.push(roleId);
|
||||||
|
|
||||||
@@ -447,6 +453,8 @@ export class FriendHandler {
|
|||||||
|
|
||||||
let todaySendInc = 0;
|
let todaySendInc = 0;
|
||||||
let list = new Array<FriendValueListParam>();
|
let list = new Array<FriendValueListParam>();
|
||||||
|
|
||||||
|
let uids = [];
|
||||||
for(let relation of canSendList) {
|
for(let relation of canSendList) {
|
||||||
|
|
||||||
if(todaySendCnt + FRIEND.FRIEND_FRIENDPOINT_ADD > max) break;
|
if(todaySendCnt + FRIEND.FRIEND_FRIENDPOINT_ADD > max) break;
|
||||||
@@ -460,7 +468,11 @@ export class FriendHandler {
|
|||||||
|
|
||||||
todaySendCnt += FRIEND.FRIEND_FRIENDPOINT_ADD;
|
todaySendCnt += FRIEND.FRIEND_FRIENDPOINT_ADD;
|
||||||
todaySendInc += FRIEND.FRIEND_FRIENDPOINT_ADD;
|
todaySendInc += FRIEND.FRIEND_FRIENDPOINT_ADD;
|
||||||
|
|
||||||
|
let hisSid = await getRedis(`login_roleId_${relation.roleId}`);
|
||||||
|
uids.push({ uid: relation.roleId, sid: hisSid })
|
||||||
}
|
}
|
||||||
|
this.channelService.pushMessageByUids('onFriendSendHeart', resResult(STATUS.SUCCESS, {roleId}), uids);
|
||||||
if(todaySendInc <= 0) return resResult(STATUS.FRIEND_HAS_SENT);
|
if(todaySendInc <= 0) return resResult(STATUS.FRIEND_HAS_SENT);
|
||||||
|
|
||||||
// 更新情谊值
|
// 更新情谊值
|
||||||
@@ -583,7 +595,7 @@ export class FriendHandler {
|
|||||||
|
|
||||||
let dbHeroes = await HeroModel.findByRole(oppoRoleId);
|
let dbHeroes = await HeroModel.findByRole(oppoRoleId);
|
||||||
let role = await RoleModel.findByRoleId(oppoRoleId, null, true);
|
let role = await RoleModel.findByRoleId(oppoRoleId, null, true);
|
||||||
let { topFive } = role;
|
let { topFive, topFiveCe } = role;
|
||||||
|
|
||||||
let heroes = new Array<PlayerDetailHero>();
|
let heroes = new Array<PlayerDetailHero>();
|
||||||
for(let {hid, lv, star, colorStar, quality } of dbHeroes) {
|
for(let {hid, lv, star, colorStar, quality } of dbHeroes) {
|
||||||
@@ -597,7 +609,7 @@ export class FriendHandler {
|
|||||||
}
|
}
|
||||||
let rank = await getMyRank(REDIS_KEY.PVP_RANK, 0, oppoRoleId);//去redis中获取排名
|
let rank = await getMyRank(REDIS_KEY.PVP_RANK, 0, oppoRoleId);//去redis中获取排名
|
||||||
|
|
||||||
result = new PlayerDetail({...role, heroes});
|
result = new PlayerDetail({...role, defCe: topFiveCe, heroes});
|
||||||
result.setWarStar(role.warStar, rank);
|
result.setWarStar(role.warStar, rank);
|
||||||
|
|
||||||
return resResult(STATUS.SUCCESS, result);
|
return resResult(STATUS.SUCCESS, result);
|
||||||
|
|||||||
@@ -62,22 +62,30 @@ export default class FriendRelation extends BaseModel {
|
|||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static async moveFromFriend(roleId: string, friend: RoleType, friendShip: FriendShipType, toBlack: boolean ) {
|
public static async moveFromFriend(roleId: string, friend: RoleType, friendShip: FriendShipType, toBlack: boolean, hasFriend: boolean ) {
|
||||||
let update = {
|
let update = {}
|
||||||
$pull: { friends: { roleId: friend.roleId } }
|
let setOnInsert = {};
|
||||||
|
if(hasFriend) {
|
||||||
|
update['$pull'] = { friends: { roleId: friend.roleId } };
|
||||||
|
} else {
|
||||||
|
setOnInsert['friends'] = [];
|
||||||
}
|
}
|
||||||
if(toBlack) {
|
if(toBlack) {
|
||||||
update['$push'] = { blacklist: { roleId: friend.roleId, role: friend._id, friendShip: friendShip? friendShip._id: null } };
|
update['$push'] = { blacklist: { roleId: friend.roleId, role: friend._id, friendShip: friendShip? friendShip._id: null } };
|
||||||
|
} else {
|
||||||
|
setOnInsert['blacklist'] = [];
|
||||||
}
|
}
|
||||||
|
update['$setOnInsert'] = setOnInsert;
|
||||||
|
|
||||||
let result: FriendRelationType = await FriendRelationModel.findOneAndUpdate({ roleId }, update, { new: true });
|
let result: FriendRelationType = await FriendRelationModel.findOneAndUpdate({ roleId }, update, { upsert: true, new: true });
|
||||||
return result
|
return result
|
||||||
}
|
}
|
||||||
|
|
||||||
public static async removeFromBlack(roleId: string, frdRoleId: string ) {
|
public static async removeFromBlack(roleId: string, frdRoleId: string ) {
|
||||||
let result: FriendRelationType = await FriendRelationModel.findOneAndUpdate({ roleId }, {
|
let result: FriendRelationType = await FriendRelationModel.findOneAndUpdate({ roleId }, {
|
||||||
$pull: { blacklist: { roleId: frdRoleId } }
|
$pull: { blacklist: { roleId: frdRoleId } },
|
||||||
}, { new: true });
|
$setOnInsert: { friends: [] }
|
||||||
|
}, { upsert: true, new: true });
|
||||||
return result
|
return result
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -60,7 +60,7 @@ export const FRIEND = {
|
|||||||
FRIEND_CLOSEPOINT_ADD: 5, // 每赠送/领取一次增加的亲密度
|
FRIEND_CLOSEPOINT_ADD: 5, // 每赠送/领取一次增加的亲密度
|
||||||
FRIEND_FRIENDPOINT_ADD: 1, // 每领取一次爱心会增加的情谊值
|
FRIEND_FRIENDPOINT_ADD: 1, // 每领取一次爱心会增加的情谊值
|
||||||
FRIEND_RECONMMEND_LEVEL: 5, // 系统推荐玩家等级要求浮动
|
FRIEND_RECONMMEND_LEVEL: 5, // 系统推荐玩家等级要求浮动
|
||||||
FRIEND_RECONMMEND_ACTIVETIME: 24, // 系统推荐玩家活跃时间要求(小时)
|
FRIEND_RECONMMEND_ACTIVETIME: 1000, // 系统推荐玩家活跃时间要求(小时)
|
||||||
FRIEND_BLACKLIST_MAX: 100, // 黑名单人数上限
|
FRIEND_BLACKLIST_MAX: 100, // 黑名单人数上限
|
||||||
FRIEND_MANAGE_APPLICATION: 50, // 好友显示收到的申请条数上限
|
FRIEND_MANAGE_APPLICATION: 50, // 好友显示收到的申请条数上限
|
||||||
FRIEND_RECEIVE_SINGLE: 1, // 向单个好友每日最多赠送多少爱心
|
FRIEND_RECEIVE_SINGLE: 1, // 向单个好友每日最多赠送多少爱心
|
||||||
|
|||||||
Reference in New Issue
Block a user