feat(gvg): 组建期聊天和邮件

This commit is contained in:
luying
2023-01-05 20:50:41 +08:00
parent 03fa74f3d1
commit 6cc38053e7
16 changed files with 156 additions and 13 deletions

View File

@@ -1,11 +1,11 @@
import { Application, BackendSession, ChannelService, HandlerService } from "pinus";
import { GUILD_AUTH, GVG_APPLY_TYPE, GVG_PERIOD, GVG_SERVER_TYPE, LEAGUE_AUTH, LEAGUE_MANAGE_TYPE, PUSH_ROUTE, STATUS } from "../../../consts";
import { CHANNEL_PREFIX, GUILD_AUTH, GVG_APPLY_TYPE, GVG_PERIOD, GVG_SERVER_TYPE, LEAGUE_AUTH, LEAGUE_MANAGE_TYPE, MAIL_TYPE, MSG_SOURCE, MSG_TYPE, PUSH_ROUTE, STATUS } from "../../../consts";
import { resResult } from "../../../pubUtils/util";
import { GuildModel, GuildType } from "../../../db/Guild";
import { UserGuildModel } from "../../../db/UserGuild";
import { GVGLeagueModel, GVGLeagueType } from "../../../db/GVGLeague";
import { GVGLeagueApplyModel } from "../../../db/GVGLeagueApply";
import { getGVGPeriodData, getGVGServerType, getServersOfSameGroup } from "../../../services/gvg/gvgService";
import { getGroupIdOfServer, getGVGPeriodData, getGVGServerType, getServersOfSameGroup } from "../../../services/gvg/gvgService";
import { checkCanManage, checkGuildLeader, checkLeagueAuth, createLeague, getLeagueApplyData, getLeagueInviteData, getMyAuth, joinGuildToLeague } from "../../../services/gvg/gvgTeamService";
import { LeagueGuildInfo, LeagueListInfo, LeagueMemberListInfo, LeagueSimpleInfo } from "../../../domain/gvgField/returnData";
import { getAllServerName, getServerName } from "../../../services/redisService";
@@ -14,6 +14,8 @@ import { RoleModel } from "../../../db/Role";
import { GVGUserDataModel } from "../../../db/GVGUserData";
import { sendMessageToGuildWithSuc, sendMessageToUserWithSuc } from "../../../services/pushService";
import { GVGLeaguePrepareModel } from "../../../db/GVGLeaguePrepare";
import { createGroupMsg, pushGroupMsgToRoom } from "../../../services/chatService";
import { sendMailToGuildByContent } from "../../../services/mailService";
export default function (app: Application) {
new HandlerService(app, {});
@@ -571,4 +573,56 @@ export class GVGManageHandler {
icon: myLeague.icon,
});
}
// 团长发送消息给军团内所有成员的邮箱
async sendMail(msg: { content: string }, session: BackendSession) {
const roleId = session.get('roleId');
const roleName = session.get('roleName');
const guildCode = session.get('guildCode');
const { content } = msg;
// 权限
let myLeague = await GVGLeagueModel.findLeagueByGuild(guildCode);
if(!myLeague) return resResult(STATUS.GVG_LEAGUE_NOT_EXIST);
const checkAuth = await checkLeagueAuth(roleId, myLeague, LEAGUE_MANAGE_TYPE.SEND_MAIL);
if(!checkAuth) return resResult(STATUS.GVG_HAS_NO_AUTH);
const { guildCodes } = myLeague;
//下发邮件
for(let guildCode of guildCodes) {
await sendMailToGuildByContent(MAIL_TYPE.GUILD_MAIL, guildCode, { sendName: `${roleName}`, params: [content] });
}
return resResult(STATUS.SUCCESS, { isSuccess: true });
}
// 团长发送世界频道
async recruit(msg: { content: string }, session: BackendSession) {
const roleId = session.get('roleId');
const roleName = session.get('roleName');
const serverId = session.get('serverId');
const guildCode = session.get('guildCode');
const { content } = msg;
// 检查时间
const checkResult = await checkCanManage(serverId);
if(checkResult.code != 0) return checkResult;
// 权限
let myLeague = await GVGLeagueModel.findLeagueByGuild(guildCode);
if(!myLeague) return resResult(STATUS.GVG_LEAGUE_NOT_EXIST);
const checkAuth = await checkLeagueAuth(roleId, myLeague, LEAGUE_MANAGE_TYPE.RERUIT);
if(!checkAuth) return resResult(STATUS.GVG_HAS_NO_AUTH);
// 发送战区频道消息
const groupId = await getGroupIdOfServer(serverId);
let channelId = `${groupId}`;
const msgData = await createGroupMsg(roleId, roleName, CHANNEL_PREFIX.GVG, channelId, MSG_TYPE.RICH_TEXT, MSG_SOURCE.GVG_RECURIT, JSON.stringify({ leagueCode: myLeague.leagueCode, name: myLeague.name, info: content }), '', '');
if (!msgData) return resResult(STATUS.WRONG_PARMS);
await pushGroupMsgToRoom(msgData);
return resResult(STATUS.SUCCESS, { isSuccess: true });
}
}