添加寻宝数据库和简单的组队接口

This commit is contained in:
liangtongchuan
2020-11-18 23:58:35 +08:00
parent 9e9b6bb2d8
commit 35ab52b8c5
6 changed files with 241 additions and 13 deletions
+40 -4
View File
@@ -1,7 +1,7 @@
import BaseModel from './BaseModel';
import { index, getModelForClass, prop } from '@typegoose/typegoose';
class RoleStatus {
export class RoleStatus {
@prop({ required: true })
roleId: string;
@prop({ required: true })
@@ -15,8 +15,20 @@ class RoleStatus {
@prop({ required: false, default: '' })
battleCode: string;
// 玩家所用阵容
@prop({ required: false })
@prop({ required: false, type: Number, default: [] })
heroes: Array<number>;
// 阵亡武将
@prop({ required: false, default: [] })
killed: Array<number>;
// 是否情谊助阵
@prop({ required: false, default: false })
isFrd: boolean;
// 头像
@prop({ required: true, default: 1 })
headHid: number;
// 前五战力
@prop({ required: true, default: 0 })
topFiveCe: number;
}
@index({ teamCode: 1 })
@@ -28,7 +40,7 @@ export default class ComBattleTeam extends BaseModel {
@prop({ required: true })
teamCode: string;
@prop({ required: true, default: [] })
@prop({ required: true, type: String, default: [] })
roleIds: Array<string>
// 队伍是否开放加入
@@ -43,12 +55,36 @@ export default class ComBattleTeam extends BaseModel {
@prop({ required: true, default: 0 })
status: number;
@prop({ required: true, default: [] })
@prop({ required: true, type: RoleStatus, default: [] })
roleStatus: Array<RoleStatus>;
// 队长 roleId
@prop({ required: true })
capId: string;
// 战力限制
@prop({ required: true, default: 0 })
ceLimit: number;
public static async createTeam(teamData: {teamCode: string, roleIds: Array<string>, pub: boolean, blueprtId: number, status: number, roleStatus: Array<RoleStatus>, capId: string}, lean = true) {
const team = await ComBattleTeamModel.findOneAndUpdate({ teamCode: teamData.teamCode }, {$set :{...teamData}}, {upsert: true, new: true}).lean(lean);
return team;
}
public static async addRole(teamCode: string, roleStatus: RoleStatus, lean = true) {
const team = await ComBattleTeamModel.findOneAndUpdate({ teamCode: teamCode }, {$push: {roleIds: roleStatus.roleId, roleStatus}}, {upsert: true, new: true}).lean(lean);
return team;
}
public static async findTeamByCapAndStatus(roleId: string, status: number, lean = true) {
const teams = await ComBattleTeamModel.find({capId: roleId, status}).lean(lean);
return teams;
}
public static async getTeamByBlueprt(blueprtIds: Array<number>, status: number, pub = true, limit = 50, lean = true) {
const teams = await ComBattleTeamModel.find({blueprtId: {$in: blueprtIds}, status, pub}).limit(limit).lean(lean);
return teams;
}
}
export const ComBattleTeamModel = getModelForClass(ComBattleTeam);
+2
View File
@@ -39,6 +39,8 @@ export default class Role extends BaseModel {
blocked: boolean; // 是否屏蔽
@prop({ required: true })
code: string; // 邀请码
@prop({ required: true, default: 1 })
headHid: number; // 头像所用武将 Id
@prop({ required: true, default: 0 })
exp: number; // 经验值