🐞 fix(guild): 优化修复军团重置类问题的代码

This commit is contained in:
dingchaolin
2023-02-28 11:33:03 +08:00
parent b4c81f6b79
commit f66e784b63
2 changed files with 32 additions and 8 deletions

View File

@@ -1,7 +1,7 @@
import { gameData, getGuildActiveWeekReward, getGuildActiveByIdAndType, getGoodById } from "../pubUtils/data";
import { GuildModel, GuildType, GuildUpdateParam } from "../db/Guild";
import { resResult, shouldRefresh } from "../pubUtils/util";
import { STATUS, MAIL_TYPE, GUILD_AUTH, GUILD_JOB, REDIS_KEY, CHAT_SERVER, TASK_TYPE, COUNTER, GUILD_REC_TYPE, PUSH_ROUTE, WAR_TYPE } from "../consts";
import { STATUS, MAIL_TYPE, GUILD_AUTH, GUILD_JOB, REDIS_KEY, CHAT_SERVER, TASK_TYPE, COUNTER, GUILD_REC_TYPE, PUSH_ROUTE, WAR_TYPE, USER_GUILD_STATUS } from "../consts";
import { RoleModel, RoleType } from "../db/Role";
import { UserGuildModel, UserGuildType, WishGood } from "../db/UserGuild";
import { UserGuildApplyModel } from "../db/UserGuildApply";
@@ -238,6 +238,21 @@ export async function getUserGuildWithRefActive(roleId: string, select?: string)
return userGuild;
}
/**
* 查询我在今天退出的军团中是否许过愿
*
* @param {string} roleId
* @return {*}
*/
async function isIWishedInMyTodayQuitGuilds(roleId: string): Promise<Boolean> {
const guilds = await UserGuildModel.findMyGuildsOfToday(roleId, 'wishGoods status');
const myWishedGuild = guilds.find((guild) => {
return (guild.status != USER_GUILD_STATUS.ON) && (guild.wishGoods && guild.wishGoods.length > 0);
});
return !!myWishedGuild;
}
/**
* 今天在军团中是否能许愿
*
@@ -250,13 +265,8 @@ export async function canWishToday(roleId: string): Promise<Boolean> {
return false;
}
let userGuild = await UserGuildModel.findMyLastGuild(roleId, ' wishGoods');
if (!userGuild) {
return true;
}
// 今天退出过军团 & 在退出的军团许过愿
if (isToday(role.quitGuildTime) && (userGuild.wishGoods && userGuild.wishGoods.length > 0)) {
if (isToday(role.quitGuildTime) && (await isIWishedInMyTodayQuitGuilds(roleId))) {
// 新加入的军团不允许许愿
return false;
}

View File

@@ -150,7 +150,7 @@ export default class UserGuild extends BaseModel {
const doc = new UserGuildModel();
let job = isLeader? GUILD_JOB.DAJIANGJUN: GUILD_JOB.SHIBING;
let auth = isLeader? GUILD_AUTH.LEADER: GUILD_AUTH.MEMBER;
let update = Object.assign(doc.toJSON(), { guildCode, roleId: role.roleId, role: role._id, job, auth, receiveBoxs, donateCnt, receivedActive, encourageCnt, bossChallengeCnt, receivedWishPool, wishGoods, wishDntCnt, refTimeDaily, refBossTime, trainCount, buyTrainCount, trainTime });
const update = Object.assign(doc.toJSON(), { guildCode, roleId: role.roleId, role: role._id, job, auth, receiveBoxs, donateCnt, receivedActive, encourageCnt, bossChallengeCnt, receivedWishPool, wishGoods, wishDntCnt, refTimeDaily, refBossTime, trainCount, buyTrainCount, trainTime });
// 【退出军团】 和 【再加入军团】在同一天
if (isToday(role.quitGuildTime)) {
@@ -195,6 +195,20 @@ export default class UserGuild extends BaseModel {
return userGuild;
}
/**
* 查询我今天所有加入过的军团(从上次的刷新时间(5AM)到现在)
*
* @static
* @param {string} roleId
* @param {string} select
* @return {*}
* @memberof UserGuild
*/
public static async findMyGuildsOfToday(roleId: string, select: string) {
const userGuilds = await UserGuildModel.find({ roleId, createdAt: { $gt: getZeroPointD() } }).select(select).lean();
return userGuilds;
}
public static async dismiss(guildCode: string) {
const result = await UserGuildModel.updateMany({ guildCode }, { status: USER_GUILD_STATUS.DISMISSED });