Revert "✨ feat(db): Role表中加入只读节点"
This reverts commit f11c3ad7c7622ec15432f01da1aac88198ced498.
This commit is contained in:
@@ -1,6 +1,6 @@
|
|||||||
import { ROLE_TERAPH, ROLE_SELECT, ABI_TYPE, BLOCK_TYPE } from './../consts';
|
import { ROLE_TERAPH, ROLE_SELECT, ABI_TYPE, BLOCK_TYPE } from './../consts';
|
||||||
import BaseModel from './BaseModel';
|
import BaseModel from './BaseModel';
|
||||||
import { index, getModelForClass, prop, DocumentType, Ref, mongoose, ReturnModelType } from '@typegoose/typegoose';
|
import { index, getModelForClass, prop, DocumentType, Ref, mongoose } from '@typegoose/typegoose';
|
||||||
import User from './User';
|
import User from './User';
|
||||||
import { shouldRefresh } from '../pubUtils/util';
|
import { shouldRefresh } from '../pubUtils/util';
|
||||||
import { nowSeconds, getTimeFunD } from '../pubUtils/timeUtil';
|
import { nowSeconds, getTimeFunD } from '../pubUtils/timeUtil';
|
||||||
@@ -366,7 +366,7 @@ export default class Role extends BaseModel {
|
|||||||
needCount: boolean;
|
needCount: boolean;
|
||||||
|
|
||||||
public static async findAllByUid(uid: number, getters = false, virtuals = true) {
|
public static async findAllByUid(uid: number, getters = false, virtuals = true) {
|
||||||
const role: RoleType[] = await RoleROModel.find({ 'userInfo.uid': uid }).select('roleId roleName serverId head frame spine heads frames spines lv updatedAt createTime +closeTime').lean({ getters, virtuals });
|
const role: RoleType[] = await RoleModel.find({ 'userInfo.uid': uid }).select('roleId roleName serverId head frame spine heads frames spines lv updatedAt createTime +closeTime').lean({ getters, virtuals });
|
||||||
return role;
|
return role;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -400,7 +400,7 @@ export default class Role extends BaseModel {
|
|||||||
return role;
|
return role;
|
||||||
}
|
}
|
||||||
public static async findByRoleIds(roleIds: string[], select?: string, getters = false, virtuals = true) {
|
public static async findByRoleIds(roleIds: string[], select?: string, getters = false, virtuals = true) {
|
||||||
const role: RoleType[] = await RoleROModel.find({ roleId: { $in: roleIds } }).select(select).lean({ getters, virtuals });
|
const role: RoleType[] = await RoleModel.find({ roleId: { $in: roleIds } }).select(select).lean({ getters, virtuals });
|
||||||
return role;
|
return role;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -606,7 +606,7 @@ export default class Role extends BaseModel {
|
|||||||
sortBy = {}; break;
|
sortBy = {}; break;
|
||||||
}
|
}
|
||||||
|
|
||||||
const ranks: RoleType[] = await RoleROModel.find({ serverId, ...condition }).select(select).sort(sortBy).limit(limit).skip((page - 1) * limit).lean({ virtuals: true, getters: true });
|
const ranks: RoleType[] = await RoleModel.find({ serverId, ...condition }).select(select).sort(sortBy).limit(limit).skip((page - 1) * limit).lean({ virtuals: true, getters: true });
|
||||||
return ranks;
|
return ranks;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -658,7 +658,7 @@ export default class Role extends BaseModel {
|
|||||||
* @param invitedMembers 当天已邀请过的人
|
* @param invitedMembers 当天已邀请过的人
|
||||||
*/
|
*/
|
||||||
public static async getInviteList(time: number, serverId: number) {
|
public static async getInviteList(time: number, serverId: number) {
|
||||||
const result: RoleType[] = await RoleROModel.find({ loginTime: { $gt: time }, hasGuild: false, serverId, hasInit: true })
|
const result: RoleType[] = await RoleModel.find({ loginTime: { $gt: time }, hasGuild: false, serverId, hasInit: true })
|
||||||
.select({ roleId: 1, roleName: 1, ce: 1, head: 1, frame: 1, lv: 1, title: 1, job: 1, quitTime: 1, _id: 0 })
|
.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 })
|
.sort({ quitTime: -1, lv: -1, ce: -1 })
|
||||||
.limit(100).lean({ getters: true, virtuals: true });
|
.limit(100).lean({ getters: true, virtuals: true });
|
||||||
@@ -667,7 +667,7 @@ export default class Role extends BaseModel {
|
|||||||
|
|
||||||
// 获取好友推荐列表
|
// 获取好友推荐列表
|
||||||
public static async getRecommedList(minLv: number, maxLv: number, time: number) {
|
public static async getRecommedList(minLv: number, maxLv: number, time: number) {
|
||||||
const result: RoleType[] = await RoleROModel.find({ loginTime: { $gt: time }, lv: { $gte: minLv, $lte: maxLv }, hasInit: true }, { _id: 0 })
|
const result: RoleType[] = await RoleModel.find({ loginTime: { $gt: time }, lv: { $gte: minLv, $lte: maxLv }, hasInit: true }, { _id: 0 })
|
||||||
.select(ROLE_SELECT.SHOW_FRIEND_APPLY_LIST)
|
.select(ROLE_SELECT.SHOW_FRIEND_APPLY_LIST)
|
||||||
.sort({ lv: -1, ce: -1 })
|
.sort({ lv: -1, ce: -1 })
|
||||||
.limit(200).lean({ getters: true, virtuals: true });
|
.limit(200).lean({ getters: true, virtuals: true });
|
||||||
@@ -676,7 +676,7 @@ export default class Role extends BaseModel {
|
|||||||
|
|
||||||
// 查询玩家
|
// 查询玩家
|
||||||
public static async searchByNameOrId(value: string) {
|
public static async searchByNameOrId(value: string) {
|
||||||
const result: RoleType[] = await RoleROModel.find({
|
const result: RoleType[] = await RoleModel.find({
|
||||||
$or: [
|
$or: [
|
||||||
{ roleName: { $regex: new RegExp(value.toString(), 'i') } },
|
{ roleName: { $regex: new RegExp(value.toString(), 'i') } },
|
||||||
{ roleId: value }
|
{ roleId: value }
|
||||||
@@ -737,14 +737,14 @@ export default class Role extends BaseModel {
|
|||||||
|
|
||||||
public static async checkName(roleName: string, serverId: number) {
|
public static async checkName(roleName: string, serverId: number) {
|
||||||
if(!roleName) return true; // 不可起空字符串
|
if(!roleName) return true; // 不可起空字符串
|
||||||
const res = await RoleROModel.exists({ roleName, serverId });
|
const res = await RoleModel.exists({ roleName, serverId });
|
||||||
return res;
|
return res;
|
||||||
}
|
}
|
||||||
|
|
||||||
// 获取战力在中位数的玩家
|
// 获取战力在中位数的玩家
|
||||||
public static async getActivePlayers(serverId: number) {
|
public static async getActivePlayers(serverId: number) {
|
||||||
let yesterday = <Date>getTimeFunD().getBeforeDayWithHour(1);
|
let yesterday = <Date>getTimeFunD().getBeforeDayWithHour(1);
|
||||||
const roles: RoleType[] = await RoleROModel.find({ serverId, updatedAt: { $gte: yesterday } })
|
const roles: RoleType[] = await RoleModel.find({ serverId, updatedAt: { $gte: yesterday } })
|
||||||
.select('roleId ce topLineup topLineupCe guildCode hasGuild')
|
.select('roleId ce topLineup topLineupCe guildCode hasGuild')
|
||||||
.sort({ ce: -1 }).lean();
|
.sort({ ce: -1 }).lean();
|
||||||
return roles
|
return roles
|
||||||
@@ -781,7 +781,7 @@ export default class Role extends BaseModel {
|
|||||||
|
|
||||||
// 用于远征匹配
|
// 用于远征匹配
|
||||||
public static async findByCeScale(min: number, max: number) {
|
public static async findByCeScale(min: number, max: number) {
|
||||||
const result: RoleType[] = await RoleROModel.find({ topLineupCe: { $lte: max, $gte: min } })
|
const result: RoleType[] = await RoleModel.find({ topLineupCe: { $lte: max, $gte: min } })
|
||||||
.populate('topLineup.hero')
|
.populate('topLineup.hero')
|
||||||
.sort({ topLineupCe: 1, updatedAt: 1 }).limit(10).lean({ getters: true, virtuals: true });
|
.sort({ topLineupCe: 1, updatedAt: 1 }).limit(10).lean({ getters: true, virtuals: true });
|
||||||
return result;
|
return result;
|
||||||
@@ -818,7 +818,7 @@ export default class Role extends BaseModel {
|
|||||||
sort[sortField] = -1;
|
sort[sortField] = -1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
const result: RoleType[] = await RoleROModel.find(searchObj).limit(pageSize).skip((page - 1) * pageSize).sort(sort).lean({ getters: true, virtuals: true });
|
const result: RoleType[] = await RoleModel.find(searchObj).limit(pageSize).skip((page - 1) * pageSize).sort(sort).lean({ getters: true, virtuals: true });
|
||||||
return result;
|
return result;
|
||||||
|
|
||||||
}
|
}
|
||||||
@@ -826,7 +826,7 @@ export default class Role extends BaseModel {
|
|||||||
public static async countByCondition(form: SearchRoleParam = {}) {
|
public static async countByCondition(form: SearchRoleParam = {}) {
|
||||||
|
|
||||||
let searchObj = this.getSearchObj(form);
|
let searchObj = this.getSearchObj(form);
|
||||||
const result = await RoleROModel.count(searchObj);
|
const result = await RoleModel.count(searchObj);
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -842,20 +842,20 @@ export default class Role extends BaseModel {
|
|||||||
|
|
||||||
public static async findHasGuildPlayers(createdAt?: Date) {
|
public static async findHasGuildPlayers(createdAt?: Date) {
|
||||||
let filter = createdAt? { createdAt: { $gt: createdAt } }: {};
|
let filter = createdAt? { createdAt: { $gt: createdAt } }: {};
|
||||||
let roles: RoleType[] = await RoleROModel.find({ loginTime: { $gte: nowSeconds() - 24 * 60 * 60 }, ...filter, hasGuild: true }).sort({ createdAt: 1 }).select('userInfo.channelInfo quitTime loginTime isClosePush createdAt').lean();
|
let roles: RoleType[] = await RoleModel.find({ loginTime: { $gte: nowSeconds() - 24 * 60 * 60 }, ...filter, hasGuild: true }).sort({ createdAt: 1 }).select('userInfo.channelInfo quitTime loginTime isClosePush createdAt').lean();
|
||||||
return roles;
|
return roles;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static async findAfkPlayers(createdAt?: Date) {
|
public static async findAfkPlayers(createdAt?: Date) {
|
||||||
let filter = createdAt? { createdAt: { $gt: createdAt } }: {};
|
let filter = createdAt? { createdAt: { $gt: createdAt } }: {};
|
||||||
let roles: RoleType[] = await RoleROModel.find({ loginTime: { $lt: nowSeconds() - 48 * 60 * 60 }, lv: { $gte: 20 }, hasPushMsg: { $exists: false }, ...filter }).sort({ createdAt: 1 }).select('userInfo.channelInfo quitTime loginTime isClosePush createdAt').lean();
|
let roles: RoleType[] = await RoleModel.find({ loginTime: { $lt: nowSeconds() - 48 * 60 * 60 }, lv: { $gte: 20 }, hasPushMsg: { $exists: false }, ...filter }).sort({ createdAt: 1 }).select('userInfo.channelInfo quitTime loginTime isClosePush createdAt').lean();
|
||||||
await RoleModel.updateMany({ _id: roles.map(cur => cur._id) }, { $set: { hasPushMsg: true } });
|
await RoleModel.updateMany({ _id: roles.map(cur => cur._id) }, { $set: { hasPushMsg: true } });
|
||||||
return roles;
|
return roles;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static async findActivePlayers(createdAt?: Date) {
|
public static async findActivePlayers(createdAt?: Date) {
|
||||||
let filter = createdAt? { createdAt: { $gt: createdAt } }: {};
|
let filter = createdAt? { createdAt: { $gt: createdAt } }: {};
|
||||||
let roles: RoleType[] = await RoleROModel.find({ loginTime: { $gte: nowSeconds() - 24 * 60 * 60 }, ...filter }).sort({ createdAt: 1 }).select('userInfo.channelInfo quitTime loginTime isClosePush createdAt').lean();
|
let roles: RoleType[] = await RoleModel.find({ loginTime: { $gte: nowSeconds() - 24 * 60 * 60 }, ...filter }).sort({ createdAt: 1 }).select('userInfo.channelInfo quitTime loginTime isClosePush createdAt').lean();
|
||||||
return roles;
|
return roles;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -880,20 +880,13 @@ export default class Role extends BaseModel {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public static async checkHasRole(uid: number, serverId: number) {
|
public static async checkHasRole(uid: number, serverId: number) {
|
||||||
return await RoleROModel.exists({ 'userInfo.uid': uid, lv: { $gt: 3 }, serverId: { $lt: serverId } });
|
return await RoleModel.exists({ 'userInfo.uid': uid, lv: { $gt: 3 }, serverId: { $lt: serverId } });
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
export const RoleModel = getModelForClass(Role);
|
export const RoleModel = getModelForClass(Role);
|
||||||
|
|
||||||
export let RoleROModel: ReturnModelType<typeof Role, {}>;
|
|
||||||
export function loadRoleROModel(connect: mongoose.Connection) {
|
|
||||||
RoleROModel = getModelForClass(Role, {
|
|
||||||
existingConnection: connect
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
export interface RoleType extends Pick<DocumentType<Role>, keyof Role> { };
|
export interface RoleType extends Pick<DocumentType<Role>, keyof Role> { };
|
||||||
export type RoleUpdate = Partial<RoleType>; // 将所有字段变成可选项
|
export type RoleUpdate = Partial<RoleType>; // 将所有字段变成可选项
|
||||||
export type RoleInc = Partial<Pick<DocumentType<Role>, 'heroNum' | 'blockCnt' | 'friendCnt' | 'gold' | 'coin' | 'ce' | 'renameCnt'>>;
|
export type RoleInc = Partial<Pick<DocumentType<Role>, 'heroNum' | 'blockCnt' | 'friendCnt' | 'gold' | 'coin' | 'ce' | 'renameCnt'>>;
|
||||||
|
|||||||
@@ -14,7 +14,6 @@ import { loadActivityTaskPoint } from "./ActivityTaskPoint";
|
|||||||
import { loadChannelInfo } from "./ChannelInfo";
|
import { loadChannelInfo } from "./ChannelInfo";
|
||||||
import { loadPackageModel } from "./Package";
|
import { loadPackageModel } from "./Package";
|
||||||
import { loadUserLog } from "./UserLog";
|
import { loadUserLog } from "./UserLog";
|
||||||
import { loadRoleROModel } from "./Role";
|
|
||||||
|
|
||||||
export function loadGmDb(connect: mongoose.Connection) {
|
export function loadGmDb(connect: mongoose.Connection) {
|
||||||
// console.log('************')
|
// console.log('************')
|
||||||
@@ -40,5 +39,4 @@ export function loadSubDb(connect: mongoose.Connection) {
|
|||||||
|
|
||||||
// dbro
|
// dbro
|
||||||
export function loadRODb(connect: mongoose.Connection) {
|
export function loadRODb(connect: mongoose.Connection) {
|
||||||
loadRoleROModel(connect);
|
|
||||||
}
|
}
|
||||||
Reference in New Issue
Block a user