寻宝自动匹配到未开始的队伍;调整索引
This commit is contained in:
@@ -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) {
|
||||||
|
|||||||
@@ -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) {
|
||||||
|
|||||||
Reference in New Issue
Block a user