军团:加入军团顺序
This commit is contained in:
@@ -91,20 +91,18 @@ 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, false);
|
||||
if (!result) {
|
||||
let role = await RoleModel.findByRoleId(roleId);
|
||||
if (role.hasGuild) {
|
||||
res.releaseCallback();//解锁
|
||||
return { status: -1, resResult: resResult(STATUS.GUILD_HAS_JOIN) };
|
||||
}
|
||||
await updateUserInfo(REDIS_KEY.USER_INFO, roleId, [{ field: 'guildName', value: guildName }]);
|
||||
|
||||
const dicCenterBase = gameData.centerBase.get(lv);
|
||||
if (!dicCenterBase) {
|
||||
res.releaseCallback();//解锁
|
||||
return { status: -1, resResult: resResult(STATUS.DIC_DATA_NOT_FOUND) };
|
||||
}
|
||||
const maxMemberCnt = dicCenterBase.peopleNum;
|
||||
const guild = await GuildModel.addMember(code, roleId, maxMemberCnt, serverId, result.ce);
|
||||
const guild = await GuildModel.addMember(code, roleId, maxMemberCnt, serverId, role.ce);
|
||||
if (!guild) {
|
||||
res.releaseCallback();//解锁
|
||||
return { status: -1, resResult: resResult(STATUS.GUILD_MEMBER_MAX) };
|
||||
@@ -112,7 +110,14 @@ export async function joinGuild(code: string, guildName: string, lv: number, rol
|
||||
await updateUserInfo(REDIS_KEY.GUILD_INFO, guild.code, [{ field: 'guildCe', value: guild.guildCe }])
|
||||
}
|
||||
|
||||
const role = await RoleModel.findByRoleId(roleId);
|
||||
role = await RoleModel.joinGuild(roleId, code, guildName, false);
|
||||
if (!role) {
|
||||
await GuildModel.notAddMember(code, roleId, role.ce);
|
||||
res.releaseCallback();//解锁
|
||||
return { status: -1, resResult: resResult(STATUS.GUILD_HAS_JOIN) };
|
||||
}
|
||||
await updateUserInfo(REDIS_KEY.USER_INFO, roleId, [{ field: 'guildName', value: guildName }]);
|
||||
|
||||
const userGuild = await UserGuildModel.createUserGuild(guild.code, role, false);
|
||||
if (!userGuild) {
|
||||
res.releaseCallback();//解锁
|
||||
|
||||
@@ -188,6 +188,11 @@ export default class Guild extends BaseModel {
|
||||
return result;
|
||||
}
|
||||
|
||||
public static async notAddMember(code: string, roleId: string, ce: number) {
|
||||
let result: GuildType = await GuildModel.findOneAndUpdate({ code }, { $inc: { memberCnt: -1, guildCe: -ce }, $pull: { members: roleId }, $set: { isMemberMax: false } }, { new: true }).lean({getters: true});
|
||||
return result;
|
||||
}
|
||||
|
||||
public static async dismiss(code: string, serverId: number) {
|
||||
const result: GuildType = await GuildModel.findOneAndUpdate({ code, status: GUILD_STATUS.RUNNING, serverId }, { status: GUILD_STATUS.DISMISSED }, { new: true })
|
||||
.populate('leader', {roleId: 1, _id: 0}, 'Role')
|
||||
|
||||
Reference in New Issue
Block a user