Revert "Revert " feat(消息): 添加推送消息sdk""

This reverts commit 918cc3415f.
This commit is contained in:
luying
2023-03-21 21:04:12 +08:00
parent 9115794b82
commit 5e15568f71
17 changed files with 406 additions and 16 deletions

View File

@@ -144,6 +144,14 @@ export default class GVGLeague extends BaseModel {
return leagues;
}
public static async findActiveLeagueMembers() {
const leagues: { members: Member[] }[] = await GVGLeagueModel.aggregate([
{ $match: { status: 1 } },
{ $project: { members: 1 } }
]);
return leagues;
}
public static async quitGuild(leagueCode: string, guild: GuildType) {
const { code, memberCnt, members } = guild;
const league: GVGLeagueType = await GVGLeagueModel.findOneAndUpdate({ leagueCode, status: 1 },

View File

@@ -111,6 +111,8 @@ export class Teraph {
@index({ topLineupCe: 1, updatedAt: 1 })
@index({ ce: -1 })
@index({ 'userInfo.uid': 1, serverId: 1 })
@index({ loginTime: 1 })
@index({ createdAt: 1 })
export default class Role extends BaseModel {
@@ -343,6 +345,10 @@ export default class Role extends BaseModel {
@prop({ required: false })
fixedIpLocation: string;
// 是否发送过推送
@prop({ required: false })
hasPushMsg: boolean;
public static async findAllByUid(uid: number, getters = false, virtuals = true) {
const role: RoleType[] = await RoleModel.find({ 'userInfo.uid': uid }).select('roleId roleName serverId head frame spine heads frames spines lv updatedAt').lean({ getters, virtuals });
return role;
@@ -817,6 +823,25 @@ export default class Role extends BaseModel {
let rec: RoleType = await RoleModel.findOneAndUpdate({ roleId }, { $push: { receivedWarIds: { $each: ids } } }, { new: true }).lean();
return rec;
}
public static async findHasGuildPlayers(createdAt?: Date) {
let filter = createdAt? { createdAt: { $gt: createdAt } }: {};
let roles: RoleType[] = await RoleModel.find({ loginTime: { $gte: nowSeconds() - 24 * 60 * 60 }, ...filter, hasGuild: true }).sort({ createdAt: 1 }).select('userInfo.channelInfo createdAt').lean();
return roles;
}
public static async findAfkPlayers(createdAt?: Date) {
let filter = createdAt? { createdAt: { $gt: createdAt } }: {};
let roles: RoleType[] = await RoleModel.find({ loginTime: { $lt: nowSeconds() - 48 * 60 * 60 }, lv: { $gte: 20 }, hasPushMsg: { $exists: false }, ...filter }).sort({ createdAt }).select('userInfo.channelInfo createdAt').lean();
await RoleModel.updateMany({ _id: roles.map(cur => cur._id) }, { $set: { hasPushMsg: true } });
return roles;
}
public static async findActivePlayers(createdAt?: Date) {
let filter = createdAt? { createdAt: { $gt: createdAt } }: {};
let roles: RoleType[] = await RoleModel.find({ loginTime: { $gte: nowSeconds() - 24 * 60 * 60 }, ...filter }).sort({ createdAt: 1 }).select('userInfo.channelInfo createdAt').lean();
return roles;
}
}
export const RoleModel = getModelForClass(Role);