寻宝自动匹配到未开始的队伍;调整索引
This commit is contained in:
@@ -144,10 +144,15 @@ export class ComBattleHandler {
|
||||
let roleId = session.get('roleId');
|
||||
let roleName = session.get('roleName');
|
||||
let sid = session.get('sid');
|
||||
let teamCode = session.get('teamCode');
|
||||
const { qualityArr } = msg;
|
||||
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);
|
||||
let thiz = this;
|
||||
setTimeout(async () => {
|
||||
@@ -211,23 +216,21 @@ export class ComBattleHandler {
|
||||
|
||||
let roleStatus = new RoleStatus(roleId, roleName, false, isFrd, headHid, sHid, topFiveCe, lv);
|
||||
const team = await ComBattleTeamModel.addRole(teamCode, roleStatus);
|
||||
if (!team) {
|
||||
return resResult(STATUS.COM_BATTLE_CREATE_ERR);
|
||||
if (!team || team.roleIds.length === 3) {
|
||||
return resResult(STATUS.COM_BATTLE_JOIN_ERR);
|
||||
}
|
||||
|
||||
let channelService = this.app.get('channelService');
|
||||
let channel = channelService.getChannel(teamCode, false);
|
||||
teamStatus.roleIds.push(roleId);
|
||||
teamStatus.roleStatus.push(roleStatus);
|
||||
channel.pushMessage('onTeamJoin', {teamInfo: teamStatus});
|
||||
let users = channel.getMembers();
|
||||
if (users.indexOf(roleId) === -1) {
|
||||
channel.add(roleId, sid);
|
||||
}
|
||||
channel.pushMessage('onTeamJoin', {teamCode, roleInfo: roleStatus});
|
||||
teamStatus.roleIds.push(roleId);
|
||||
teamStatus.roleStatus.push(roleStatus);
|
||||
|
||||
return resResult(STATUS.SUCCESS, { teamInfo: {
|
||||
teamCode, roleStatus: teamStatus.roleStatus, capId: teamStatus.capId, ceLimit: teamStatus.ceLimit
|
||||
}});
|
||||
return resResult(STATUS.SUCCESS, { teamInfo: teamStatus});
|
||||
}
|
||||
|
||||
async getTeams(msg: { blueprtIds: Array<number> }, session: BackendSession) {
|
||||
|
||||
@@ -59,7 +59,7 @@ export class RoleStatus {
|
||||
|
||||
@index({ teamCode: 1 })
|
||||
@index({ roleIds: 1 })
|
||||
@index({ blueprtId: 1, status: 1, pub: 1})
|
||||
@index({ status: 1, blueprtId: 1, pub: 1})
|
||||
export default class ComBattleTeam extends BaseModel {
|
||||
|
||||
// 队伍唯一编号
|
||||
@@ -158,6 +158,11 @@ export default class ComBattleTeam extends BaseModel {
|
||||
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) {
|
||||
let query = {roleIds: roleId};
|
||||
if (quality) {
|
||||
|
||||
Reference in New Issue
Block a user