天梯数据库表;查询天梯状态接口

This commit is contained in:
liangtongchuan
2020-10-08 21:59:44 +08:00
parent cdc0197c95
commit 39d6ed9ae6
4 changed files with 101 additions and 0 deletions

View File

@@ -0,0 +1,27 @@
import { TowerRecordModel } from './../../../../../shared/db/TowerRecord';
import { Application, BackendSession } from 'pinus';
import Role from '../../../db/Role';
export default function(app: Application) {
return new TowerBattleHandler(app);
}
export class TowerBattleHandler {
constructor(private app: Application) {
}
async getStatus(msg: {}, session: BackendSession) {
let roleId = session.get('roleId');
let { towerLv } = await Role.findByRoleId(roleId);
let towerRec = await TowerRecordModel.getRecordByLv(roleId, towerLv);
let data = towerRec ? {
curLv: towerLv,
usedHeroes: towerRec.heroes,
progress: towerRec.warStatus
} : '天梯记录异常';
return {
code: 200,
data
}
}
}

View File

@@ -91,6 +91,9 @@ export default class Role extends BaseModel {
@prop({ required: true })
loginTime: Date; // 更新 / 登录时间
@prop({ required: true, default: 1 })
towerLv: number; // 天梯当前层数
public static async findByUid(uid: number, serverId: number, lean = true) {
const role = await RoleModel.findOne({ 'userInfo.uid': uid, serverId }).lean(lean);
return role;

31
shared/db/SearchRecord.ts Normal file
View File

@@ -0,0 +1,31 @@
import BaseModel from './BaseModel';
import { index, getModelForClass, prop } from '@typegoose/typegoose';
class SearchTask {
@prop({ required: true })
id: number; // 任务表中的唯一 Id
@prop({ required: true })
taskCode: string; // 服务器生成的任务唯一标识
@prop({ required: true })
startTime: Date; // 任务派遣开始时间
@prop({ required: true })
status: number; // 派遣任务当前状态0-可派遣1-已派遣2-已完成3-已领取
@prop({ required: true, default: [] })
heroes: Array<number> // 派遣武将 hid
}
/**
* 派遣任务记录表
*/
@index({ roleId: 1, type: 1 })
export default class SearchRecord extends BaseModel {
@prop({ required: true })
roleId: string; // 角色 id
@prop({ required: true })
batchCode: string; // 本批派遣任务唯一标识
@prop({ required: true, default: [] })
tasks: Array<SearchTask>;
}
export const SearchRecordModel = getModelForClass(SearchRecord);

40
shared/db/TowerRecord.ts Normal file
View File

@@ -0,0 +1,40 @@
import BaseModel from './BaseModel';
import { index, getModelForClass, prop } from '@typegoose/typegoose';
class WarStatus {
@prop({ required: true })
warId: number; // 策划表中战斗编号
@prop({ required: true })
battleCode: string; // 服务器生成的战斗唯一标识
@prop({ required: true })
status: boolean; // 是否通过true-通过false-未通过
}
/**
* 天梯记录表
*/
@index({ roleId: 1, lv: 1 })
export default class TowerRecord extends BaseModel {
@prop({ required: true })
roleId: string; // 角色 id
@prop({ required: true, default: 1 })
lv: number; // 天梯层数
@prop({ required: true, default: [] })
heroes: Array<number>; // 本层已使用武将
@prop({ required: true, default: [] })
warStatus: Array<WarStatus>;
@prop({ required: true, default: 0 })
speedUpCnt: number; // 加速总次数
@prop({ required: true, default: 0 })
speedUpTime: number; // 加速总时长
@prop({ required: true })
hangUpTime: Date; // 挂机开始时间
public static async getRecordByLv(roleId: string, lv: number, lean = true) {
const rec = await TowerRecordModel.findOne({roleId, lv}).lean(lean);
return rec;
}
}
export const TowerRecordModel = getModelForClass(TowerRecord);