寻宝自动匹配到未开始的队伍;调整索引

This commit is contained in:
liangtongchuan
2020-11-28 23:12:12 +08:00
parent a247f381d0
commit 38fb02907b
2 changed files with 18 additions and 10 deletions

View File

@@ -144,10 +144,15 @@ export class ComBattleHandler {
let roleId = session.get('roleId'); let roleId = session.get('roleId');
let roleName = session.get('roleName'); let roleName = session.get('roleName');
let sid = session.get('sid'); let sid = session.get('sid');
let teamCode = session.get('teamCode');
const { qualityArr } = msg; const { qualityArr } = msg;
let { lv, headHid = 19, topFiveCe = 1000, sHid = 19 } = await RoleModel.findByRoleId(roleId); let { lv, headHid = 19, topFiveCe = 1000, sHid = 19 } = await RoleModel.findByRoleId(roleId);
const team = await ComBattleTeamModel.getOneTeamByQualityAndSt(qualityArr, COM_TEAM_STATUS.DEFAULT, topFiveCe);
// TODO: 有匹配的队伍还需要重新触发加入
if (team) {
return resResult(STATUS.SUCCESS, {teamCode: team.teamCode});
}
let teamCode = session.get('teamCode');
await setTeamSearchReq(roleId, sid, qualityArr); await setTeamSearchReq(roleId, sid, qualityArr);
let thiz = this; let thiz = this;
setTimeout(async () => { setTimeout(async () => {
@@ -211,23 +216,21 @@ export class ComBattleHandler {
let roleStatus = new RoleStatus(roleId, roleName, false, isFrd, headHid, sHid, topFiveCe, lv); let roleStatus = new RoleStatus(roleId, roleName, false, isFrd, headHid, sHid, topFiveCe, lv);
const team = await ComBattleTeamModel.addRole(teamCode, roleStatus); const team = await ComBattleTeamModel.addRole(teamCode, roleStatus);
if (!team) { if (!team || team.roleIds.length === 3) {
return resResult(STATUS.COM_BATTLE_CREATE_ERR); return resResult(STATUS.COM_BATTLE_JOIN_ERR);
} }
let channelService = this.app.get('channelService'); let channelService = this.app.get('channelService');
let channel = channelService.getChannel(teamCode, false); let channel = channelService.getChannel(teamCode, false);
teamStatus.roleIds.push(roleId);
teamStatus.roleStatus.push(roleStatus);
channel.pushMessage('onTeamJoin', {teamInfo: teamStatus});
let users = channel.getMembers(); let users = channel.getMembers();
if (users.indexOf(roleId) === -1) { if (users.indexOf(roleId) === -1) {
channel.add(roleId, sid); channel.add(roleId, sid);
} }
channel.pushMessage('onTeamJoin', {teamCode, roleInfo: roleStatus});
teamStatus.roleIds.push(roleId);
teamStatus.roleStatus.push(roleStatus);
return resResult(STATUS.SUCCESS, { teamInfo: { return resResult(STATUS.SUCCESS, { teamInfo: teamStatus});
teamCode, roleStatus: teamStatus.roleStatus, capId: teamStatus.capId, ceLimit: teamStatus.ceLimit
}});
} }
async getTeams(msg: { blueprtIds: Array<number> }, session: BackendSession) { async getTeams(msg: { blueprtIds: Array<number> }, session: BackendSession) {

View File

@@ -59,7 +59,7 @@ export class RoleStatus {
@index({ teamCode: 1 }) @index({ teamCode: 1 })
@index({ roleIds: 1 }) @index({ roleIds: 1 })
@index({ blueprtId: 1, status: 1, pub: 1}) @index({ status: 1, blueprtId: 1, pub: 1})
export default class ComBattleTeam extends BaseModel { export default class ComBattleTeam extends BaseModel {
// 队伍唯一编号 // 队伍唯一编号
@@ -158,6 +158,11 @@ export default class ComBattleTeam extends BaseModel {
return teams; return teams;
} }
public static async getOneTeamByQualityAndSt(qualityArr: Array<number>, status: number, ce = 0, pub = true, lean = true) {
const team = await ComBattleTeamModel.findOne({quality: {$in: qualityArr}, status, ceLimit: {$lte: ce}, pub}).lean(lean);
return team;
}
public static async getTeamByRoleAndTime(roleId: string, quality?: number, time?: Date, isAssist?: boolean, limitCnt = 50, lean = true) { public static async getTeamByRoleAndTime(roleId: string, quality?: number, time?: Date, isAssist?: boolean, limitCnt = 50, lean = true) {
let query = {roleIds: roleId}; let query = {roleIds: roleId};
if (quality) { if (quality) {