排行榜:团长信息

This commit is contained in:
luying
2022-05-17 22:55:57 +08:00
parent 381c5f4eda
commit a538c9076d
8 changed files with 37 additions and 7 deletions

View File

@@ -263,7 +263,7 @@ export class AuctionHandler {
const userGuild = await UserGuildModel.createUserGuild(guild.code, role, true);
if (!userGuild) return resResult(STATUS.GUILD_CREATE_ERROR);
await RoleModel.joinGuild(roleId, guild.code, guild.name);
await RoleModel.joinGuild(roleId, guild.code, guild.name, true);
await UserGuildApplyModel.deleteApply(roleId); // 删除玩家所有对其他公会的申请
guildCode = guild.code;
session.set('guildCode', guildCode);

View File

@@ -78,7 +78,7 @@ export class GuildHandler {
const userGuild = await UserGuildModel.createUserGuild(guild.code, role, true);
if (!userGuild) return resResult(STATUS.GUILD_CREATE_ERROR);
await RoleModel.joinGuild(roleId, guild.code, guild.name);
await RoleModel.joinGuild(roleId, guild.code, guild.name, true);
await UserGuildApplyModel.deleteApply(roleId); // 删除玩家所有对其他公会的申请
// 加入排行
@@ -231,6 +231,8 @@ export class GuildHandler {
let myUserGuild = await UserGuildModel.updateInfo(roleId, { auth: GUILD_AUTH.MEMBER, job: GUILD_JOB.SHIBING }, {}); // 自己降权限
setUserGuildSession(session, myUserGuild);
await updateUserInfo(REDIS_KEY.GUILD_INFO, code, [{ field: 'leader', value: new GuildLeader(role) }]);
await RoleModel.updateRoleInfo(memberRoleId, { isGuildLeader: true });
await RoleModel.updateRoleInfo(roleId, { isGuildLeader: false });
}
guild = await GuildModel.updateInfo(code, updateObject, { managerCnt: managerCntInc }, 'managerCnt code name'); // 如果有转让团长设置leader
@@ -704,6 +706,8 @@ export class GuildHandler {
await sendMailByContent(MAIL_TYPE.GUILD_BE_SET_LEADER, topUser.roleId, { sendName: roleName, params: [guild.name] });
await updateUserInfo(REDIS_KEY.GUILD_INFO, code, [{ field: 'leader', value: new GuildLeader(topUser) }]);
await RoleModel.updateRoleInfo(leaderRoleId, { isGuildLeader: false });
await RoleModel.updateRoleInfo(topUser.roleId, { isGuildLeader: true });
reportTAEvent(roleId, TA_EVENT.GUILD_MASTER_CHANGE, { way: GUILD_MASTER_CHANGE_WAY.IMPEACH, change_id_after: topUser.roleId }, ip)
let isOnline = await isRoleOnline(topUser.roleId);

View File

@@ -27,6 +27,7 @@ import { checkFilterWords, reportTAEvent, treatRoleName } from '../../../service
import { createHeroes } from '../../../services/role/createHero';
import { calculateCeWithHero, calculateCeWithRole } from '../../../services/playerCeService';
import { sendMessageToUserWithSuc } from '../../../services/pushService';
import { GuildLeader } from '../../../domain/rank';
export default function (app: Application) {
new HandlerService(app, {});
@@ -353,6 +354,7 @@ export class RoleHandler {
async setHead(msg: { id: number }, session: BackendSession) {
let { id } = msg;
let roleId = session.get('roleId');
let guildCode = session.get('guildCode');
let role = await RoleModel.findByRoleId(roleId, ROLE_SELECT.GET_HEADS);
if (!role) return resResult(STATUS.ROLE_NOT_FOUND);
@@ -370,6 +372,9 @@ export class RoleHandler {
role = await RoleModel.updateRoleInfo(roleId, { heads });
await updateUserInfo(REDIS_KEY.USER_INFO, roleId, [{ field: 'head', value: id }]);
if(role.isGuildLeader) {
await updateUserInfo(REDIS_KEY.GUILD_INFO, guildCode, [{ field: 'leader', value: new GuildLeader(role) }]);
}
return resResult(STATUS.SUCCESS, { heads: role.heads, head: role.head });
}
@@ -378,6 +383,7 @@ export class RoleHandler {
async setFrame(msg: { id: number }, session: BackendSession) {
let { id } = msg;
let roleId = session.get('roleId');
let guildCode = session.get('guildCode');
let role = await RoleModel.findByRoleId(roleId, ROLE_SELECT.GET_HEADS);
if (!role) return resResult(STATUS.ROLE_NOT_FOUND);
@@ -395,6 +401,9 @@ export class RoleHandler {
role = await RoleModel.updateRoleInfo(roleId, { frames });
await updateUserInfo(REDIS_KEY.USER_INFO, roleId, [{ field: 'frame', value: id }]);
if(role.isGuildLeader) {
await updateUserInfo(REDIS_KEY.GUILD_INFO, guildCode, [{ field: 'leader', value: new GuildLeader(role) }]);
}
return resResult(STATUS.SUCCESS, { frames: role.frames, frame: role.frame });
}
@@ -403,6 +412,7 @@ export class RoleHandler {
async setSpine(msg: { id: number }, session: BackendSession) {
let { id } = msg;
let roleId = session.get('roleId');
let guildCode = session.get('guildCode');
let role = await RoleModel.findByRoleId(roleId, ROLE_SELECT.GET_HEADS);
if (!role) return resResult(STATUS.ROLE_NOT_FOUND);
@@ -420,6 +430,9 @@ export class RoleHandler {
role = await RoleModel.updateRoleInfo(roleId, { spines });
await updateUserInfo(REDIS_KEY.USER_INFO, roleId, [{ field: 'spine', value: id }]);
if(role.isGuildLeader) {
await updateUserInfo(REDIS_KEY.GUILD_INFO, guildCode, [{ field: 'leader', value: new GuildLeader(role) }]);
}
return resResult(STATUS.SUCCESS, { spines: role.spines, spine: role.spine });
}
@@ -429,6 +442,7 @@ export class RoleHandler {
let { roleName } = msg;
let roleId = session.get('roleId');
let serverId = session.get('serverId');
let guildCode = session.get('guildCode');
let sid = session.get('sid');
if(!roleName) return resResult(STATUS.WRONG_PARMS);
@@ -446,6 +460,9 @@ export class RoleHandler {
session.set('roleName', role.roleName);
session.push('roleName', () => { });
await updateUserInfo(REDIS_KEY.USER_INFO, roleId, [{ field: 'roleName', value: roleName }]);
if(role.isGuildLeader) {
await updateUserInfo(REDIS_KEY.GUILD_INFO, guildCode, [{ field: 'leader', value: new GuildLeader(role) }]);
}
return resResult(STATUS.SUCCESS, { roleName: role.roleName, renameCnt: role.renameCnt });
}

View File

@@ -91,7 +91,7 @@ export async function joinGuild(code: string, guildName: string, lv: number, rol
let res: any = await lockData(serverId, DATA_NAME.JOIN_GUILD, code);// 加锁
if (!!res.err) return { status: -1, resResult: resResult(STATUS.REDLOCK_ERR) };
const result = await RoleModel.joinGuild(roleId, code, guildName);
const result = await RoleModel.joinGuild(roleId, code, guildName, false);
if (!result) {
res.releaseCallback();//解锁
return { status: -1, resResult: resResult(STATUS.GUILD_HAS_JOIN) };

View File

@@ -12,7 +12,7 @@ import { checkTask } from './task/taskService';
import { RScriptRecordModel } from '../db/RScriptRecord';
import { setAp } from './actionPointService';
import { resResult } from '../pubUtils/util';
import { LineupParam } from '../domain/rank';
import { GuildLeader, LineupParam } from '../domain/rank';
import { WarStar } from '../domain/dbGeneral';
import { uniq } from 'underscore';
import { checkPopUpCondition } from './activity/popUpShopService';
@@ -41,6 +41,9 @@ export async function roleLevelup(type: KING_EXP_RATIO_TYPE, roleId: string, kin
if (newLv > lv) { // 升级
// await switchOnFunc(roleId, FUNC_OPT_TYPE.LEVEL_UP, newLv, session);
await updateUserInfo(REDIS_KEY.USER_INFO, roleId, [{ field: 'lv', value: newLv }]);
if(role.isGuildLeader) {
await updateUserInfo(REDIS_KEY.GUILD_INFO, role.guildCode, [{ field: 'leader', value: new GuildLeader(role) }]);
}
let r = new Rank(REDIS_KEY.USER_LV, { serverId: role.serverId });
await r.setRankWithRoleInfo(roleId, newLv, Date.now(), role);

View File

@@ -20,6 +20,7 @@ import { SurveyRecModel } from "../db/SurveyRec";
import { SurveyModel } from "../db/Survery";
import { pushGuildInfoUpdate } from "./guildService";
import { sendMessageToUserWithSuc } from "./pushService";
import { GuildLeader } from "../domain/rank";
// 检查私聊是否合法
@@ -113,6 +114,9 @@ export async function treatRoleName(roleId: string, isDebug?: boolean) {
await RoleModel.updateRoleInfo(roleId, { roleName: newName, sdkMark: false });
// 通知处理
await updateUserInfo(REDIS_KEY.USER_INFO, roleId, [{ field: 'roleName', value: newName }]); // redis缓存
if(role.isGuildLeader) {
await updateUserInfo(REDIS_KEY.GUILD_INFO, role.guildCode, [{ field: 'leader', value: new GuildLeader(role) }]);
}
const { sid } = await getRoleOnlineInfo(roleId);
if(!!sid) {
await pinus.app.rpc.connector.connectorRemote.setOtherUserSession.toServer(sid,[{ roleId, roleName: newName }]); // 改session

View File

@@ -12,7 +12,7 @@ export enum ROLE_SELECT {
GET_ROLE_ID = 'roleId roleName lv head frame spine heads frames spines ce title friendCnt serverId userInfo.serverType',
GET_MY_SERVER = 'lv serverId userInfo.serverType',
COM_BATTLE = 'lv head frame spine heads frames spines topLineupCe',
GET_HEADS = 'heads head frames frame spines spine',
GET_HEADS = 'heads head frames frame spines spine isGuildLeader roleId roleName lv ce title',
// 排行榜基础数据
RANK = 'roleId roleName lv vLv head frame spine heads frames spines title guildName ce topLineup towerLv towerUpTime topLineupCe heroNum updatedAt heroNumUpdatedAt dungeonWarId dungeonUpdatedAt dungeonHeroes mainWarId mainUpdatedAt mainEliteWarId mainEliteUpdatedAt showLineup hasGuild',
};

View File

@@ -264,6 +264,8 @@ export default class Role extends BaseModel {
guildCode: string; // 加入的军团code
@prop({ required: true, default: "" })
guildName: string; // 加入的军团名
@prop({ required: true, default: false })
isGuildLeader: boolean; // 是否是团长
// 好友
@prop({ required: true, default: 0 })
@@ -582,8 +584,8 @@ export default class Role extends BaseModel {
}
// 记录加入公会
public static async joinGuild(roleId: string, guildCode: string, guildName: string) {
const result = await RoleModel.findOneAndUpdate({ roleId, hasGuild: false }, { hasGuild: true, guildCode, guildName }, { new: true }).lean();
public static async joinGuild(roleId: string, guildCode: string, guildName: string, isGuildLeader: boolean) {
const result = await RoleModel.findOneAndUpdate({ roleId, hasGuild: false }, { $set: { hasGuild: true, guildCode, guildName, isGuildLeader } }, { new: true }).lean();
return result;
}