✨ feat(gvg): 添加组建期邮件、添加自动解散定时任务
This commit is contained in:
@@ -560,6 +560,8 @@ export class GuildHandler {
|
||||
const guild = await GuildModel.dismiss(code, serverId);
|
||||
if (!guild) return resResult(STATUS.GUILD_DELETE_ERROR);
|
||||
|
||||
if(guild.leagueCode) return resResult(STATUS.GVG_GUILD_HAS_LEAGUE);
|
||||
|
||||
await sendMailToGuildByContent(MAIL_TYPE.GUILD_DISSMISS, code, {}, guild);
|
||||
await UserGuildModel.dismiss(code);
|
||||
const { members } = guild;
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
import { Application, BackendSession, ChannelService, HandlerService } from "pinus";
|
||||
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 { 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, REDIS_KEY, STATUS } from "../../../consts";
|
||||
import { resResult } from "../../../pubUtils/util";
|
||||
import { GuildModel, GuildType } from "../../../db/Guild";
|
||||
import { UserGuildModel } from "../../../db/UserGuild";
|
||||
@@ -8,14 +8,14 @@ import { GVGLeagueApplyModel } from "../../../db/GVGLeagueApply";
|
||||
import { calLeagueCe, getGroupIdOfServer, getGVGConfig, 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";
|
||||
import { getAllServerName, getServerName, updateUserInfo } from "../../../services/redisService";
|
||||
import { GVG } from "../../../pubUtils/dicParam";
|
||||
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";
|
||||
import { sendMailByContent, sendMailToGuildByContent } from "../../../services/mailService";
|
||||
import { getGVGCities } from "../../../services/gvg/gvgBattleService";
|
||||
import { guildQuitLeagueRecord } from "../../../services/gvg/gvgRecService";
|
||||
|
||||
@@ -411,6 +411,7 @@ export class GVGManageHandler {
|
||||
// 发送消息
|
||||
await sendMessageToGuildWithSuc(targetGuildCode, PUSH_ROUTE.LEAGUE_KICK, { leagueCode: myLeague.leagueCode });
|
||||
guildQuitLeagueRecord(myLeague.leagueCode, guild.name);
|
||||
await sendMailToGuildByContent(MAIL_TYPE.LEAGUE_KICK, guildCode, { params: [ myLeague.name ] });
|
||||
|
||||
// 返回
|
||||
return resResult(STATUS.SUCCESS, {
|
||||
@@ -483,8 +484,10 @@ export class GVGManageHandler {
|
||||
await GVGLeagueModel.dismiss(myLeague.leagueCode);
|
||||
// 发送消息
|
||||
for(let guildCode of myLeague.guildCodes) {
|
||||
await sendMessageToGuildWithSuc(guildCode, PUSH_ROUTE.LEAGUE_DISSMISS, { leagueCode: myLeague.leagueCode })
|
||||
await sendMessageToGuildWithSuc(guildCode, PUSH_ROUTE.LEAGUE_DISSMISS, { leagueCode: myLeague.leagueCode });
|
||||
await sendMailToGuildByContent(MAIL_TYPE.LEAGUE_DISSMISS, guildCode, { params: [ myLeague.name ]});
|
||||
}
|
||||
|
||||
// 返回
|
||||
return resResult(STATUS.SUCCESS, {
|
||||
hasLeague: false
|
||||
@@ -555,7 +558,8 @@ export class GVGManageHandler {
|
||||
// 修改联军数据 members,leader
|
||||
myLeague = await GVGLeagueModel.abdicate(myLeague.leagueCode, roleId, targetRoleId, targetRole._id);
|
||||
// 推送
|
||||
await sendMessageToUserWithSuc(targetRoleId, PUSH_ROUTE.LEAGUE_ABDICATE, { leagueCode: myLeague.leagueCode })
|
||||
await sendMessageToUserWithSuc(targetRoleId, PUSH_ROUTE.LEAGUE_ABDICATE, { leagueCode: myLeague.leagueCode });
|
||||
await sendMailByContent(MAIL_TYPE.LEAGUE_ABDICATE, roleId, { params: [ myLeague.name ] });
|
||||
|
||||
let myAuth = getMyAuth(myLeague, roleId);
|
||||
// 返回
|
||||
@@ -590,6 +594,12 @@ export class GVGManageHandler {
|
||||
|
||||
// 修改联军数据
|
||||
myLeague = await GVGLeagueModel.setInfo(targetLeagueCode, name, notice, icon);
|
||||
if(name != undefined) {
|
||||
await updateUserInfo(REDIS_KEY.LEAGUE_INFO, myLeague.leagueCode, [{ field: 'name', value: name }]);
|
||||
}
|
||||
if(icon != undefined) {
|
||||
await updateUserInfo(REDIS_KEY.LEAGUE_INFO, myLeague.leagueCode, [{ field: 'icon', value: name }]);
|
||||
}
|
||||
|
||||
// 返回
|
||||
return resResult(STATUS.SUCCESS, {
|
||||
|
||||
@@ -1,5 +1,15 @@
|
||||
import { GVGLeagueType } from "../../db/GVGLeague";
|
||||
|
||||
|
||||
/**
|
||||
* TODO 检查上周是否有占领城池
|
||||
* @param league
|
||||
* @returns boolean 是否占领
|
||||
*/
|
||||
export async function checkHasCities(league: GVGLeagueType) {
|
||||
return false
|
||||
}
|
||||
|
||||
/**
|
||||
* TODO 获取本联军上周占领的城池
|
||||
* @param league
|
||||
|
||||
@@ -11,6 +11,7 @@ import { getRandSingleEelm } from "../../pubUtils/util";
|
||||
import { GVG } from "../../pubUtils/dicParam";
|
||||
import { ServerlistModel } from "../../db/Serverlist";
|
||||
import { GuildModel, GuildType } from "../../db/Guild";
|
||||
import { checkHasCities } from "./gvgBattleService";
|
||||
|
||||
// 定时器相关
|
||||
export async function createNewGVGConfig() {
|
||||
@@ -24,7 +25,13 @@ export async function createNewGVGConfig() {
|
||||
} catch(e) {
|
||||
console.log('remote未初始完');
|
||||
}
|
||||
// TODO 每周自动解散一些联军
|
||||
// 每周自动解散一些联军
|
||||
let autoLeagues = await GVGLeagueModel.findAutoCreateLeague();
|
||||
let needDissmissLeagueId: string[] = [];
|
||||
for(let league of autoLeagues) {
|
||||
if(!await checkHasCities(league)) needDissmissLeagueId.push(league._id);
|
||||
}
|
||||
await GVGLeagueModel.dismissByIds(needDissmissLeagueId);
|
||||
return config;
|
||||
}
|
||||
|
||||
|
||||
@@ -209,28 +209,20 @@ function getAuthFromManageType(type: LEAGUE_MANAGE_TYPE) {
|
||||
|
||||
export async function memberJoinGuildToLeague(guild: GuildType, role: RoleType) {
|
||||
if(!guild.leagueCode) return;
|
||||
let league = await GVGLeagueModel.joinMember(guild.leagueCode, guild.code, role.roleId);
|
||||
// TODO redis联军更新
|
||||
console.log(league);
|
||||
await GVGLeagueModel.joinMember(guild.leagueCode, guild.code, role.roleId);
|
||||
}
|
||||
|
||||
export async function memberQuitGuildToLeague(guild: GuildType, role: RoleType) {
|
||||
if(!guild.leagueCode) return;
|
||||
let league = await GVGLeagueModel.quitMember(guild.leagueCode, role.roleId);
|
||||
// TODO redis联军更新
|
||||
console.log(league);
|
||||
await GVGLeagueModel.quitMember(guild.leagueCode, role.roleId);
|
||||
}
|
||||
|
||||
export async function guildDismissToLeague(guild: GuildType) {
|
||||
if(!guild.leagueCode) return;
|
||||
let league = await GVGLeagueModel.quitGuild(guild.leagueCode, guild);
|
||||
// TODO redis联军更新
|
||||
console.log(league);
|
||||
await GVGLeagueModel.quitGuild(guild.leagueCode, guild);
|
||||
}
|
||||
|
||||
export async function guildAbdicateToLeague(guild: GuildType, fromRoleId: string, toRole: RoleType) {
|
||||
if(!guild.leagueCode) return;
|
||||
let league = await GVGLeagueModel.abdicateGuild(guild.leagueCode, fromRoleId, toRole.roleId, toRole._id);
|
||||
// TODO redis联军更新
|
||||
console.log(league);
|
||||
await GVGLeagueModel.abdicateGuild(guild.leagueCode, fromRoleId, toRole.roleId, toRole._id);
|
||||
}
|
||||
@@ -61,7 +61,10 @@ export enum MAIL_TYPE {
|
||||
GUILD_MAIL = 31, // 军团邮件
|
||||
REBATE = 32, // 返利邮件
|
||||
GROUP_SHOP_REFUND = 33, // 退费
|
||||
ARTIFACT_OVER = 34, // 退费
|
||||
ARTIFACT_OVER = 34, // 宝物数量超过
|
||||
LEAGUE_DISSMISS = 35, // 联军解散
|
||||
LEAGUE_KICK = 36, // 被踢出联军
|
||||
LEAGUE_ABDICATE = 37, // 被任命盟主
|
||||
HELP_HARVEST = 38, // 帮收
|
||||
};
|
||||
|
||||
|
||||
@@ -337,6 +337,7 @@ export const STATUS = {
|
||||
GVG_BATTLE_CITY_FULL: { code: 21331, simStr: '城市已满员' },
|
||||
GVG_BATTLE_TEAM_INVALID: { code: 21332, simStr: '无效的队伍' },
|
||||
GVG_CITY_NOT_FOUND: { code: 21333, simStr: '城池不存在' },
|
||||
GVG_GUILD_HAS_LEAGUE: { code: 21334, simStr: '需要先退出联军才能解散军团' },
|
||||
|
||||
// GVG征战中原
|
||||
GVG_VESTIGE_ERR: { code: 21350, simStr: '今日未开放该遗迹' },
|
||||
|
||||
@@ -146,6 +146,10 @@ export default class GVGLeague extends BaseModel {
|
||||
return league
|
||||
}
|
||||
|
||||
public static async dismissByIds(_ids: string[]) {
|
||||
await GVGLeagueModel.updateMany({ _id: { $in: _ids } }, { $set: { status: 0 }});
|
||||
}
|
||||
|
||||
public static async abdicate(leagueCode: string, fromRoleId: string, toRoleId: string, leader: string) {
|
||||
let league: GVGLeagueType = await GVGLeagueModel.findOneAndUpdate({ leagueCode, status: 1, 'members.roleId': fromRoleId }, { $set: { 'members.$.auth': LEAGUE_AUTH.SUB_LEADER }}, { new: true }).lean();
|
||||
league = await GVGLeagueModel.findOneAndUpdate({ leagueCode, status: 1, 'members.roleId': toRoleId }, { $set: { 'members.$.auth': LEAGUE_AUTH.LEADER, leader }}, { new: true }).lean();
|
||||
@@ -179,6 +183,11 @@ export default class GVGLeague extends BaseModel {
|
||||
league = await GVGLeagueModel.findOneAndUpdate({ leagueCode, status: 1, 'members.roleId': toRoleId }, { $set: updateInfo }, { new: true }).lean();
|
||||
return league
|
||||
}
|
||||
|
||||
public static async findAutoCreateLeague() {
|
||||
let leagues: GVGLeagueType[] = await GVGLeagueModel.find({ isAuto: true, status: 1 }).lean();
|
||||
return leagues
|
||||
}
|
||||
}
|
||||
|
||||
export const GVGLeagueModel = getModelForClass(GVGLeague);
|
||||
|
||||
Reference in New Issue
Block a user