军团:修改信息
This commit is contained in:
@@ -11,6 +11,7 @@ import { getGoldObject } from '../../../pubUtils/itemUtils';
|
||||
import { getSeconds, nowSeconds } from '../../../pubUtils/timeUtil';
|
||||
import { GuildListInfo } from '../../../pubUtils/interface';
|
||||
import { UserGuildApplyModel } from '../../../db/UserGuildApply';
|
||||
import User from '../../../db/User';
|
||||
|
||||
export default function (app: Application) {
|
||||
return new GuildHandler(app);
|
||||
@@ -92,6 +93,86 @@ export class GuildHandler {
|
||||
return resResult(STATUS.SUCCESS, { quitTime, list });
|
||||
}
|
||||
|
||||
// 团长修改军团名等信息
|
||||
async setGuildInfo(msg: { code: string, name: string, notice: string, introduce: string, ceLimit: number, isAuto: boolean }, session: BackendSession) {
|
||||
|
||||
const roleId = session.get('roleId');
|
||||
const { code, name, notice, introduce, ceLimit, isAuto } = msg;
|
||||
|
||||
const checkResult = await checkAuth(GUILD_OPERATE.SET_INFO, roleId, code);
|
||||
if(!checkResult) return resResult(STATUS.GUILD_AUTH_NOT_ENOUGH);
|
||||
|
||||
const select = ['code', 'name', 'notice', 'introduce', 'ceLimit', 'isAuto', 'icon'];
|
||||
const guild = await GuildModel.updateInfo(code, { name, notice, introduce, ceLimit, isAuto }, {}, select.join(' '));
|
||||
// 返回
|
||||
return resResult(STATUS.SUCCESS, { ...guild });
|
||||
|
||||
}
|
||||
|
||||
// 游客查看军团详细信息
|
||||
async getGuildInfo(msg: { code: string }, session: BackendSession) {
|
||||
|
||||
const roleId = session.get('roleId');
|
||||
const serverId = session.get('serverId');
|
||||
const { code } = msg;
|
||||
|
||||
const checkResult = await checkAuth(GUILD_OPERATE.GET_GUILD_INFO, roleId, code);
|
||||
if(!checkResult) return resResult(STATUS.GUILD_AUTH_NOT_ENOUGH);
|
||||
|
||||
const select = ['code', 'name', 'notice', 'ceLimit', 'isAuto', 'icon', 'lv', 'memberCnt', 'guildCe'];
|
||||
const guild = await GuildModel.findByCode(code, serverId, select.join(' '));
|
||||
let leader = <RoleType>guild.leader;
|
||||
delete guild.leader;
|
||||
// 返回
|
||||
return resResult(STATUS.SUCCESS, { ...guild, leader: leader.roleName });
|
||||
|
||||
}
|
||||
|
||||
// 团长授权头衔
|
||||
async setAuth(msg: { roleId: string, auth: number }, session: BackendSession) {
|
||||
|
||||
const roleId = session.get('roleId');
|
||||
const { roleId: memberRoleId, auth } = msg;
|
||||
|
||||
const myUserGuild = await UserGuildModel.getMyGuild(roleId, 'auth guildCode');
|
||||
const hisUserGuild = await UserGuildModel.getMyGuild(memberRoleId, 'auth guildCode');
|
||||
|
||||
const checkMyResult = await checkAuth(GUILD_OPERATE.SET_AUTH, roleId, null, myUserGuild);
|
||||
if(!checkMyResult) return resResult(STATUS.GUILD_AUTH_NOT_ENOUGH);
|
||||
|
||||
const checkResult = await checkAuth(GUILD_OPERATE.BE_SET_AUTH, memberRoleId, myUserGuild.guildCode, hisUserGuild);
|
||||
if(!checkResult) return resResult(STATUS.GUILD_AUTH_NOT_ENOUGH);
|
||||
|
||||
const { guildCode: code } = myUserGuild;
|
||||
|
||||
if(auth == hisUserGuild.auth) {
|
||||
return resResult(STATUS.GUILD_AUTH_NOT_CHANGE);
|
||||
}
|
||||
|
||||
// TODO 管理员最大数 等策划表
|
||||
|
||||
const userGuild = await UserGuildModel.updateInfo(memberRoleId, { auth }, 'auth'); // 设置权限
|
||||
if(!userGuild) {
|
||||
return resResult(STATUS.GUILD_MEMBER_NOT_FOUND);
|
||||
}
|
||||
let managerCntInc = 0;
|
||||
let updateObject = {};
|
||||
if(auth == GUILD_AUTH.LEADER) { // 转让团长
|
||||
managerCntInc = hisUserGuild.auth == GUILD_AUTH.MANAGER?-1: 0;
|
||||
const role = await RoleModel.findByRoleId(memberRoleId);
|
||||
updateObject['leader'] = role._id;
|
||||
await UserGuildModel.updateInfo(roleId, { auth: GUILD_AUTH.MEMBER }); // 自己降权限
|
||||
} else {
|
||||
managerCntInc = auth == GUILD_AUTH.MANAGER? 1: -1;
|
||||
}
|
||||
const guild = await GuildModel.updateInfo(code, updateObject, { managerCnt: managerCntInc }, 'managerCnt'); // 如果有转让团长设置leader
|
||||
// 返回
|
||||
return resResult(STATUS.SUCCESS, {
|
||||
roleId: memberRoleId, auth: userGuild.auth, managerCnt: guild.managerCnt
|
||||
});
|
||||
|
||||
}
|
||||
|
||||
// 团员获取自己军团详细信息
|
||||
async getMyGuildInfo(msg: { }, session: BackendSession) {
|
||||
|
||||
@@ -234,13 +315,15 @@ export class GuildHandler {
|
||||
const day = getRefTime(new Date(), 0, -3);
|
||||
const d = getSeconds(day);
|
||||
|
||||
const { quitGuildTime: quitTime = 0 } = await RoleModel.findByRoleId(roleId);
|
||||
const allList = await RoleModel.getInviteList(d, serverId);
|
||||
let list = getRandEelm(allList, 10);
|
||||
if(!list.length) list = allList;
|
||||
list = list.map(cur => {
|
||||
return {...cur, ce: reduceCe(cur.ce)}
|
||||
});
|
||||
return resResult(STATUS.SUCCESS, { list });
|
||||
|
||||
return resResult(STATUS.SUCCESS, { quitTime, list });
|
||||
|
||||
}
|
||||
|
||||
@@ -342,13 +425,16 @@ export class GuildHandler {
|
||||
if(checkDetailResult) {
|
||||
select.push('auth', 'honourWeekly');
|
||||
}
|
||||
const list = await UserGuildModel.getListByGuild(code, select.join(' '));
|
||||
const result = list.map(cur => {
|
||||
let list = await UserGuildModel.getListByGuild(code, select.join(' '));
|
||||
let result = list.map(cur => {
|
||||
let role = <RoleType>cur.role;
|
||||
delete role._id;
|
||||
delete cur.role;
|
||||
return { ...cur, ...role, ce: reduceCe(role.ce) };
|
||||
}).sort((a, b) => {
|
||||
});
|
||||
let leader = result.shift();
|
||||
|
||||
result.sort((a, b) => {
|
||||
if(sort == 'honour') {
|
||||
return b.honourWeekly - a.honourWeekly;
|
||||
} else if (sort == 'loginTime') {
|
||||
@@ -358,6 +444,7 @@ export class GuildHandler {
|
||||
}
|
||||
});
|
||||
|
||||
result.unshift(leader);
|
||||
return resResult(STATUS.SUCCESS, { list: result });
|
||||
}
|
||||
|
||||
|
||||
@@ -40,7 +40,7 @@ export enum GUILD_OPERATE {
|
||||
RECEIVE_INVITAION = 7, // 接受邀请
|
||||
GET_MEMBER_LIST_MAIN = 8, // 查看成员主要信息
|
||||
GET_MEMBER_LIST_DETAIL = 9, // 查看团内成员信息
|
||||
GET_MEMBER_LIST_MANAGE = 10, // 管理信息
|
||||
SET_AUTH = 10, // 设置权限
|
||||
SET_INFO = 11, // 修改军团信息
|
||||
GET_APPLY_LIST = 12, // 查看申请列表
|
||||
RECEIVE_APPLY = 13, // 接受申请
|
||||
@@ -57,6 +57,7 @@ export enum GUILD_OPERATE {
|
||||
OPEN_BOSS = 24, // 开启演武台
|
||||
EQUIP_PRODUCE = 25, // 炼器堂研发
|
||||
BE_KICKED = 26, // 被踢出军团
|
||||
BE_SET_AUTH = 27, // 被授权头衔
|
||||
}
|
||||
|
||||
// 军团状态
|
||||
|
||||
@@ -134,7 +134,9 @@ export const STATUS = {
|
||||
GUILD_QUIT_ERROR: { code: 20907, simStr: '退出公会失败' },
|
||||
GUILD_KICK_ERROR: { code: 20908, simStr: '未找到该成员或该成员已退出' },
|
||||
GUILD_QUIT_TIME: { code: 20909, simStr: '退出军团1小时后才可以申请' },
|
||||
GUILD_INVITE_NOT_FOUND: { code: 20910, simStr: '该邀请未找到' },
|
||||
GUILD_INVITE_NOT_FOUND: { code: 20910, simStr: '该邀请未找到' },
|
||||
GUILD_AUTH_NOT_CHANGE: { code: 20911, simStr: '权限未发生变化' },
|
||||
GUILD_MEMBER_NOT_FOUND: { code: 20912, simStr: '未找到该成员' },
|
||||
|
||||
// 通用 30000 - 30099
|
||||
DIC_DATA_NOT_FOUND: { code: 30000, simStr: '数据表未找到' },
|
||||
|
||||
@@ -114,8 +114,9 @@ export default class Guild extends BaseModel {
|
||||
return guildList;
|
||||
}
|
||||
|
||||
public static async findByCode(code: string, serverId: number) {
|
||||
public static async findByCode(code: string, serverId: number, select?: string) {
|
||||
const result = await GuildModel.findOne({ code, status: GUILD_STATUS.RUNNING, serverId })
|
||||
.select(select)
|
||||
.populate('leader', 'roleName sHid headHid lv loginTime ce', 'Role')
|
||||
.lean();
|
||||
return result;
|
||||
@@ -131,14 +132,17 @@ export default class Guild extends BaseModel {
|
||||
|
||||
public static async dismiss(code: string, serverId: number) {
|
||||
const result = await GuildModel.findOneAndUpdate({ code, status: GUILD_STATUS.RUNNING, serverId }, { status: GUILD_STATUS.DISMISSED }, { new: true })
|
||||
.select('+members')
|
||||
.lean();
|
||||
.select('+members').lean();
|
||||
return result;
|
||||
}
|
||||
|
||||
public static async quit(code: string, roleId: string, serverId: number) {
|
||||
const result = await GuildModel.findOneAndUpdate({ code, serverId }, { $inc: { memberCnt: -1}, $pull: { members: roleId }, isMemberMax: false }, { new: true })
|
||||
.lean();
|
||||
const result = await GuildModel.findOneAndUpdate({ code, serverId }, { $inc: { memberCnt: -1}, $pull: { members: roleId }, isMemberMax: false }, { new: true }).lean();
|
||||
return result;
|
||||
}
|
||||
|
||||
public static async updateInfo(code: string, update: GuildUpdateParam, incParam: { managerCnt?: number }, select?: string) {
|
||||
const result = await GuildModel.findOneAndUpdate({ code }, { $set: update, $inc: incParam }, { new: true }).select(select).lean();
|
||||
return result;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -64,6 +64,7 @@ export default class UserGuild extends BaseModel {
|
||||
public static async getListByGuild(guildCode: string, select?: string) {
|
||||
const userGuilds: UserGuildType[] = await UserGuildModel.find({ guildCode, status: USER_GUILD_STATUS.ON })
|
||||
.select(select)
|
||||
.sort({ auth: 1 })
|
||||
.populate('role', 'roleId roleName ce headHid sHid lv title loginTime', 'Role')
|
||||
.lean();
|
||||
return userGuilds;
|
||||
@@ -93,6 +94,11 @@ export default class UserGuild extends BaseModel {
|
||||
const result = await UserGuildModel.findOneAndUpdate({ guildCode, roleId, status: USER_GUILD_STATUS.ON }, {status: USER_GUILD_STATUS.QUIT}, {new: true});
|
||||
return result;
|
||||
}
|
||||
|
||||
public static async updateInfo(roleId: string, update: UserGuildUpdateParam, select?: string) {
|
||||
const result = await UserGuildModel.findOneAndUpdate({ roleId, status: USER_GUILD_STATUS.ON }, { $set: update }, { new: true }).select(select).lean();
|
||||
return result;
|
||||
}
|
||||
}
|
||||
|
||||
export const UserGuildModel = getModelForClass(UserGuild);
|
||||
|
||||
@@ -22,5 +22,6 @@
|
||||
{"id": 21, "auths": "2&3"},
|
||||
{"id": 22, "auths": "1&2"},
|
||||
{"id": 23, "auths": "1&2&3"},
|
||||
{"id": 26, "auths": "2&3"}
|
||||
{"id": 26, "auths": "2&3"},
|
||||
{"id": 27, "auths": "2&3"}
|
||||
]
|
||||
Reference in New Issue
Block a user