军团活动:排行榜&军功上报

This commit is contained in:
luying
2021-03-18 11:59:53 +08:00
parent 4340f9a0b0
commit 9a463afd0d
27 changed files with 1963 additions and 29 deletions
+20 -11
View File
@@ -4,7 +4,7 @@ import { index, getModelForClass, prop, DocumentType, Ref, mongoose } from '@typ
import User from './User';
import { shouldRefresh, reduceCe } from '../pubUtils/util';
import { initRoleAtrr } from '../pubUtils/playerCe';
import { nowSeconds } from '../pubUtils/timeUtil';
import { nowSeconds, getBeforeDayDate } from '../pubUtils/timeUtil';
import { Figure } from '../domain/dbGeneral';
import { EXTERIOR } from '../pubUtils/dicParam';
import Hero from './Hero';
@@ -483,7 +483,7 @@ export default class Role extends BaseModel {
* @param invitedMembers 当天已邀请过的人
*/
public static async getInviteList(time: number, serverId: number) {
const result = await RoleModel.find({ loginTime: { $gt: time }, hasGuild: false, serverId })
const result: RoleType[] = await RoleModel.find({ loginTime: { $gt: time }, hasGuild: false, serverId })
.select({roleId: 1, roleName: 1,ce: 1, head: 1, frame: 1, lv: 1,title: 1,job: 1,quitTime: 1, _id: 0})
.sort({quitTime: -1, lv: -1, ce: -1})
.limit(100).lean({getters: true, virtuals: true});
@@ -492,7 +492,7 @@ export default class Role extends BaseModel {
// 获取好友推荐列表
public static async getRecommedList(minLv: number, maxLv: number, time: number) {
const result = await RoleModel.find({ loginTime: { $gt: time }, lv: { $gte: minLv, $lte: maxLv } }, { _id: 0 })
const result: RoleType[] = await RoleModel.find({ loginTime: { $gt: time }, lv: { $gte: minLv, $lte: maxLv } }, { _id: 0 })
.select(ROLE_SELECT.SHOW_FRIEND_APPLY_LIST)
.sort({quitTime: -1, lv: -1, ce: -1})
.limit(200).lean({ getters: true, virtuals: true });
@@ -501,7 +501,7 @@ export default class Role extends BaseModel {
// 查询玩家
public static async searchByNameOrId(value: string) {
const result = await RoleModel.find({
const result: RoleType[] = await RoleModel.find({
$or: [
{ roleName: { $regex: new RegExp(value.toString(), 'i') } },
{ roleId: value }
@@ -521,7 +521,7 @@ export default class Role extends BaseModel {
// 退出公会
public static async quitGuild(roleId: string, now: number) {
const result = await RoleModel.findOneAndUpdate({ roleId, hasGuild: true }, { hasGuild: false, guildCode: "", guildName: "", quitGuildTime: now }, { new: true }).lean();
const result: RoleType = await RoleModel.findOneAndUpdate({ roleId, hasGuild: true }, { hasGuild: false, guildCode: "", guildName: "", quitGuildTime: now }, { new: true }).lean();
return result;
}
@@ -531,35 +531,44 @@ export default class Role extends BaseModel {
if(max) {
condition['friendCnt'] = {$lte: max - inc};
}
const result = await RoleModel.findOneAndUpdate(condition, {$inc: { friendCnt: inc }}, {new: true}).lean();
const result: RoleType = await RoleModel.findOneAndUpdate(condition, {$inc: { friendCnt: inc }}, {new: true}).lean();
return result;
}
// 增加好友申请数量
public static async increaseFriendApplyCnt(roleId: string, inc: number, max: number) {
const result = await RoleModel.findOneAndUpdate({ roleId, recFrdApplyCnt: {$lte: max - inc}}, {$inc: { recFrdApplyCnt: inc }}, {new: true}).lean();
const result: RoleType = await RoleModel.findOneAndUpdate({ roleId, recFrdApplyCnt: {$lte: max - inc}}, {$inc: { recFrdApplyCnt: inc }}, {new: true}).lean();
return result;
}
// 增加黑名单数量
public static async increaseBlockCnt(roleId: string, blockCnt: number, friendCnt: number, maxBlockCnt: number) {
const result = await RoleModel.findOneAndUpdate({ roleId, blockCnt: {$lte: maxBlockCnt - blockCnt}}, {$inc: { blockCnt, friendCnt }}, {new: true}).lean();
const result: RoleType = await RoleModel.findOneAndUpdate({ roleId, blockCnt: {$lte: maxBlockCnt - blockCnt}}, {$inc: { blockCnt, friendCnt }}, {new: true}).lean();
return result;
}
public static async updatedRoleMailAt(roleId: string, updatedMailAt: number, lean = true) {
const result = await RoleModel.findOneAndUpdate({ roleId }, {$set: { updatedMailAt }}, {new: true}).lean(lean);
const result: RoleType = await RoleModel.findOneAndUpdate({ roleId }, {$set: { updatedMailAt }}, {new: true}).lean(lean);
return result;
}
public static async addFigure(roleId: string, id: number, figure: Figure) {
const result = await RoleModel.findOneAndUpdate({roleId}, { $pull: { heads: { id: id }, $push: { heads: figure } }}, {new: true}).lean();
const result: RoleType = await RoleModel.findOneAndUpdate({roleId}, { $pull: { heads: { id: id }, $push: { heads: figure } }}, {new: true}).lean();
return result
}
public static async checkName(roleName: string, serverId: number) {
const role = await RoleModel.findOne({ roleName, serverId }).lean();
const role: RoleType = await RoleModel.findOne({ roleName, serverId }).lean();
return !!role;
}
// 获取战力在中位数的玩家
public static async getMedianRole(serverId: number) {
let yesterday = getBeforeDayDate(1);
const roles: RoleType[] = await RoleModel.find({ serverId, updatedAt: { $gte: new Date(yesterday) } })
.select('topLineup')
.sort({ ce: -1 }).lean();
return roles[Math.floor(roles.length/2)]
}
}
export const RoleModel = getModelForClass(Role);