军团:添加踢人解散退出,添加权限

This commit is contained in:
luying
2021-01-20 15:47:57 +08:00
parent ac081059c2
commit 9b6ca78d88
12 changed files with 396 additions and 68 deletions
+30 -14
View File
@@ -7,19 +7,6 @@ import { shouldRefresh } from '../pubUtils/util';
import { initRoleAtrr } from '../pubUtils/playerCe';
import Hero,{} from '../db/Hero';
import { nowSeconds } from '../pubUtils/timeUtil';
interface roleUpdate {
ce?: number;
_id?:number;
coin?: number;
gold?:number;
frdCnt?: number;
expeditionPoint?:number;
globalCeAttr?:CeAttrRole;
title?:number;
teraphs?: Teraph[];
topFive?: TopHero[];
topFiveCe?: number;
}
class TopHero {
@prop({ required: true })
@@ -219,8 +206,10 @@ export default class Role extends BaseModel {
teraphs:Array<Teraph>;
// 公会
@prop({ required: true, default: false })
hasGuild: boolean; // 是否加入过公会
@prop({ required: true, default: 0 })
quitGuildTime: number; // 上次退出公会的时间
quitGuildTime: number; // 上次退出公会的时间
public static async findByUid(uid: number, serverId: number, lean = true) {
const role: RoleType = await RoleModel.findOneAndUpdate({ 'userInfo.uid': uid, serverId }, { loginTime: nowSeconds() }, { new: true }).lean(lean);
@@ -416,8 +405,35 @@ export default class Role extends BaseModel {
let result: RoleType = await RoleModel.findOneAndUpdate({roleId}, {$set:roleUpdate}, {new: true}).lean(lean);
return result;
}
// 记录加入公会
public static async joinGuild(roleId: string) {
const result = await RoleModel.findOneAndUpdate({ roleId, hasGuild: false }, { hasGuild: true }, { new: true }).lean();
return result;
}
// 获取未加入公会且登录时间在三天内的人
public static async getInviteList(time: number) {
const result = await RoleModel.find({ loginTime: { $gt: time }, hasGuild: false })
.select('roleId roleName ce headHid sHid lv title job loginTime')
.limit(100).lean();
return result;
}
// 公会解散
public static async dissmissGuild(members: string[]) {
const result = await RoleModel.updateMany({ roleId: { $in: members } }, { hasGuild: false }).lean();
return result;
}
// 退出公会
public static async quitGuild(roleId: string, now: number) {
const result = await RoleModel.findOneAndUpdate({ roleId, hasGuild: true }, { hasGuild: false, quitGuildTime: now }, { new: true }).lean();
return result;
}
}
export const RoleModel = getModelForClass(Role);
export interface RoleType extends Pick<DocumentType<Role>, keyof Role>{};
type roleUpdate = Partial<RoleType>; // 将所有字段变成可选项