获取列表,申请,同意
This commit is contained in:
@@ -1,8 +1,8 @@
|
||||
import { Application, BackendSession, pinus } from 'pinus';
|
||||
import { resResult } from '../../../pubUtils/util';
|
||||
import { STATUS, GUILD_OPERATE, GUILD_AUTH, GUILD_JOB } from '../../../consts';
|
||||
import { STATUS, GUILD_OPERATE, GUILD_AUTH, GUILD_JOB, GUILD_APPLY_TYPE } from '../../../consts';
|
||||
import { UserGuildModel } from '../../../db/UserGuild';
|
||||
import { checkAuth } from '../../../services/guildService';
|
||||
import { checkAuth, joinGuild } from '../../../services/guildService';
|
||||
import { GuildModel } from '../../../db/Guild';
|
||||
import { RoleModel, RoleType } from '../../../db/Role';
|
||||
import { GUILD } from '../../../pubUtils/dicParam';
|
||||
@@ -10,6 +10,7 @@ import { handleCost } from '../../../services/rewardService';
|
||||
import { getGoldObject } from '../../../pubUtils/itemUtils';
|
||||
import { getSeconds } from '../../../pubUtils/timeUtil';
|
||||
import { GuildListInfo } from '../../../pubUtils/interface';
|
||||
import { UserGuildApplyModel } from '../../../db/UserGuildApply';
|
||||
|
||||
export default function (app: Application) {
|
||||
return new GuildHandler(app);
|
||||
@@ -92,7 +93,9 @@ export class GuildHandler {
|
||||
if(!userGuild) {
|
||||
return resResult(STATUS.SUCCESS, { hasGuild: false })
|
||||
};
|
||||
const guild = await GuildModel.findByCode(userGuild.guildCode);
|
||||
let guild = await GuildModel.findByCode(userGuild.guildCode);
|
||||
|
||||
// TODO 刷新日活跃,周活跃
|
||||
|
||||
// TODO 获取排行榜
|
||||
const rank = 0;
|
||||
@@ -102,5 +105,80 @@ export class GuildHandler {
|
||||
return resResult(STATUS.SUCCESS, result);
|
||||
}
|
||||
|
||||
// 玩家申请公会
|
||||
async applyGuild(msg: { code: string }, session: BackendSession) {
|
||||
|
||||
const roleId = session.get('roleId');
|
||||
const { code } = msg;
|
||||
|
||||
//TODO 检查权限是否够 等策划表
|
||||
|
||||
const guild = await GuildModel.findByCode(code);
|
||||
const { isMemberMax, isAuto, ceLimit, lv } = guild;
|
||||
if(isMemberMax) {
|
||||
return resResult(STATUS.GUILD_MEMBER_MAX);
|
||||
}
|
||||
|
||||
const role = await RoleModel.findByRoleId(roleId);
|
||||
if(ceLimit > role.ce) {
|
||||
return resResult(STATUS.GUILD_NOT_REACH_CONDI);
|
||||
}
|
||||
|
||||
let hasGuild = false;
|
||||
if(isAuto) { // 自动加入
|
||||
const joinResult = await joinGuild(code, lv, roleId);
|
||||
if(joinResult.status == 0) {
|
||||
return joinResult.resResult;
|
||||
}
|
||||
|
||||
hasGuild = true;
|
||||
} else { // 不自动加入,插入申请表
|
||||
await UserGuildApplyModel.createUserGuildApply(role, guild, GUILD_APPLY_TYPE.APPLY);
|
||||
}
|
||||
|
||||
// 返回
|
||||
return resResult(STATUS.SUCCESS, { code, hasGuild });
|
||||
}
|
||||
|
||||
// 玩家申请公会
|
||||
async getApplyList(msg: { code: string, lastApplyCode: string }, session: BackendSession) {
|
||||
|
||||
const roleId = session.get('roleId');
|
||||
const { code, lastApplyCode } = msg;
|
||||
|
||||
// TODO 查询权限 等策划表
|
||||
|
||||
const result = await UserGuildApplyModel.getListByGuild(code, lastApplyCode);
|
||||
const list = result.map(cur => {
|
||||
let role = <RoleType>cur.role;
|
||||
return { applyCode: cur.applyCode, ...role };
|
||||
});
|
||||
|
||||
return resResult(STATUS.SUCCESS, { list });
|
||||
}
|
||||
|
||||
// 团长同意/拒绝公会申请
|
||||
async receiveApply(msg: { code: string, applyCodeList: [string], isReceived: boolean }, session: BackendSession) {
|
||||
|
||||
const roleId = session.get('roleId');
|
||||
const { code, applyCodeList, isReceived } = msg;
|
||||
|
||||
// TODO 查询权限 等策划表
|
||||
|
||||
let roleIds = new Array<string>();
|
||||
if(isReceived) { // 同意申请,加入
|
||||
const guild = await GuildModel.findByCode(code);
|
||||
const applyList = await UserGuildApplyModel.getListByApplyCode(applyCodeList);
|
||||
|
||||
for(let { roleId } of applyList) {
|
||||
const joinResult = await joinGuild(code, guild.lv, roleId);
|
||||
if(joinResult.status == 0) break;
|
||||
roleIds.push(roleId);
|
||||
}
|
||||
} else { // 拒绝申请,删除申请
|
||||
await UserGuildApplyModel.deleteApplyByApplyCode(applyCodeList);
|
||||
}
|
||||
|
||||
return resResult(STATUS.SUCCESS, { roleIds });
|
||||
}
|
||||
}
|
||||
@@ -1,4 +1,10 @@
|
||||
import { gameData } from "../pubUtils/data";
|
||||
import { GuildModel } from "../db/Guild";
|
||||
import { resResult } from "../pubUtils/util";
|
||||
import { STATUS } from "../consts";
|
||||
import { RoleModel } from "../db/Role";
|
||||
import { UserGuildModel } from "../db/UserGuild";
|
||||
import { UserGuildApplyModel } from "../db/UserGuildApply";
|
||||
|
||||
/**
|
||||
* @description 检查该玩家是否有权限做操作
|
||||
@@ -9,4 +15,35 @@ export function checkAuth(func: number, auth: number) {
|
||||
const dicGuildAuth = gameData.guildAuth.get(func);
|
||||
if(!dicGuildAuth) return false;
|
||||
return dicGuildAuth.includes(auth);
|
||||
}
|
||||
|
||||
/**
|
||||
* @description 加入公会
|
||||
* @param code 公会code
|
||||
* @param lv 公会当前等级,判断人数用
|
||||
* @param roleId 加入的玩家
|
||||
*/
|
||||
export async function joinGuild(code: string, lv: number, roleId: string) {
|
||||
|
||||
const hasGuild = await UserGuildModel.getMyGuild(roleId);
|
||||
if(!!hasGuild) {
|
||||
return { status: 0, resResult: resResult(STATUS.GUILD_HAS_JOIN) };
|
||||
}
|
||||
|
||||
// TODO 读策划表获取最大人数
|
||||
const maxMemberCnt = 10;
|
||||
const guild = await GuildModel.addGuild(code, roleId, maxMemberCnt);
|
||||
if(!guild) {
|
||||
return { status: 0, resResult: resResult(STATUS.GUILD_MEMBER_MAX) };
|
||||
}
|
||||
|
||||
const role = await RoleModel.findByRoleId(roleId);
|
||||
const userGuild = await UserGuildModel.createUserGuild(guild.code, role, false);
|
||||
if(!userGuild) {
|
||||
return { status: 0, resResult: resResult(STATUS.GUILD_CREATE_ERROR) };
|
||||
}
|
||||
|
||||
await UserGuildApplyModel.deleteApply(roleId); // 删除玩家所有对其他公会的申请
|
||||
|
||||
return { status: 1, guild, userGuild }
|
||||
}
|
||||
@@ -112,7 +112,7 @@ describe('军团测试', function() {
|
||||
expect(res.data.leader).to.have.deep.property('loginTime').that.is.an('number');
|
||||
|
||||
expect(res.data).to.have.deep.property('myInfo').that.is.an('object');
|
||||
expect(res.data.myInfo).to.have.deep.property('honour').that.is.an('number');
|
||||
expect(res.data.myInfo).to.have.deep.property('honourWeekly').that.is.an('number');
|
||||
expect(res.data.myInfo).to.have.deep.property('job').that.is.an('number');
|
||||
expect(res.data.myInfo).to.have.deep.property('auth').that.is.an('number');
|
||||
|
||||
@@ -126,4 +126,25 @@ describe('军团测试', function() {
|
||||
});
|
||||
});
|
||||
|
||||
it('获取申请列表', function (done) {
|
||||
pinusClient.request('battle.guildHandler.getApplyList', { }, (res) => {
|
||||
// 消息回调
|
||||
expect(res).to.be.an('object');
|
||||
expect(res.code).equal(0);
|
||||
expect(res.data).to.be.an('object');
|
||||
expect(res.data).to.have.deep.property('list').that.is.an('array');
|
||||
res.data.list.forEach(list => {
|
||||
expect(list).to.have.deep.property('applyCode').that.is.a('string');
|
||||
expect(list).to.have.deep.property('roleId').that.is.a('string');
|
||||
expect(list).to.have.deep.property('roleName').that.is.a('string');
|
||||
expect(list).to.have.deep.property('ce').that.is.a('number');
|
||||
expect(list).to.have.deep.property('headHid').that.is.a('number');
|
||||
expect(list).to.have.deep.property('sHid').that.is.a('number');
|
||||
expect(list).to.have.deep.property('lv').that.is.a('number');
|
||||
expect(list).to.have.deep.property('title').that.is.a('string');
|
||||
expect(list).to.have.deep.property('loginTime').that.is.a('number');
|
||||
});
|
||||
done();
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user