军团相关战力使用get方法
This commit is contained in:
@@ -4,6 +4,7 @@ import Role, { RoleType } from './Role';
|
||||
import { genCode } from '../pubUtils/util';
|
||||
import { GUILD_STRUCTURE, GUILD_STATUS, GUILD_PER_PAGE } from '../consts';
|
||||
import { getCurWeekTime, nowSeconds } from '../pubUtils/timeUtil';
|
||||
import { reduceCe } from '../pubUtils/util';
|
||||
|
||||
class Structure {
|
||||
@prop({ required: true })
|
||||
@@ -66,7 +67,7 @@ export default class Guild extends BaseModel {
|
||||
@prop({ required: true, default: new Date(), select: false })
|
||||
refTimeDaily: Date;
|
||||
|
||||
@prop({ required: true, default: 0 })
|
||||
@prop({ required: true, default: 0, get: (val:number) => reduceCe(val), set: (val: number) => val })
|
||||
guildCe: number; // 总战力
|
||||
|
||||
@prop({ required: true, type: String, default: [], select: false })
|
||||
@@ -98,7 +99,7 @@ export default class Guild extends BaseModel {
|
||||
const result: GuildType = await GuildModel.findOneAndUpdate({ code }, update, { upsert: true, new: true })
|
||||
.select({ _id: 0, __v: 0, createdAt: 0, updatedAt: 0 })
|
||||
.populate('leader', { roleId: 1, roleName: 1, sHid: 1, headHid: 1, lv: 1, quitTime: 1, ce: 1, title: 1, _id: 0 }, 'Role')
|
||||
.lean();
|
||||
.lean({ getters: true });
|
||||
|
||||
return result;
|
||||
}
|
||||
@@ -146,14 +147,14 @@ export default class Guild extends BaseModel {
|
||||
const result: GuildType = await GuildModel.findOne({ code, status: GUILD_STATUS.RUNNING, serverId })
|
||||
.select(select)
|
||||
.populate('leader', {roleId: 1, roleName: 1, sHid: 1, headHid: 1, lv: 1, quitTime: 1, ce: 1, title: 1, _id: 0}, 'Role')
|
||||
.lean();
|
||||
.lean({ getter: false });
|
||||
return result;
|
||||
}
|
||||
|
||||
public static async addGuild(code: string, roleId: string, maxMemberCnt: number, serverId: number, ce: number) {
|
||||
let result: GuildType = await GuildModel.findOneAndUpdate({ code, memberCnt: {$lt: maxMemberCnt }, serverId }, { $inc: { memberCnt: 1, guildCe: ce }, $push: { members: roleId } }, { new: true }).lean();
|
||||
let result: GuildType = await GuildModel.findOneAndUpdate({ code, memberCnt: {$lt: maxMemberCnt }, serverId }, { $inc: { memberCnt: 1, guildCe: ce }, $push: { members: roleId } }, { new: true }).lean({getters: true});
|
||||
if(result && result.memberCnt >= maxMemberCnt) {
|
||||
result = await GuildModel.findOneAndUpdate({ code }, { $set: { isMemberMax: true } }).lean();
|
||||
result = await GuildModel.findOneAndUpdate({ code }, { $set: { isMemberMax: true } }).lean({getters: true});
|
||||
}
|
||||
return result;
|
||||
}
|
||||
@@ -195,7 +196,7 @@ export default class Guild extends BaseModel {
|
||||
}
|
||||
|
||||
public static async updateCe(roleId: string, inc: number ) {
|
||||
const result = await GuildModel.findOneAndUpdate({ members: { $elemMatch: { $eq: roleId } }, status: GUILD_STATUS.RUNNING}, {$inc: {guildCe: inc}}, {new: true}).lean();
|
||||
const result = await GuildModel.findOneAndUpdate({ members: { $elemMatch: { $eq: roleId } }, status: GUILD_STATUS.RUNNING}, {$inc: {guildCe: inc}}, {new: true}).lean({getters: true});
|
||||
return result;
|
||||
}
|
||||
|
||||
|
||||
@@ -212,6 +212,16 @@ export default class Role extends BaseModel {
|
||||
hasGuild: boolean; // 是否加入过公会
|
||||
@prop({ required: true, default: 0 })
|
||||
quitGuildTime: number; // 上次退出公会的时间
|
||||
@prop({ required: true, default: "" })
|
||||
guildCode: string; // 加入的军团code
|
||||
@prop({ required: true, default: "" })
|
||||
guildName: string; // 加入的军团名
|
||||
|
||||
// 好友
|
||||
@prop({ required: true, default: 0 })
|
||||
friendCnt: number; // 好友人数
|
||||
@prop({ required: true, default: 0 })
|
||||
blockCnt: number; // 黑名单人数
|
||||
|
||||
public static async findAllByUid(uid: number, lean = true) {
|
||||
const role: RoleType[] = await RoleModel.find({ 'userInfo.uid': uid }).select('roleId roleName serverId').lean(lean);
|
||||
@@ -245,15 +255,15 @@ export default class Role extends BaseModel {
|
||||
return role;
|
||||
}
|
||||
|
||||
public static async findRoleByField(field: string, value?: Array<number|string>, lean = true) {
|
||||
public static async findRoleByField(field: string, value?: Array<number|string>, select?: string, getters = false) {
|
||||
let searchObj = {};
|
||||
if(field != 'all') {
|
||||
searchObj[field] = {
|
||||
$in: value
|
||||
};
|
||||
searchObj[field] = {
|
||||
$in: value
|
||||
};
|
||||
}
|
||||
//.select('uid tel username')
|
||||
const user: RoleType[] = await RoleModel.find(searchObj).lean(lean);
|
||||
|
||||
const user: RoleType[] = await RoleModel.find(searchObj).select(select).lean({ getters });
|
||||
return user;
|
||||
}
|
||||
|
||||
@@ -420,8 +430,8 @@ export default class Role extends BaseModel {
|
||||
}
|
||||
|
||||
// 记录加入公会
|
||||
public static async joinGuild(roleId: string) {
|
||||
const result = await RoleModel.findOneAndUpdate({ roleId, hasGuild: false }, { hasGuild: true }, { new: true }).lean();
|
||||
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();
|
||||
return result;
|
||||
}
|
||||
|
||||
@@ -430,7 +440,7 @@ export default class Role extends BaseModel {
|
||||
const result = await RoleModel.find({ quitTime: { $gt: time }, hasGuild: false, serverId })
|
||||
.select('roleId roleName ce headHid sHid lv title job quitTime')
|
||||
.sort({quitTime: -1, lv: -1, ce: -1})
|
||||
.limit(100).lean();
|
||||
.limit(100).lean({getters: true});
|
||||
return result;
|
||||
}
|
||||
|
||||
@@ -445,13 +455,19 @@ export default class Role extends BaseModel {
|
||||
|
||||
// 公会解散
|
||||
public static async dissmissGuild(members: string[]) {
|
||||
const result = await RoleModel.updateMany({ roleId: { $in: members } }, { hasGuild: false }).lean();
|
||||
const result = await RoleModel.updateMany({ roleId: { $in: members } }, { hasGuild: false, guildCode: "", guildName: "" }).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();
|
||||
const result = await RoleModel.findOneAndUpdate({ roleId, hasGuild: true }, { hasGuild: false, guildCode: "", guildName: "", quitGuildTime: now }, { new: true }).lean();
|
||||
return result;
|
||||
}
|
||||
|
||||
// 增加好友数量
|
||||
public static async increaseFriendCnt(roleId: string, inc: number, max: number) {
|
||||
const result = await RoleModel.findOneAndUpdate({ roleId, friendCnt: {$lt: max}}, {$inc: { friendCnt: inc }}, {new: true}).lean();
|
||||
return result;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -116,7 +116,7 @@ export default class UserGuild extends BaseModel {
|
||||
.select(select)
|
||||
.sort(sort)
|
||||
.populate('role', 'roleId roleName ce headHid sHid lv title quitTime', 'Role')
|
||||
.lean();
|
||||
.lean({ getters: true });
|
||||
return userGuilds;
|
||||
}
|
||||
|
||||
@@ -125,7 +125,7 @@ export default class UserGuild extends BaseModel {
|
||||
.sort({ activeWeekly: -1, activeUpdateTime: 1 })
|
||||
.select(select)
|
||||
.populate('role', 'roleId roleName ce headHid sHid lv title quitTime', 'Role')
|
||||
.lean();
|
||||
.lean({getters: true});
|
||||
return userGuilds;
|
||||
}
|
||||
|
||||
|
||||
@@ -80,7 +80,7 @@ export default class UserGuildApply extends BaseModel {
|
||||
.sort({ createdAt: -1 })
|
||||
.select('applyCode role')
|
||||
.populate('role', 'roleId roleName ce headHid sHid lv title job quitTime', 'Role')
|
||||
.limit(GUILD_PER_PAGE).lean();
|
||||
.limit(GUILD_PER_PAGE).lean({ getters: true });
|
||||
return list
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user