diff --git a/game-server/app/servers/guild/handler/guildHandler.ts b/game-server/app/servers/guild/handler/guildHandler.ts index f018df8b3..0868e44c2 100644 --- a/game-server/app/servers/guild/handler/guildHandler.ts +++ b/game-server/app/servers/guild/handler/guildHandler.ts @@ -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); } diff --git a/game-server/app/services/guildService.ts b/game-server/app/services/guildService.ts index a72ef661d..2a91c5204 100644 --- a/game-server/app/services/guildService.ts +++ b/game-server/app/services/guildService.ts @@ -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 } \ No newline at end of file diff --git a/shared/pubUtils/data.ts b/shared/pubUtils/data.ts index 9449d2d84..354e7043b 100644 --- a/shared/pubUtils/data.ts +++ b/shared/pubUtils/data.ts @@ -344,7 +344,8 @@ export const gameData = { gvgTeamDurability: new Map(), gvgPointByAreaId: dicGVGPointsByAreaId, gvgReviveGold: new Map(), - 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(); } /** diff --git a/shared/pubUtils/dicParam.ts b/shared/pubUtils/dicParam.ts index 5dbb7bad3..7e4679d9d 100644 --- a/shared/pubUtils/dicParam.ts +++ b/shared/pubUtils/dicParam.ts @@ -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', // 关注公众号奖励 +};