天梯数据库表;查询天梯状态接口
This commit is contained in:
27
game-server/app/servers/battle/handler/towerBattleHandler.ts
Normal file
27
game-server/app/servers/battle/handler/towerBattleHandler.ts
Normal 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
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -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
31
shared/db/SearchRecord.ts
Normal 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
40
shared/db/TowerRecord.ts
Normal 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);
|
||||
Reference in New Issue
Block a user