import { gameData } from "../pubUtils/data"; import { GuildModel } from "../db/Guild"; import { resResult } from "../pubUtils/util"; import { STATUS } from "../consts"; import { RoleModel } from "../db/Role"; import { UserGuildModel, UserGuildType } from "../db/UserGuild"; import { UserGuildApplyModel } from "../db/UserGuildApply"; import { GuildRecModel } from "../db/GuildRec"; /** * @description 检查该玩家是否有权限做操作 * @param func 操作id * @param auth 权限 */ export async function checkAuth(func: number, roleId: string, code?: string, userGuild?: UserGuildType) { const auth = await UserGuildModel.getMyAuth(roleId, code, userGuild); const dicGuildAuth = gameData.guildAuth.get(func); if(!dicGuildAuth) return false; return dicGuildAuth.includes(auth); } /** * @description 加入公会 * @param code 公会code * @param lv 公会当前等级,判断人数用 * @param roleId 加入的玩家 */ export async function joinGuild(code: string, lv: number, roleId: string, serverId: number) { // TODO 加redlock const result = await RoleModel.joinGuild(roleId); if(!result) { return { status: 0, resResult: resResult(STATUS.GUILD_HAS_JOIN) }; } const dicCenterBase = gameData.centerBase.get(lv); if(!dicCenterBase) { return { status: 0, resResult: resResult(STATUS.DIC_DATA_NOT_FOUND) }; } const maxMemberCnt = dicCenterBase.peopleNum; const guild = await GuildModel.addGuild(code, roleId, maxMemberCnt, serverId); if(!guild) { return { status: 0, resResult: resResult(STATUS.GUILD_MEMBER_MAX) }; } const role = await RoleModel.findByRoleId(roleId); const userGuild = await UserGuildModel.createUserGuild(guild.code, role, false); if(!userGuild) { return { status: 0, resResult: resResult(STATUS.GUILD_CREATE_ERROR) }; } await UserGuildApplyModel.deleteApply(roleId); // 删除玩家所有对其他公会的申请 return { status: 1, guild, userGuild, roleName: role.roleName } } export async function costFund(code: string, cost: number, sid: string) { const guild = await GuildModel.costFund(code, cost); // TODO 推送 return guild; }