🐞 fix(军团): 退出游戏cd时间变为和服务器开服时间相关

This commit is contained in:
luying
2023-03-22 16:52:04 +08:00
parent 85197ffc31
commit e31bd2bb30
4 changed files with 39 additions and 7 deletions

View File

@@ -2,7 +2,7 @@ import { Application, BackendSession, ChannelService, HandlerService, } from 'pi
import { resResult, getRandEelm, shouldRefresh, sortArrRandom } from '../../../pubUtils/util';
import { STATUS, GUILD_OPERATE, GUILD_AUTH, GUILD_JOB, GUILD_APPLY_TYPE, GUILD_STRUCTURE, GUILD_REC_TYPE, GUILD_STRUCTURE_NAME, MAIL_TYPE, REDIS_KEY, GUILD_SELECT, USER_GUILD_SELECT, TASK_TYPE, DEBUG_MAGIC_WORD, CHANNEL_PREFIX, MSG_TYPE, MSG_SOURCE, ITEM_CHANGE_REASON, TA_EVENT, GUILD_DISMISS_WAY, GUILD_MASTER_CHANGE_WAY, GUILD_QUIT_WAY, PUSH_ROUTE } from '../../../consts';
import { UserGuildModel, UserGuildType } from '../../../db/UserGuild';
import { checkAuth, joinGuild, getUserGuildWithRefActive, addActive, settleGuildWeekly, getMyGuildInfo, setUserGuildSession, getInvitationList, addGuildRecord, pushChangeGuildLeader, pushGuildMemberQuit, pushGuildDismiss, pushGuildInfoUpdate, getTodayGuildActive } from '../../../services/guildService';
import { checkAuth, joinGuild, getUserGuildWithRefActive, addActive, settleGuildWeekly, getMyGuildInfo, setUserGuildSession, getInvitationList, addGuildRecord, pushChangeGuildLeader, pushGuildMemberQuit, pushGuildDismiss, pushGuildInfoUpdate, getTodayGuildActive, getGuildQuitCdTime } from '../../../services/guildService';
import { GuildModel, GuildType, GuildUpdateParam } from '../../../db/Guild';
import { RoleModel, RoleType } from '../../../db/Role';
import { ARMY } from '../../../pubUtils/dicParam';
@@ -128,7 +128,7 @@ export class GuildHandler {
info.setApply(!!hasApply);
list.push(info);
}
return resResult(STATUS.SUCCESS, { quitTime, list });
return resResult(STATUS.SUCCESS, { quitTime, cdTime: await getGuildQuitCdTime(serverId), list });
}
// 团长修改军团名等信息
@@ -311,7 +311,7 @@ export class GuildHandler {
return resResult(STATUS.GUILD_NOT_REACH_CONDI);
}
if(nowSeconds() - role.quitGuildTime < dicParam.ARMY.ARMY_JOIN_COOLDOWNTIME * 60) {
if(nowSeconds() - role.quitGuildTime < (await getGuildQuitCdTime(serverId)) * 60) {
return resResult(STATUS.GUILD_QUIT_TIME);
}

View File

@@ -1,6 +1,6 @@
import { gameData, getGuildActiveWeekReward, getGuildActiveByIdAndType, getGoodById } from "../pubUtils/data";
import { GuildModel, GuildType, GuildUpdateParam } from "../db/Guild";
import { resResult, shouldRefresh } from "../pubUtils/util";
import { deltaDays, 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, USER_GUILD_STATUS } from "../consts";
import { RoleModel, RoleType } from "../db/Role";
import { UserGuildModel, UserGuildType, WishGood } from "../db/UserGuild";
@@ -9,7 +9,7 @@ import { getZeroPointD, getZeroPointOfTime, getZeroPointOfTimeD, nowSeconds } fr
import { pinus, BackendSession, FrontendOrBackendSession } from "pinus";
import { ARMY } from "../pubUtils/dicParam";
import { sendMailByContent } from "./mailService";
import { initSingleRank, getRoleOnlineInfo, updateUserInfo, isRoleOnline } from "./redisService";
import { initSingleRank, getRoleOnlineInfo, updateUserInfo, isRoleOnline, getServerCreateTime } from "./redisService";
import { lockData, lockDataNoRetry } from '../services/redLockService';
import { ErrLogModel } from '../db/ErrLog';
import { DATA_NAME } from '../consts/dataName';
@@ -30,6 +30,7 @@ import { BossInstanceModel } from "../db/BossInstance";
import { pick } from "underscore";
import { memberJoinGuildToLeague } from "./gvg/gvgTeamService";
import { isToday } from '../pubUtils/timeUtil';
import moment = require("moment");
export async function getMyGuildInfo(roleId: string, sid: string, userGuild: UserGuildType, guild: GuildType, serverId: number, session: FrontendOrBackendSession) {
@@ -503,4 +504,15 @@ export async function pushGuildMemberQuit(roleId: string, guildCode: string, gui
export async function pushGuildDismiss(guildCode: string) {
await sendMessageToGuildWithSuc(guildCode, PUSH_ROUTE.DISMISS, { code: guildCode });
delGuildChannel(guildCode);
}
export async function getGuildQuitCdTime(serverId: number) {
let serverTime = await getServerCreateTime(serverId);
let todayIndex = deltaDays(moment(serverTime * 1000).toDate(), new Date) + 1;
let result = 0;
for(let { day, minute } of gameData.guildQuitCd) {
if(todayIndex > day) result = minute;
}
console.log('####', serverId, serverTime, todayIndex, result)
return result
}

View File

@@ -344,7 +344,8 @@ export const gameData = {
gvgTeamDurability: new Map<number, number>(),
gvgPointByAreaId: dicGVGPointsByAreaId,
gvgReviveGold: new Map<number|'max', number>(),
dicPushMessage: dicPushMessage
dicPushMessage: dicPushMessage,
guildQuitCd: new Array<{day: number, minute: number}>(),
};
// 在此提供一些原先在gamedata中提供的方法以便更方便获取gameData数据
@@ -1270,6 +1271,13 @@ export function getReviveGold(cnt: number) {
return gameData.gvgReviveGold.get('max')||0;
}
function parseQuitGuildTime() {
let arr = decodeArrayListStr(param.ARMY.ARMY_JOIN_COOLDOWNTIME);
for(let [day, minute] of arr) {
gameData.guildQuitCd.push({ day: parseInt(day), minute: parseInt(minute) });
}
}
// 初始加载
function initDatas() {
parseDicParam();
@@ -1296,6 +1304,7 @@ function parseDicParam() {
parseGVGDurabilityMinus();
parseGVGTeamDurability();
parseGVGReviveCoin();
parseQuitGuildTime();
}
/**

View File

@@ -61,7 +61,7 @@ export const ARMY = {
ARMY_DONATE_TIMES: 10, // 捐献池每日可捐献的次数
ARMY_MANAGE_APPLICATION: 50, // 军团管理显示收到的申请条数上限
ARMY_CREAT_CONDITION: 6, // 创建军团的条件RMB充值要求
ARMY_JOIN_COOLDOWNTIME: 60, // 退出军团再次加入军团的冷却时间
ARMY_JOIN_COOLDOWNTIME: '0&60|14&1440', // 退出军团再次加入军团的冷却时间day&minute
};
export const TREASURE = {
CAPTAIN_DROP: 5, // 普通套装图纸队长必掉落次数
@@ -345,6 +345,14 @@ export const ACTIVITY = {
LOOPACTIVITYRATIO: 0.9, // 糜家商队循环活动小兵倍率
LOOPACTIVITYRATIO_SZTM: 0.9, // 神州探秘循环活动小兵倍率
ACTIVITY_ZHUMING_CAST_NUMLIMIT: 12, // 朱明集会神兵铸造材料数量总上限
ACTIVITY_FLIPCARD_SCORE: '1&10|33&8|41&7|51&6|57&5', // 翻拍小游戏的得分规则min&socre区间下限至下一档之间的得分
ACTIVITY_ARCHERY_SCORE: '0&1|1&2|2&3|3&3|4&4|5&5|6&6|7&7|8&8|9&9|10&12', // 射箭小游戏中的环数以及对应得分,环数&得分
ACTIVITY_EATTING_RICEDUMPLING_SPINE_POINT: '30&0&-5|80&1&-6|100&2&-7', // 进度阶段上限&额外加分&该阶段每0.1s进度条减少进度
ACTIVITY_EATTING_RICEDUMPLING_TOTALCOUNT: 12, // 一个粽子图片=点击X下
ACTIVITY_EATTING_RICEDUMPLING_COUNTDOWN: 20, // 张飞吃粽子游戏倒计时(秒)
ACTIVITY_EATTING_RICEDUMPLING_PROGRESS_SPEED: 15, // 点击1下进度条增加进度
ACTIVITY_EATTING_RICEDUMPLING_PROGRESS_KEYPOINT: '30&80', // 张飞吃粽子进度条达到x进入狂暴模式动画
ACTIVITY_EATTING_RICEDUMPLING_ROBOT_SPEED: '4.2&3.5', // 机器人每X秒少一个粽子图片/每X秒少一个粽子图片
};
export const BATTLE_PREPARING = {
CHANGE_ORDER_OPEN: 109, // 出兵界面行动顺序按钮开启关卡
@@ -425,3 +433,6 @@ export const GVG = {
export const PLATFORM_CONFIG = {
OPEN_ANIMATION: 1, // 0关1开开场动画视频
};
export const COMMUNICATION = {
COMMUNICATION_FOLLOW: '31002&100|22001&2', // 关注公众号奖励
};