好友:添加区服信息
This commit is contained in:
@@ -68,6 +68,7 @@ app.configure(function() {
|
|||||||
redlockCacheService.init();
|
redlockCacheService.init();
|
||||||
// TODO 重启 1 次只需要初始化 1 次,判断方法可以优化
|
// TODO 重启 1 次只需要初始化 1 次,判断方法可以优化
|
||||||
if (app.serverId === 'master-server-1') {
|
if (app.serverId === 'master-server-1') {
|
||||||
|
redisService.readDataBase();
|
||||||
redisService.initAllRank();
|
redisService.initAllRank();
|
||||||
redisService.clearComBtlQueue();
|
redisService.clearComBtlQueue();
|
||||||
updateTeamStatus(COM_TEAM_STATUS.DEFAULT, COM_TEAM_STATUS.LOOSE);
|
updateTeamStatus(COM_TEAM_STATUS.DEFAULT, COM_TEAM_STATUS.LOOSE);
|
||||||
|
|||||||
@@ -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 } from "../../../services/redisService";
|
import { isRoleOnline, getServerName } 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";
|
||||||
@@ -46,6 +46,11 @@ export class FriendHandler {
|
|||||||
if(type == FRIEND_RELATION_TYPE.NORMAL) {
|
if(type == FRIEND_RELATION_TYPE.NORMAL) {
|
||||||
let param = new FriendRecommendParams(role);
|
let param = new FriendRecommendParams(role);
|
||||||
param.setType(type);
|
param.setType(type);
|
||||||
|
|
||||||
|
let { serverId, userInfo: { serverType }} = role;
|
||||||
|
let serverName = await getServerName(serverType, serverId);
|
||||||
|
param.setServerName(serverId, serverName);
|
||||||
|
|
||||||
paramAllList.push(param);
|
paramAllList.push(param);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -70,6 +75,11 @@ export class FriendHandler {
|
|||||||
let type = getRecommendType(myFriendRelation, roleId, role.roleId);
|
let type = getRecommendType(myFriendRelation, roleId, role.roleId);
|
||||||
let param = new FriendRecommendParams(role);
|
let param = new FriendRecommendParams(role);
|
||||||
param.setType(type);
|
param.setType(type);
|
||||||
|
|
||||||
|
let { serverId, userInfo: { serverType }} = role;
|
||||||
|
let serverName = await getServerName(serverType, serverId);
|
||||||
|
param.setServerName(serverId, serverName);
|
||||||
|
|
||||||
list.push(param);
|
list.push(param);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -122,6 +132,11 @@ export class FriendHandler {
|
|||||||
for(let apply of list) {
|
for(let apply of list) {
|
||||||
let friend = <RoleType>apply.friend;
|
let friend = <RoleType>apply.friend;
|
||||||
let param = new FriendApplyParams(apply.applyCode, friend);
|
let param = new FriendApplyParams(apply.applyCode, friend);
|
||||||
|
|
||||||
|
let { serverId, userInfo: { serverType }} = friend;
|
||||||
|
let serverName = await getServerName(serverType, serverId);
|
||||||
|
param.setServerName(serverId, serverName);
|
||||||
|
|
||||||
result.push(param);
|
result.push(param);
|
||||||
}
|
}
|
||||||
return resResult(STATUS.SUCCESS, {
|
return resResult(STATUS.SUCCESS, {
|
||||||
@@ -173,6 +188,10 @@ export class FriendHandler {
|
|||||||
let isOnline = await isRoleOnline(friend.roleId);
|
let isOnline = await isRoleOnline(friend.roleId);
|
||||||
param.setOnline(isOnline);
|
param.setOnline(isOnline);
|
||||||
|
|
||||||
|
let { serverId, userInfo: { serverType }} = friend;
|
||||||
|
let serverName = await getServerName(serverType, serverId);
|
||||||
|
param.setServerName(serverId, serverName);
|
||||||
|
|
||||||
list.push(param);
|
list.push(param);
|
||||||
resultApplyCodeList.push(apply.applyCode);
|
resultApplyCodeList.push(apply.applyCode);
|
||||||
}
|
}
|
||||||
@@ -200,18 +219,22 @@ export class FriendHandler {
|
|||||||
let myRelation = await FriendRelationModel.findFriendByRole(roleId, POPULATE_TYPE.FRIEND);
|
let myRelation = await FriendRelationModel.findFriendByRole(roleId, POPULATE_TYPE.FRIEND);
|
||||||
let friendList = myRelation?myRelation.friends: [];
|
let friendList = myRelation?myRelation.friends: [];
|
||||||
for(let friend of friendList) {
|
for(let friend of friendList) {
|
||||||
let role = <RoleType>friend.role;
|
let friendRole = <RoleType>friend.role;
|
||||||
let friendShip = <FriendShipType>friend.friendShip;
|
let friendShip = <FriendShipType>friend.friendShip;
|
||||||
if(!role || !friendShip) continue;
|
if(!friendRole || !friendShip) continue;
|
||||||
|
|
||||||
let fs = <FriendShipType>friend.friendShip;
|
let fs = <FriendShipType>friend.friendShip;
|
||||||
let ref = shouldRefresh(fs.refTime, new Date(), 0);
|
let ref = shouldRefresh(fs.refTime, new Date(), 0);
|
||||||
if(ref) {
|
if(ref) {
|
||||||
friendShip = await FriendShipModel.refreshSendAndReceive(roleId, role.roleId);
|
friendShip = await FriendShipModel.refreshSendAndReceive(roleId, friendRole.roleId);
|
||||||
}
|
}
|
||||||
|
|
||||||
let param = new FriendListParam(role, roleId, friendShip);
|
let param = new FriendListParam(friendRole, roleId, friendShip);
|
||||||
let isOnline = await isRoleOnline(role.roleId);
|
let { serverId, userInfo: { serverType }} = friendRole;
|
||||||
|
let serverName = await getServerName(serverType, serverId);
|
||||||
|
param.setServerName(serverId, serverName);
|
||||||
|
|
||||||
|
let isOnline = await isRoleOnline(friendRole.roleId);
|
||||||
param.setOnline(isOnline);
|
param.setOnline(isOnline);
|
||||||
|
|
||||||
list.push(param);
|
list.push(param);
|
||||||
@@ -238,11 +261,15 @@ export class FriendHandler {
|
|||||||
let myRelation = await FriendRelationModel.findFriendByRole(roleId, POPULATE_TYPE.BLACKLIST);
|
let myRelation = await FriendRelationModel.findFriendByRole(roleId, POPULATE_TYPE.BLACKLIST);
|
||||||
let blacklist = myRelation?myRelation.blacklist: [];
|
let blacklist = myRelation?myRelation.blacklist: [];
|
||||||
for(let bl of blacklist) {
|
for(let bl of blacklist) {
|
||||||
let role = <RoleType>bl.role;
|
let friendRole = <RoleType>bl.role;
|
||||||
if(!role) continue;
|
if(!friendRole) continue;
|
||||||
let param = new BlackListParam(role);
|
let param = new BlackListParam(friendRole);
|
||||||
let isOnline = await isRoleOnline(role.roleId);
|
let isOnline = await isRoleOnline(friendRole.roleId);
|
||||||
param.setOnline(isOnline);
|
param.setOnline(isOnline);
|
||||||
|
|
||||||
|
let { serverId, userInfo: { serverType }} = friendRole;
|
||||||
|
let serverName = await getServerName(serverType, serverId);
|
||||||
|
param.setServerName(serverId, serverName);
|
||||||
|
|
||||||
list.push(param);
|
list.push(param);
|
||||||
|
|
||||||
@@ -264,8 +291,8 @@ export class FriendHandler {
|
|||||||
|
|
||||||
let role = await RoleModel.findByRoleId(roleId);
|
let role = await RoleModel.findByRoleId(roleId);
|
||||||
|
|
||||||
let str = '', list = new Array<BlackListParam>();
|
let str = '', list = new Array<BlackListParam>(), frdRoleIds = new Array<string>(), blackRoleIds = new Array<string>();
|
||||||
if(type == BLOCK_OPEATE.ADD) {
|
if(type == BLOCK_OPEATE.ADD) { // 拉黑
|
||||||
let myRelation = await FriendRelationModel.findFriendByRole(roleId, POPULATE_TYPE.FRIEND);
|
let myRelation = await FriendRelationModel.findFriendByRole(roleId, POPULATE_TYPE.FRIEND);
|
||||||
let friends = myRelation?myRelation.friends: [];
|
let friends = myRelation?myRelation.friends: [];
|
||||||
let blacklist = myRelation?myRelation.blacklist: [];
|
let blacklist = myRelation?myRelation.blacklist: [];
|
||||||
@@ -294,11 +321,42 @@ export class FriendHandler {
|
|||||||
await FriendRelationModel.moveFromFriend(roleId, friend, friendShip, true); // 删除好友关系并拉黑
|
await FriendRelationModel.moveFromFriend(roleId, friend, friendShip, true); // 删除好友关系并拉黑
|
||||||
|
|
||||||
let param = new BlackListParam(friend);
|
let param = new BlackListParam(friend);
|
||||||
let isOnline = await isRoleOnline(role.roleId);
|
let isOnline = await isRoleOnline(friend.roleId);
|
||||||
param.setOnline(isOnline);
|
param.setOnline(isOnline);
|
||||||
list.push(param);
|
|
||||||
|
|
||||||
} else if(type == BLOCK_OPEATE.REMOVE || type == BLOCK_OPEATE.REMOVE_AND_APPLY){
|
let { serverId, userInfo: { serverType }} = friend;
|
||||||
|
let serverName = await getServerName(serverType, serverId);
|
||||||
|
param.setServerName(serverId, serverName);
|
||||||
|
|
||||||
|
list.push(param);
|
||||||
|
frdRoleIds.push(roleId);
|
||||||
|
} else if (type == BLOCK_OPEATE.REMOVE_FRIEND) { // 仅移除
|
||||||
|
|
||||||
|
let myRelation = await FriendRelationModel.findFriendByRole(roleId, POPULATE_TYPE.FRIEND);
|
||||||
|
let friends = myRelation?myRelation.friends: [];
|
||||||
|
let curFriend = friends.find(cur => cur.roleId == hisRoleId);
|
||||||
|
if(!curFriend) {
|
||||||
|
return resResult(STATUS.FRIEND_NOT_FOUND);
|
||||||
|
}
|
||||||
|
|
||||||
|
role = await RoleModel.increaseFriendCnt(roleId, -1); // 减少好友
|
||||||
|
if(!role) {
|
||||||
|
return resResult(STATUS.FRIEND_NOT_FOUND)
|
||||||
|
}
|
||||||
|
await RoleModel.increaseFriendCnt(hisRoleId, -1); // 对方好友减少
|
||||||
|
|
||||||
|
let friend: RoleType, friendShip: FriendShipType;
|
||||||
|
|
||||||
|
await FriendShipModel.clearValue([roleId, hisRoleId]);
|
||||||
|
friend = <RoleType>curFriend.role;
|
||||||
|
friendShip = <FriendShipType>curFriend.friendShip;
|
||||||
|
|
||||||
|
await FriendRelationModel.moveFromFriend(hisRoleId, role, friendShip, false); //从对方好友删除
|
||||||
|
await FriendRelationModel.moveFromFriend(roleId, friend, friendShip, false); // 删除好友关系并拉黑
|
||||||
|
|
||||||
|
frdRoleIds.push(roleId);
|
||||||
|
|
||||||
|
} else if(type == BLOCK_OPEATE.REMOVE_BLACK || type == BLOCK_OPEATE.REMOVE_AND_APPLY){
|
||||||
let myRelation = await FriendRelationModel.findFriendByRole(roleId, POPULATE_TYPE.BLACKLIST);
|
let myRelation = await FriendRelationModel.findFriendByRole(roleId, POPULATE_TYPE.BLACKLIST);
|
||||||
let blacklist = myRelation?myRelation.blacklist: [];
|
let blacklist = myRelation?myRelation.blacklist: [];
|
||||||
|
|
||||||
@@ -322,6 +380,7 @@ export class FriendHandler {
|
|||||||
await FriendApplyModel.createApply(hisRoleId, role);
|
await FriendApplyModel.createApply(hisRoleId, role);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
blackRoleIds.push(roleId);
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
return resResult(STATUS.WRONG_PARMS);
|
return resResult(STATUS.WRONG_PARMS);
|
||||||
@@ -330,6 +389,7 @@ export class FriendHandler {
|
|||||||
let { friendCnt = 0, blockCnt = 0 } = role;
|
let { friendCnt = 0, blockCnt = 0 } = role;
|
||||||
|
|
||||||
return resResult(STATUS.SUCCESS, {
|
return resResult(STATUS.SUCCESS, {
|
||||||
|
frdRoleIds, blackRoleIds,
|
||||||
isSuccess: str == '',
|
isSuccess: str == '',
|
||||||
msg: str,
|
msg: str,
|
||||||
list,
|
list,
|
||||||
|
|||||||
@@ -378,3 +378,28 @@ export async function sremAsync(key:string, member:string) {
|
|||||||
await client.sremAsync(key, member);
|
await client.sremAsync(key, member);
|
||||||
}
|
}
|
||||||
/**************** 寻宝相关 end */
|
/**************** 寻宝相关 end */
|
||||||
|
|
||||||
|
/**************** 数据库表存入缓存 */
|
||||||
|
|
||||||
|
export async function readDataBase() {
|
||||||
|
await setServerList();
|
||||||
|
}
|
||||||
|
|
||||||
|
async function setServerList() {
|
||||||
|
const client: Redis.RedisClient = pinus.app.get('redis');
|
||||||
|
const serverList = await GameModel.getAllServerList();
|
||||||
|
await client.delAsync(REDIS_KEY.DB_GAME);
|
||||||
|
|
||||||
|
for(let { id, serverType, name } of serverList) {
|
||||||
|
// console.log(roleId);
|
||||||
|
await client.hsetAsync(REDIS_KEY.DB_GAME, `${serverType}_${id}`, name);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
export async function getServerName(serverType: string, serverId: number) {
|
||||||
|
const client: Redis.RedisClient = pinus.app.get('redis');
|
||||||
|
let name = await client.hgetAsync(REDIS_KEY.DB_GAME, `${serverType}_${serverId}`);
|
||||||
|
return name
|
||||||
|
}
|
||||||
|
|
||||||
|
/**************** 数据库表end */
|
||||||
@@ -1,10 +1,10 @@
|
|||||||
|
|
||||||
export enum ROLE_SELECT {
|
export enum ROLE_SELECT {
|
||||||
// 初始登录数据
|
// 初始登录数据
|
||||||
ENTRY = 'serverId userInfo.uid userInfo.tel ce topFiveCe teraphs roleId roleName tili lv exp gold coin vLv title hasGuild',
|
ENTRY = 'serverId userInfo.uid userInfo.tel userInfo.serverType ce topFiveCe teraphs roleId roleName tili lv exp gold coin vLv title hasGuild',
|
||||||
// 玩家列表显示基础数据
|
// 玩家列表显示基础数据
|
||||||
SHOW_SIMPLE = 'roleId roleName ce headHid sHid lv title job quitTime vLv guildName',
|
SHOW_SIMPLE = 'roleId roleName ce headHid sHid lv title job quitTime vLv guildName serverId userInfo.serverType',
|
||||||
SHOW_FRIEND_APPLY_LIST = 'roleId roleName ce headHid sHid lv title job quitTime vLv guildName friendCnt recFrdApplyCnt',
|
SHOW_FRIEND_APPLY_LIST = 'roleId roleName ce headHid sHid lv title job quitTime vLv guildName friendCnt recFrdApplyCnt serverId userInfo.serverType',
|
||||||
HANDLE_APPLY = 'roleId friendCnt lv',
|
HANDLE_APPLY = 'roleId friendCnt lv',
|
||||||
ATTR = 'globalCeAttr',
|
ATTR = 'globalCeAttr',
|
||||||
GET_LV = 'lv',
|
GET_LV = 'lv',
|
||||||
|
|||||||
@@ -223,6 +223,7 @@ export const REDIS_KEY = {
|
|||||||
PVP_RANK: "pvpRank", // pvp排行榜
|
PVP_RANK: "pvpRank", // pvp排行榜
|
||||||
GUILD_INFO: "guildInfo", // 公会信息
|
GUILD_INFO: "guildInfo", // 公会信息
|
||||||
GUILD_ACTIVE_RANK: "guildActiveRank", // 公会周活跃排行榜
|
GUILD_ACTIVE_RANK: "guildActiveRank", // 公会周活跃排行榜
|
||||||
|
DB_GAME: 'db_game'
|
||||||
}
|
}
|
||||||
|
|
||||||
// 各排行榜对应hash的key
|
// 各排行榜对应hash的key
|
||||||
@@ -380,6 +381,7 @@ export enum POPULATE_TYPE {
|
|||||||
|
|
||||||
export enum BLOCK_OPEATE {
|
export enum BLOCK_OPEATE {
|
||||||
ADD = 1,
|
ADD = 1,
|
||||||
REMOVE = 2,
|
REMOVE_BLACK = 2,
|
||||||
REMOVE_AND_APPLY = 3
|
REMOVE_AND_APPLY = 3,
|
||||||
|
REMOVE_FRIEND = 4
|
||||||
}
|
}
|
||||||
@@ -1,7 +1,6 @@
|
|||||||
import { RoleType } from "../../db/Role";
|
import { RoleType } from "../../db/Role";
|
||||||
import { FriendShipType } from "../../db/FriendShip";
|
import { FriendShipType } from "../../db/FriendShip";
|
||||||
import * as friendUtil from '../../pubUtils/friendUtil'
|
import * as friendUtil from '../../pubUtils/friendUtil'
|
||||||
import { Relation } from "../../db/FriendRelation";
|
|
||||||
|
|
||||||
export class FriendParams {
|
export class FriendParams {
|
||||||
roleId: string;
|
roleId: string;
|
||||||
@@ -11,6 +10,8 @@ export class FriendParams {
|
|||||||
sHid: number;
|
sHid: number;
|
||||||
ce: number;
|
ce: number;
|
||||||
title: number;
|
title: number;
|
||||||
|
serverId: number;
|
||||||
|
serverName: string;
|
||||||
|
|
||||||
constructor(role: RoleType) {
|
constructor(role: RoleType) {
|
||||||
this.roleId = role.roleId;
|
this.roleId = role.roleId;
|
||||||
@@ -21,6 +22,11 @@ export class FriendParams {
|
|||||||
this.ce = role.ce;
|
this.ce = role.ce;
|
||||||
this.title = role.title;
|
this.title = role.title;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
setServerName(serverId: number, serverName: string) {
|
||||||
|
this.serverId = serverId;
|
||||||
|
this.serverName = serverName;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
export class FriendRecommendParams extends FriendParams {
|
export class FriendRecommendParams extends FriendParams {
|
||||||
|
|||||||
Reference in New Issue
Block a user