镇念塔调整
This commit is contained in:
@@ -2,6 +2,12 @@ import { HANG_UP_CONSTS } from './../consts/consts';
|
||||
import BaseModel from './BaseModel';
|
||||
import { index, getModelForClass, prop } from '@typegoose/typegoose';
|
||||
|
||||
class Goods {
|
||||
@prop({ required: true })
|
||||
gid: number; // 物品id
|
||||
@prop({ required: false })
|
||||
count: number; // 这次挂机没来得及领取的
|
||||
}
|
||||
/**
|
||||
* 挂机记录表
|
||||
*/
|
||||
@@ -26,6 +32,9 @@ export default class HangUpRecord extends BaseModel {
|
||||
@prop({ required: false })
|
||||
endTime: Date; // 结束挂机的时间
|
||||
|
||||
@prop({ required: true, default: [], type: Goods })
|
||||
notReceivedGoods: Array<Goods>
|
||||
|
||||
@prop({ required: true, default: false })
|
||||
received: boolean; // 是否已经领取,true-领取,false-未领取
|
||||
|
||||
@@ -42,11 +51,17 @@ export default class HangUpRecord extends BaseModel {
|
||||
return rec;
|
||||
}
|
||||
|
||||
public static async updateRec(roleId: string, roleName: string, endLv: number, endTime: Date, lean = true) {
|
||||
await HangUpRecordModel.findOneAndUpdate({roleId, received: false}, {endLv, endTime, received: true}).lean(lean);
|
||||
public static async getLastRec(roleId: string, lean = true) {
|
||||
const rec = await HangUpRecordModel.findOne({roleId, received: true}).sort({endTime: -1}).lean(lean);
|
||||
return rec;
|
||||
}
|
||||
|
||||
public static async updateRec(roleId: string, roleName: string, endLv: number, endTime: Date, needReceiveGoods: Array<{gid:number, count: number}>, lean = true) {
|
||||
await HangUpRecordModel.findOneAndUpdate({roleId, received: false}, {endLv, endTime, received: true, notReceivedGoods: needReceiveGoods}).lean(lean);
|
||||
const recDoc = new HangUpRecordModel();
|
||||
const update = Object.assign(recDoc.toJSON(), {roleId, roleName, startTime: endTime});
|
||||
const newRec = await HangUpRecordModel.findOneAndUpdate({roleId, startLv: endLv}, update, {upsert: true, new: true}).lean(lean);
|
||||
delete update._id;
|
||||
const newRec = await HangUpRecordModel.findOneAndUpdate({roleId, startLv: endLv, received: false}, update, {upsert: true, new: true}).lean(lean);
|
||||
return newRec;
|
||||
}
|
||||
|
||||
|
||||
@@ -2,6 +2,19 @@
|
||||
import BaseModel from './BaseModel';
|
||||
import { index, getModelForClass, prop } from '@typegoose/typegoose';
|
||||
|
||||
class Goods {
|
||||
@prop({ required: true })
|
||||
gid: number; // 物品id
|
||||
@prop({ required: false })
|
||||
count: number; // 这次挂机没来得及领取的
|
||||
}
|
||||
|
||||
class NotReceivedGoods {
|
||||
@prop({ required: true })
|
||||
cnt: number; // 加速的次数
|
||||
@prop({ required: true, default: [], type: Goods })
|
||||
goods: Array<Goods>; // 这次挂机没来得及领取的
|
||||
}
|
||||
/**
|
||||
* 挂机记录表
|
||||
*/
|
||||
@@ -18,9 +31,25 @@ export default class HangUpSpdUpRec extends BaseModel {
|
||||
@prop({required: true, default: 1})
|
||||
lv: number; // 天梯层数
|
||||
|
||||
public static async updateRec(roleId, roleName, multi, lv, lean = true ) {
|
||||
@prop({ required: true, default: [], type: NotReceivedGoods })
|
||||
notReceivedGoodsList: Array<NotReceivedGoods>
|
||||
|
||||
public static async getSpdUpRec(roleId, lv, lean = true ) {
|
||||
let rec = await HangUpSpdUpRecModel.findOne({roleId, lv}).lean(lean);
|
||||
return rec;
|
||||
}
|
||||
|
||||
public static async updateRec(roleId, roleName, multi, lv, needReceiveGoods: Array<{gid:number, count: number}>, lean = true ) {
|
||||
if (multi <= 0) return null;
|
||||
let rec = await HangUpSpdUpRecModel.findOneAndUpdate({roleId, lv, roleName}, {$inc: {cnt: multi}}, {upsert: true, new: true}).lean(lean);
|
||||
if(rec && needReceiveGoods.length > 0) {
|
||||
let {cnt} = rec;
|
||||
let goods = [{
|
||||
cnt: cnt,
|
||||
goods: needReceiveGoods
|
||||
}];
|
||||
await HangUpSpdUpRecModel.findOneAndUpdate({roleId, lv, roleName}, {$push: {notReceivedGoodsList: {$each: goods}}}, {upsert: true, new: true}).lean(lean);
|
||||
}
|
||||
return rec;
|
||||
}
|
||||
|
||||
|
||||
@@ -159,10 +159,10 @@ export default class Role extends BaseModel {
|
||||
public static async hangUpSpdUp(roleId: string, cnt: number, curTime: Date, lean = true) {
|
||||
if (cnt < 0) return null;
|
||||
|
||||
const result = await RoleModel.findOneAndUpdate({roleId}, {$inc: {hangUpSpdUpCnt: -cnt}, lastSpdUpTime: curTime}, {new: true}).lean(lean);
|
||||
const lastSpdUpTime = result?result.lastSpdUpTime: curTime;
|
||||
const result = await RoleModel.findOne({roleId}).lean(lean);
|
||||
const lastSpdUpTime = result?.lastSpdUpTime;
|
||||
let role = null;
|
||||
if (shouldRefresh(lastSpdUpTime, curTime, HANG_UP_CONSTS.REFRESH_TIME, 1) && cnt <= HANG_UP_CONSTS.MAX_SPD_UP_CNT) {
|
||||
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 {
|
||||
role = await RoleModel.findOneAndUpdate({roleId, hangUpSpdUpCnt: {$gte: cnt}}, {$inc: {hangUpSpdUpCnt: -cnt}, lastSpdUpTime: curTime}, {new: true}).lean(lean);
|
||||
@@ -221,6 +221,11 @@ try {
|
||||
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);
|
||||
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);
|
||||
return result;
|
||||
|
||||
@@ -35,8 +35,9 @@ export default class TowerRecord extends BaseModel {
|
||||
|
||||
public static async createRecord(towerInfo: {roleId: string, lv: number, warStatus: Array<WarStatus>}, lean = true) {
|
||||
const recDoc = new TowerRecordModel();
|
||||
const update = Object.assign(towerInfo, recDoc.toJSON());
|
||||
const update = Object.assign(recDoc.toJSON(), towerInfo );
|
||||
const { roleId, lv } = towerInfo;
|
||||
console.log(JSON.stringify(towerInfo))
|
||||
let rec = await TowerRecordModel.findOneAndUpdate({roleId, lv}, {$set: update}, {upsert: true, new: true}).lean(lean);
|
||||
return rec;
|
||||
}
|
||||
@@ -51,12 +52,23 @@ export default class TowerRecord extends BaseModel {
|
||||
* @param lean
|
||||
*/
|
||||
public static async updateRecord(roleId: string, lv: number, battleCode: string, warId: number, heroes: Array<number>, inc: number, lean = true) {
|
||||
const rec = await TowerRecordModel.findOneAndUpdate(
|
||||
{roleId, lv, 'warStatus.warId': warId},
|
||||
{$set: {'warStatus.$.status': true, 'warStatus.$.battleCode': battleCode, passed: inc === 1 ? true : false}, $push: {heroes: {$each: heroes}}},
|
||||
{new: true, upsert: true}
|
||||
).lean(lean);
|
||||
return rec;
|
||||
let tower = await TowerRecordModel.findOne({roleId, lv, 'warStatus.warId': warId});
|
||||
if(tower) {
|
||||
const rec = await TowerRecordModel.findOneAndUpdate(
|
||||
{roleId, lv, 'warStatus.warId': warId},
|
||||
{$set: {'warStatus.$.status': true, 'warStatus.$.battleCode': battleCode, passed: inc === 1 ? true : false}, $push: {heroes: {$each: heroes}}},
|
||||
{new: true, upsert: true}
|
||||
).lean(lean);
|
||||
return rec;
|
||||
} else {
|
||||
let warStatus = [{warId, status: true,battleCode, passed: inc === 1 ? true : false}];
|
||||
const rec = await TowerRecordModel.findOneAndUpdate(
|
||||
{roleId, lv},
|
||||
{ $push: {heroes: {$each: heroes}, warStatus: {$each: warStatus}}},
|
||||
{new: true, upsert: true}
|
||||
).lean(lean);
|
||||
return rec;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user