添加数据库类型别名
This commit is contained in:
+43
-37
@@ -1,6 +1,7 @@
|
||||
import { HANG_UP_CONSTS } from './../consts';
|
||||
import BaseModel, { CeAttr } from './BaseModel';
|
||||
import { index, getModelForClass, prop } from '@typegoose/typegoose';
|
||||
import BaseModel from './BaseModel';
|
||||
import { CeAttr } from './generalField';
|
||||
import { index, getModelForClass, prop, DocumentType } from '@typegoose/typegoose';
|
||||
import User from './User';
|
||||
import { shouldRefresh } from '../pubUtils/util';
|
||||
import { HeroModel } from './Hero';
|
||||
@@ -162,12 +163,12 @@ export default class Role extends BaseModel {
|
||||
dungeonHeroes: Array<DungeonHero>; // 秘境首通使用的武将
|
||||
|
||||
public static async findByUid(uid: number, serverId: number, lean = true) {
|
||||
const role = await RoleModel.findOne({ 'userInfo.uid': uid, serverId }).lean(lean);
|
||||
const role: RoleType = await RoleModel.findOne({ 'userInfo.uid': uid, serverId }).lean(lean);
|
||||
return role;
|
||||
}
|
||||
|
||||
public static async findByRoleId(roleId: string, lean = true) {
|
||||
const role = await RoleModel.findOne({ roleId }).lean(lean);
|
||||
const role: RoleType = await RoleModel.findOne({ roleId }).lean(lean);
|
||||
return role;
|
||||
}
|
||||
|
||||
@@ -176,7 +177,7 @@ export default class Role extends BaseModel {
|
||||
if (!user) return null;
|
||||
const doc = new RoleModel();
|
||||
const update = Object.assign(doc.toJSON(), roleInfo, { userInfo: user, serverType: user.serverType, serverId });
|
||||
const role = await RoleModel.findOneAndUpdate({ 'userInfo.uid': uid, serverId }, update, { upsert: true, new: true }).lean(lean);
|
||||
const role: RoleType = await RoleModel.findOneAndUpdate({ 'userInfo.uid': uid, serverId }, update, { upsert: true, new: true }).lean(lean);
|
||||
return role;
|
||||
}
|
||||
|
||||
@@ -188,17 +189,18 @@ export default class Role extends BaseModel {
|
||||
};
|
||||
}
|
||||
//.select('uid tel username')
|
||||
const user = await RoleModel.find(searchObj).lean(lean);
|
||||
const user: RoleType[] = await RoleModel.find(searchObj).lean(lean);
|
||||
return user;
|
||||
}
|
||||
|
||||
|
||||
public static async setEventStatus(roleId: string, eventStatus: number, lean = true) {
|
||||
await RoleModel.findOneAndUpdate({ roleId }, { eventStatus }, {new: true}).lean(lean);
|
||||
let role: RoleType = await RoleModel.findOneAndUpdate({ roleId }, { eventStatus }, {new: true}).lean(lean);
|
||||
return role;
|
||||
}
|
||||
|
||||
public static async towerLvUp(roleId: string, lean = true) {
|
||||
let role = await RoleModel.findOneAndUpdate({roleId}, {$inc: {towerLv: 1}, towerUpTime: new Date()}, {new: true}).lean(lean);
|
||||
let role: RoleType = await RoleModel.findOneAndUpdate({roleId}, {$inc: {towerLv: 1}, towerUpTime: new Date()}, {new: true}).lean(lean);
|
||||
return role;
|
||||
}
|
||||
|
||||
@@ -207,7 +209,7 @@ export default class Role extends BaseModel {
|
||||
|
||||
const result = await RoleModel.findOne({roleId}).lean(lean);
|
||||
const lastSpdUpTime = result?.lastSpdUpTime;
|
||||
let role = null;
|
||||
let role: RoleType;
|
||||
if (!lastSpdUpTime || (shouldRefresh(lastSpdUpTime, curTime, HANG_UP_CONSTS.REFRESH_TIME, 1) && cnt <= HANG_UP_CONSTS.MAX_SPD_UP_CNT)) {
|
||||
role = await RoleModel.findOneAndUpdate({roleId}, {hangUpSpdUpCnt: HANG_UP_CONSTS.MAX_SPD_UP_CNT - cnt, lastSpdUpTime: curTime}, {new: true}).lean(lean);
|
||||
} else {
|
||||
@@ -217,47 +219,47 @@ export default class Role extends BaseModel {
|
||||
}
|
||||
|
||||
public static async increaseExpeditionPoint(roleId: string, point: number, lean = true) {
|
||||
let role = await RoleModel.findOneAndUpdate({roleId}, {$inc: { expeditionPoint: point }}, {new: true}).lean(lean);
|
||||
let role: RoleType = await RoleModel.findOneAndUpdate({roleId}, {$inc: { expeditionPoint: point }}, {new: true}).lean(lean);
|
||||
return role;
|
||||
}
|
||||
|
||||
public static async levelup(roleId: string, lv: number, exp: number, lean = true) {
|
||||
let role = await RoleModel.findOneAndUpdate({roleId}, {$set: { exp, lv }}, {new: true}).lean(lean);
|
||||
let role: RoleType = await RoleModel.findOneAndUpdate({roleId}, {$set: { exp, lv }}, {new: true}).lean(lean);
|
||||
return role;
|
||||
}
|
||||
|
||||
public static async deleteAccount(roleId: string, lean = true) {
|
||||
let result = await RoleModel.deleteMany({roleId}).lean(lean);
|
||||
return result||{};
|
||||
public static async deleteAccount(roleId: string) {
|
||||
let result = await RoleModel.deleteMany({roleId});
|
||||
return result;
|
||||
}
|
||||
|
||||
public static async addCoin(roleId: string, cnt: number, lean = true) {
|
||||
let result = await RoleModel.findOneAndUpdate({roleId}, { $inc: {coin: cnt} }, { "new": true, "upsert": true}).lean(lean);
|
||||
let result: RoleType = await RoleModel.findOneAndUpdate({roleId}, { $inc: {coin: cnt} }, { "new": true, "upsert": true}).lean(lean);
|
||||
return result;
|
||||
}
|
||||
|
||||
public static async addGoldFree(roleId: string, cnt: number, lean = true) {
|
||||
let result = await RoleModel.findOneAndUpdate({roleId}, { $inc: { gold: cnt, giftGold: cnt } }, { "new": true, "upsert": true}).lean(lean);
|
||||
let result: RoleType = await RoleModel.findOneAndUpdate({roleId}, { $inc: { gold: cnt, giftGold: cnt } }, { "new": true, "upsert": true}).lean(lean);
|
||||
return result;
|
||||
}
|
||||
|
||||
public static async costCoin(roleId: string, cnt: number, lean = true) {
|
||||
let result = await RoleModel.findOneAndUpdate({roleId, coin: {$gte: cnt}}, { $inc: { coin: -cnt } }, { "new": true}).lean(lean);
|
||||
let result: RoleType = await RoleModel.findOneAndUpdate({roleId, coin: {$gte: cnt}}, { $inc: { coin: -cnt } }, { "new": true}).lean(lean);
|
||||
return result;
|
||||
}
|
||||
|
||||
public static async costGold(roleId: string, cnt: number, lean = true) {
|
||||
let result = await RoleModel.findOneAndUpdate({roleId, gold: {$gte: cnt}}, { $inc: { gold: -cnt, totalCost: cnt } }, { "new": true}).lean(lean);
|
||||
let result: RoleType = await RoleModel.findOneAndUpdate({roleId, gold: {$gte: cnt}}, { $inc: { gold: -cnt, totalCost: cnt } }, { "new": true}).lean(lean);
|
||||
return result;
|
||||
}
|
||||
|
||||
public static async pushWarStar(roleId: string, battleId: number, warType: number, star: number, lean = true) {
|
||||
let result = await RoleModel.findOneAndUpdate({roleId}, { $addToSet: { warStar: {id: battleId, warType, star }} }, { "new": true, "upsert": true}).lean(lean);
|
||||
let result: RoleType = await RoleModel.findOneAndUpdate({roleId}, { $addToSet: { warStar: {id: battleId, warType, star }} }, { "new": true, "upsert": true}).lean(lean);
|
||||
return result;
|
||||
}
|
||||
|
||||
public static async updateWarStar(roleId: string, battleId: number, star: number, lean = true) {
|
||||
let result = await RoleModel.findOneAndUpdate(
|
||||
let result: RoleType = await RoleModel.findOneAndUpdate(
|
||||
{roleId, 'warStar.id': battleId},
|
||||
{ $set: { 'warStar.$.star': star } },
|
||||
{ "new": true, "upsert": true}
|
||||
@@ -267,24 +269,24 @@ export default class Role extends BaseModel {
|
||||
|
||||
// 重置派遣次数
|
||||
public static async resetTowerCnt(roleId: string, curTime: Date, lean = true) {
|
||||
const role = await RoleModel.findOneAndUpdate({roleId}, {towerTaskCnt: 0, towerTaskRefTime: curTime, towerTaskReCnt: 0}, {new: true}).lean(lean);
|
||||
const role: RoleType = await RoleModel.findOneAndUpdate({roleId}, {towerTaskCnt: 0, towerTaskRefTime: curTime, towerTaskReCnt: 0}, {new: true}).lean(lean);
|
||||
return role;
|
||||
}
|
||||
// 刷新派遣任务次数增长
|
||||
public static async increaseTowerCnt(roleId: string, num: number, lean = true) {
|
||||
const role = await RoleModel.findOneAndUpdate({roleId}, {$inc: {towerTaskCnt: num}}, {new: true}).lean(lean);
|
||||
const role: RoleType = await RoleModel.findOneAndUpdate({roleId}, {$inc: {towerTaskCnt: num}}, {new: true}).lean(lean);
|
||||
return role;
|
||||
}
|
||||
// 派遣任务增加刷新次数
|
||||
public static async increaseTowerRefCnt(roleId: string, num: number, lean = true) {
|
||||
const role = await RoleModel.findOneAndUpdate({roleId}, {$inc: {towerTaskReCnt: num}}, {new: true}).lean(lean);
|
||||
const role: RoleType = await RoleModel.findOneAndUpdate({roleId}, {$inc: {towerTaskReCnt: num}}, {new: true}).lean(lean);
|
||||
return role;
|
||||
}
|
||||
|
||||
// 刷新远征重置次数
|
||||
public static async increaseExpeditionResetCnt(roleId: string, needRefresh: boolean, curTime: Date, lean = true) {
|
||||
|
||||
let role = null;
|
||||
let role: RoleType;
|
||||
if (needRefresh) {
|
||||
role = await RoleModel.findOneAndUpdate({roleId}, {expeditionResetCnt: 1, expeditionResetRefTime: curTime}, {new: true}).lean(lean);
|
||||
} else {
|
||||
@@ -297,7 +299,7 @@ export default class Role extends BaseModel {
|
||||
// 购买次数
|
||||
public static async buyCnt(roleId: string, needRefresh: boolean, inc: number, curTime: Date, lean = true) { console.log('&*&*&*&*&')
|
||||
|
||||
let role = null;
|
||||
let role: RoleType;
|
||||
if (needRefresh) {
|
||||
role = await RoleModel.findOneAndUpdate({roleId}, {dungeonCnt: 0, dungeonRefTime: curTime, dungeonBuyCnt: inc}, {new: true}).lean(lean);
|
||||
} else {
|
||||
@@ -308,7 +310,7 @@ export default class Role extends BaseModel {
|
||||
|
||||
// 增加次数
|
||||
public static async increaseDungeonCnt(roleId: string, needRefresh: boolean, inc: number, curTime: Date, lean = true) {
|
||||
let role = null;
|
||||
let role: RoleType;
|
||||
if (needRefresh) {
|
||||
role = await RoleModel.findOneAndUpdate({roleId}, {dungeonCnt: inc, dungeonRefTime: curTime, dungeonBuyCnt: 0}, {new: true}).lean(lean);
|
||||
} else {
|
||||
@@ -324,7 +326,7 @@ export default class Role extends BaseModel {
|
||||
sortBy['towerLv'] = -1;
|
||||
sortBy['towerUpTime'] = 1;
|
||||
}
|
||||
const ranks = await RoleModel.find({serverId}).select(fields.join(' ')).sort(sortBy).limit(limit).skip((page - 1) * limit).lean(lean);
|
||||
const ranks: RoleType[] = await RoleModel.find({serverId}).select(fields.join(' ')).sort(sortBy).limit(limit).skip((page - 1) * limit).lean(lean);
|
||||
return ranks;
|
||||
}
|
||||
|
||||
@@ -359,32 +361,36 @@ export default class Role extends BaseModel {
|
||||
let topFiveCe = topFive.reduce((pre, cur) => {
|
||||
return pre + cur.ce
|
||||
}, 0);
|
||||
await RoleModel.findOneAndUpdate({roleId}, { topFive, topFiveCe, $inc: {ce: distance} }).lean(lean);
|
||||
role = await RoleModel.findOneAndUpdate({roleId}, { topFive, topFiveCe, $inc: {ce: distance} }).lean(lean);
|
||||
return role;
|
||||
}
|
||||
|
||||
// 保存秘境首通队伍
|
||||
public static async saveDungeonHero(roleId: string, battleId: number, heroes: Array<number>, isSuccess: boolean) {
|
||||
if(isSuccess) {
|
||||
const role = await Role.findByRoleId(roleId);
|
||||
let dungeonHeroes = role && role.dungeonHeroes;
|
||||
let hasHero = dungeonHeroes&&dungeonHeroes.find(cur => cur.battleId == battleId);
|
||||
if(!dungeonHeroes || !hasHero) {
|
||||
await RoleModel.findOneAndUpdate({roleId}, {$push:{dungeonHeroes: {battleId, heroes}}})
|
||||
}
|
||||
let role = await Role.findByRoleId(roleId);
|
||||
let dungeonHeroes = role && role.dungeonHeroes;
|
||||
let hasHero = dungeonHeroes&&dungeonHeroes.find(cur => cur.battleId == battleId);
|
||||
if(!dungeonHeroes || !hasHero) {
|
||||
role = await RoleModel.findOneAndUpdate({roleId}, {$push:{dungeonHeroes: {battleId, heroes}}})
|
||||
}
|
||||
return role;
|
||||
}
|
||||
}
|
||||
|
||||
// 保存开启功能
|
||||
public static async pushFuncs(roleId: string, funcs: Array<number>, lean = true) {
|
||||
const recs = await RoleModel.findOneAndUpdate({roleId}, {$push: {funcs: {$each: funcs}}}, {new: true}).lean(lean);
|
||||
const recs: RoleType = await RoleModel.findOneAndUpdate({roleId}, {$push: {funcs: {$each: funcs}}}, {new: true}).lean(lean);
|
||||
return recs
|
||||
}
|
||||
|
||||
public static async updateRoleInfo(roleId: string, roleUpdate:roleUpdate, lean = true) {
|
||||
delete roleUpdate._id;
|
||||
let result = await RoleModel.findOneAndUpdate({roleId}, {$set:roleUpdate}).lean(lean);
|
||||
return result||{};
|
||||
let result: RoleType = await RoleModel.findOneAndUpdate({roleId}, {$set:roleUpdate}).lean(lean);
|
||||
return result;
|
||||
}
|
||||
}
|
||||
|
||||
export const RoleModel = getModelForClass(Role);
|
||||
|
||||
export interface RoleType extends Pick<DocumentType<Role>, keyof Role>{};
|
||||
|
||||
Reference in New Issue
Block a user