寻宝掉落

This commit is contained in:
liangtongchuan
2020-12-02 00:16:07 +08:00
parent 15cf434d73
commit cdd889f1aa
9 changed files with 116 additions and 13 deletions

View File

@@ -40,6 +40,9 @@ export class RoleStatus {
// 是否机器人
@prop({ required: true, default: false })
isRobot: boolean;
// 是否领奖
@prop({ required: true, default: false })
gotReward: boolean;
constructor(roleId: string, roleName: string, isCap: boolean, isFrd: boolean, headHid: number, sHid: number, topFiveCe: number, lv: number, heroes = [], isRobot = false) {
this.roleId = roleId;
@@ -81,7 +84,7 @@ export default class ComBattleTeam extends BaseModel {
@prop({ required: true })
quality: number;
// 战斗状态 0未开始1已开始2胜利3失败4已领奖
// 战斗状态 0未开始1已开始2胜利3失败
@prop({ required: true, default: 0 })
status: number;
@@ -125,6 +128,16 @@ export default class ComBattleTeam extends BaseModel {
return team;
}
public static async setupBattleInfo(teamCode: string, roleId: string, heroes: Array<number>, battleCode: string, lean = true) {
const team = await ComBattleTeamModel.findOneAndUpdate({ teamCode, 'roleStatus.roleId': roleId}, {$set: {'roleStatus.$.heroes': heroes, 'roleStatus.$.battleCode': battleCode}}, {new: true}).lean(lean);
return team;
}
public static async updateRewardSt(roleId: string, battleCode: string, gotReward: boolean, lean = true) {
const team = await ComBattleTeamModel.findOneAndUpdate({ roleIds: roleId, 'roleStatus.battleCode': battleCode}, {$set: {'roleStatus.$.gotReward': gotReward}}).lean(lean);
return team;
}
public static async syncTeamData(teamData: {teamCode: string, status: number, roleStatus: Array<RoleStatus>}, lean = true) {
const team = await ComBattleTeamModel.findOneAndUpdate({ teamCode: teamData.teamCode }, {$set :{...teamData, roleCnt: teamData.roleStatus.length}}, {new: true}).lean(lean);
return team;
@@ -191,6 +204,26 @@ export default class ComBattleTeam extends BaseModel {
const teams = await ComBattleTeamModel.find(query).limit(limitCnt).lean(lean);
return teams;
}
public static async getAssistTeamsByTime(roleId: string, qualityArr?: Array<number>, time?: Date, isAssist?: boolean, lean = true) {
let query = {roleIds: roleId, status: {$in: [0, 1, 2]}}; // 失败不计入助战
if (qualityArr) {
query = Object.assign(query, {quality: {$in: qualityArr}});
}
if (time) {
query = Object.assign(query, {createdAt: {$gte: time}});
}
if (isAssist) {
query = Object.assign(query, {capId: {$ne: roleId}});
}
const teams = await ComBattleTeamModel.find(query).lean(lean);
return teams;
}
public static async getTeamByRoleAndBattleCode(roleId: string, battleCode: string, lean = true) {
const team = await ComBattleTeamModel.findOne({roleIds: roleId, 'roleStatus.battleCode': battleCode}).lean(lean);
return team;
}
}
export const ComBattleTeamModel = getModelForClass(ComBattleTeam);