镇念塔:一键跳关

This commit is contained in:
luying
2022-03-10 17:02:46 +08:00
parent 053e603301
commit 3d0f6ef5b3
11 changed files with 6160 additions and 3035 deletions

View File

@@ -1,6 +1,5 @@
import BaseModel from './BaseModel';
import { index, getModelForClass, prop, DocumentType } from '@typegoose/typegoose';
import * as dicParam from '../pubUtils/dicParam';
class Goods {
@prop({ required: true })
@@ -38,12 +37,12 @@ export default class HangUpRecord extends BaseModel {
@prop({ required: true, default: false })
received: boolean; // 是否已经领取true-领取false-未领取
public static async initRecord(roleId: string, roleName: string, lean = true) {
public static async initRecord(roleId: string, roleName: string, towerLv: number) {
// console.log('****** initRecord before')
const curTime = new Date();
const recDoc = new HangUpRecordModel();
const update = Object.assign(recDoc.toJSON(), {roleId, roleName, startTime: curTime, startLv: dicParam.TOWER_HANG_UP.TOWER_HANG_UP_ENABLE_LV + 1});
const rec: HangUpRecordType = await HangUpRecordModel.findOneAndUpdate({roleId, startLv: dicParam.TOWER_HANG_UP.TOWER_HANG_UP_ENABLE_LV + 1}, { $setOnInsert: update }, {upsert: true, new: true}).lean(lean);
const update = Object.assign(recDoc.toJSON(), {roleId, roleName, startTime: curTime, towerLv});
const rec: HangUpRecordType = await HangUpRecordModel.findOneAndUpdate({roleId, startLv: towerLv}, { $setOnInsert: update }, {upsert: true, new: true}).lean();
// console.log('****** initRecord after')
return rec;

View File

@@ -21,7 +21,7 @@ export default class TowerRecord extends BaseModel {
roleId: string; // 角色 id
@prop({ required: true, default: 1 })
lv: number; // 天梯层数
@prop({ required: true, default: [] })
@prop({ required: true, default: [], type: Number })
heroes: Array<number>; // 本层已使用武将
@prop({ required: true, type: WarStatus, default: [], _id: false })
warStatus: Array<WarStatus>;
@@ -73,6 +73,13 @@ export default class TowerRecord extends BaseModel {
}
}
// 跳过当前层
public static async skipTower(roleId: string, curLv: number, heroes: number[]) {
let rec: TowerRecordType = await TowerRecordModel.findOneAndUpdate({ roleId, lv: curLv, 'warStatus.status': false }, {
$set: { 'warStatus.$.status': true, heroes, passed: true },
}, { new: true }).lean()
return rec;
}
public static async getRecordByLv(roleId: string, lv: number, lean = true) {
const rec: TowerRecordType = await TowerRecordModel.findOne({roleId, lv}).lean(lean);