feature:
天梯挂机加速;天梯派遣部分新接口 fixed: 数据库类型和插入数据的用法修复
This commit is contained in:
+22
-2
@@ -1,6 +1,8 @@
|
||||
import { HANG_UP_CONSTS } from './../consts/consts';
|
||||
import BaseModel from './BaseModel';
|
||||
import { index, getModelForClass, prop } from '@typegoose/typegoose';
|
||||
import User from './User';
|
||||
import { shouldRefresh } from '../util/util';
|
||||
|
||||
/**
|
||||
* 角色字段接口
|
||||
@@ -99,6 +101,11 @@ export default class Role extends BaseModel {
|
||||
|
||||
// @prop({ required: false })
|
||||
// hangUpTime: Date; // 当前挂机开始时间
|
||||
@prop({ required: true, default: HANG_UP_CONSTS.MAX_SPD_UP_CNT})
|
||||
hangUpSpdUpCnt: number; // 挂机加速次数
|
||||
@prop({ required: true, default: new Date()})
|
||||
lastSpdUpTime: Date; // 最后一次挂机加速时间
|
||||
|
||||
|
||||
@prop({ required: true })
|
||||
expeditionPoint: number; // 远征点数
|
||||
@@ -118,7 +125,7 @@ export default class Role extends BaseModel {
|
||||
const user = await User.findUserByUid(uid);
|
||||
if (!user) return null;
|
||||
const doc = new RoleModel();
|
||||
const update = Object.assign(roleInfo, { userInfo: user, serverType: user.serverType, serverId }, doc.toJSON());
|
||||
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);
|
||||
return role;
|
||||
}
|
||||
@@ -141,7 +148,20 @@ export default class Role extends BaseModel {
|
||||
}
|
||||
|
||||
public static async towerLvUp(roleId: string, lean = true) {
|
||||
let role = await RoleModel.findOneAndUpdate({roleId}, {$inc: {towerLv: 1}}).lean(lean);
|
||||
let role = await RoleModel.findOneAndUpdate({roleId}, {$inc: {towerLv: 1}}, {new: true}).lean(lean);
|
||||
return role;
|
||||
}
|
||||
|
||||
public static async hangUpSpdUp(roleId: string, cnt: number, curTime: Date, lean = true) {
|
||||
if (cnt < 0) return null;
|
||||
|
||||
const {lastSpdUpTime} = await RoleModel.findOneAndUpdate({roleId}, {$inc: {hangUpSpdUpCnt: -cnt}, lastSpdUpTime: curTime}, {new: true}).lean(lean);
|
||||
let role = null;
|
||||
if (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 {
|
||||
role = await RoleModel.findOneAndUpdate({roleId, hangUpSpdUpCnt: {$gte: cnt}}, {$inc: {hangUpSpdUpCnt: -cnt}, lastSpdUpTime: curTime}, {new: true}).lean(lean);
|
||||
}
|
||||
return role;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user