活动:限时排行榜

This commit is contained in:
luying
2022-03-03 14:11:56 +08:00
parent d0eb46ece4
commit f099daf80b
27 changed files with 871 additions and 151 deletions

View File

@@ -53,6 +53,7 @@ export enum ACTIVITY_TYPE {
NEW_HERO_GK = 38, //新将演绎 (配置N个武将每个武将有X个关卡活动期间*天(时间自定义)开启每个武将对应的一个关卡,只有第一次通关会获得奖励)
NEW_HERO_GACHA = 39, //新将擢迁(新武将抽卡)
LUCKY_TURNTABLE = 40, // 幸运转盘
TIME_LIMIT_RANK = 41, // 限时排行榜
}
/**

View File

@@ -47,8 +47,9 @@ export enum MAIL_TYPE {
EQUIP_OVER = 18, // 装备超数量
TOWER_TASK_REWARD = 19, // 镇念塔派遣过期奖励
MONTHLY_REWARD = 20, // 月卡奖品
TREAT_ROLE_NAME = 21, // 月卡奖品
TREAT_GUILD_INFO = 22, // 月卡奖品
TREAT_ROLE_NAME = 21, // 改玩家名
TREAT_GUILD_INFO = 22, // 改军团名
TIME_LIMIT_RANK = 23, // 限时排行榜
};
export const SEND_NAME = '系统';

View File

@@ -238,36 +238,59 @@ export enum REDIS_KEY {
PAY_CHANNEL = 'pay', // 支付订阅频道
TREAT_ROLE_CHANNEL = 'treatRole', // 处理玩家账号名频道
TREAT_GUILD_CHANNEL = 'treatGuild', // 处理公会账号名频道
GUILD_FUND = 'guildFund', // 限时排行
SUM_CE_SNAPSHOT = "sumCeTL", // 限时战力排行榜
}
// 各排行榜对应hash的key
export const REDIS_RANK_TO_INFO = new Map([
[REDIS_KEY.TOWER_RANK, REDIS_KEY.USER_INFO],
[REDIS_KEY.PVP_RANK, REDIS_KEY.USER_INFO],
[REDIS_KEY.GUILD_ACTIVE_RANK, REDIS_KEY.GUILD_INFO],
[REDIS_KEY.GUILD_LV_RANK, REDIS_KEY.GUILD_INFO],
[REDIS_KEY.GATE_ACTIVITY, REDIS_KEY.GUILD_INFO],
[REDIS_KEY.USER_GATE_ACTIVITY, REDIS_KEY.USER_INFO],
[REDIS_KEY.CITY_ACTIVITY, REDIS_KEY.GUILD_INFO],
[REDIS_KEY.USER_CITY_ACTIVITY, REDIS_KEY.USER_INFO],
[REDIS_KEY.RACE_ACTIVITY, REDIS_KEY.GUILD_INFO],
[REDIS_KEY.TOP_LINEUP_RANK, REDIS_KEY.USER_INFO],
[REDIS_KEY.TOP_HERO_RANK, REDIS_KEY.USER_INFO],
[REDIS_KEY.HERO_NUM_RANK, REDIS_KEY.USER_INFO],
[REDIS_KEY.USER_LV, REDIS_KEY.USER_INFO],
[REDIS_KEY.SUM_CE_RANK, REDIS_KEY.USER_INFO],
[REDIS_KEY.DUNGEON_RANK, REDIS_KEY.USER_INFO],
[REDIS_KEY.MAIN_RANK, REDIS_KEY.USER_INFO],
[REDIS_KEY.MAIN_ELITE_RANK, REDIS_KEY.USER_INFO],
[REDIS_KEY.HERO_RANK, REDIS_KEY.USER_INFO]
]);
export function getInfoKeyByRedisKey(redisKey: REDIS_KEY) {
switch(redisKey) {
case REDIS_KEY.TOWER_RANK: // 天梯排行榜
return { infoKey: REDIS_KEY.USER_INFO, extraKey: [] };
case REDIS_KEY.PVP_RANK: // pvp排行榜
return { infoKey: REDIS_KEY.USER_INFO, extraKey: [] };
case REDIS_KEY.TOP_LINEUP_RANK: // 最强阵容排行
return { infoKey: REDIS_KEY.USER_INFO, extraKey: [REDIS_KEY.TOP_LINEUP_INFO] };
case REDIS_KEY.TOP_HERO_RANK: // 最强武将排行
return { infoKey: REDIS_KEY.USER_INFO, extraKey: [REDIS_KEY.HERO_INFO] };
case REDIS_KEY.HERO_NUM_RANK: // 武将数量排行
return { infoKey: REDIS_KEY.USER_INFO, extraKey: [] };
case REDIS_KEY.USER_LV: // 主公等级排行榜
return { infoKey: REDIS_KEY.USER_INFO, extraKey: [] };
case REDIS_KEY.SUM_CE_RANK: // 总战力排名
return { infoKey: REDIS_KEY.USER_INFO, extraKey: [] };
case REDIS_KEY.DUNGEON_RANK: // 秘境排名
return { infoKey: REDIS_KEY.USER_INFO, extraKey: [REDIS_KEY.DUNGEON_LINEUP] };
case REDIS_KEY.MAIN_RANK: // 主线通关排名
return { infoKey: REDIS_KEY.USER_INFO, extraKey: [] };
case REDIS_KEY.MAIN_ELITE_RANK: // 精英通关排名
return { infoKey: REDIS_KEY.USER_INFO, extraKey: [] };
case REDIS_KEY.HERO_RANK: // 武将排行榜
return { infoKey: REDIS_KEY.USER_INFO, extraKey: [REDIS_KEY.HERO_INFO] };
case REDIS_KEY.GUILD_ACTIVE_RANK: // 公会周活跃排行榜
return { infoKey: REDIS_KEY.GUILD_INFO, extraKey: [] };
case REDIS_KEY.GUILD_LV_RANK: // 公会等级排行榜
return { infoKey: REDIS_KEY.GUILD_INFO, extraKey: [] };
case REDIS_KEY.GUILD_FUND: // 军团资金
return { infoKey: REDIS_KEY.GUILD_INFO, extraKey: [] };
export const REDIS_RANK_TO_EXTRA = new Map([
[REDIS_KEY.TOP_LINEUP_RANK, [REDIS_KEY.TOP_LINEUP_INFO]],
[REDIS_KEY.TOP_HERO_RANK, [REDIS_KEY.HERO_INFO]],
[REDIS_KEY.DUNGEON_RANK, [REDIS_KEY.DUNGEON_LINEUP]],
[REDIS_KEY.HERO_RANK, [REDIS_KEY.HERO_INFO]]
]);
case REDIS_KEY.GATE_ACTIVITY: // 蛮夷入侵军团排行
return { infoKey: REDIS_KEY.GUILD_INFO, extraKey: [] };
case REDIS_KEY.USER_GATE_ACTIVITY: // 蛮夷入侵玩家排行
return { infoKey: REDIS_KEY.USER_INFO, extraKey: [] };
case REDIS_KEY.CITY_ACTIVITY: // 诸侯混战军团排行
return { infoKey: REDIS_KEY.GUILD_INFO, extraKey: [] };
case REDIS_KEY.USER_CITY_ACTIVITY: // 诸侯混战玩家排行
return { infoKey: REDIS_KEY.USER_INFO, extraKey: [] };
case REDIS_KEY.RACE_ACTIVITY: // 粮草先行军团排行
return { infoKey: REDIS_KEY.GUILD_INFO, extraKey: [] };
case REDIS_KEY.SUM_CE_SNAPSHOT: // 战力限时排行榜的快照
return { infoKey: REDIS_KEY.USER_INFO, extraKey: [] };
}
}
// 排行榜类型
export enum RANK_TYPE {
@@ -279,26 +302,43 @@ export enum RANK_TYPE {
TOWER = 6, // 镇念塔
MAIN = 7, // 主线
MAIN_ELITE = 8, // 精英
GUILD_LV = 9, // 军团按等级排序
GUILD_LV = 9, // 军团按等级排序
GUILD_ACTIVE = 11, // 军团活跃度排序
HERO = 12, // 武将排行
GUILD_FUND = 13, // 军团积分排行,限时类型的排行榜,仅计算期限内增加的值
}
// 接口中的排行榜类型对应的redis中的key
export const RANK_TYPE_TO_KEY = new Map([
[RANK_TYPE.TOP_LINTUP, REDIS_KEY.TOP_LINEUP_RANK],
[RANK_TYPE.TOP_HERO, REDIS_KEY.TOP_HERO_RANK],
[RANK_TYPE.HERO_NUM, REDIS_KEY.HERO_NUM_RANK],
[RANK_TYPE.USER_LV, REDIS_KEY.USER_LV],
[RANK_TYPE.SUM_CE, REDIS_KEY.SUM_CE_RANK],
[RANK_TYPE.TOWER, REDIS_KEY.TOWER_RANK],
// [RANK_TYPE.DUNGEON, REDIS_KEY.DUNGEON_RANK],
[RANK_TYPE.MAIN, REDIS_KEY.MAIN_RANK],
[RANK_TYPE.MAIN_ELITE, REDIS_KEY.MAIN_ELITE_RANK],
[RANK_TYPE.GUILD_LV, REDIS_KEY.GUILD_LV_RANK],
[RANK_TYPE.GUILD_ACTIVE, REDIS_KEY.GUILD_ACTIVE_RANK],
[RANK_TYPE.HERO, REDIS_KEY.HERO_RANK]
]);
export function getRedisKeyByRankType(rankType: RANK_TYPE, isTimelimit = false) {
switch(rankType) {
case RANK_TYPE.TOP_LINTUP: // 最强阵容战力
return REDIS_KEY.TOP_LINEUP_RANK;
case RANK_TYPE.TOP_HERO: // 最强武将
return REDIS_KEY.TOP_HERO_RANK;
case RANK_TYPE.HERO_NUM: // 武将数量
return REDIS_KEY.HERO_NUM_RANK;
case RANK_TYPE.USER_LV: // 主公等级
return REDIS_KEY.USER_LV;
case RANK_TYPE.SUM_CE: // 总战力
return isTimelimit? REDIS_KEY.SUM_CE_SNAPSHOT: REDIS_KEY.SUM_CE_RANK;
case RANK_TYPE.TOWER: // 镇念塔
return REDIS_KEY.TOWER_RANK;
case RANK_TYPE.MAIN: // 主线
return REDIS_KEY.MAIN_RANK;
case RANK_TYPE.MAIN_ELITE: // 精英
return REDIS_KEY.MAIN_ELITE_RANK;
case RANK_TYPE.GUILD_LV: // 军团按等级排序
return REDIS_KEY.GUILD_LV_RANK;
case RANK_TYPE.GUILD_ACTIVE: // 军团活跃度排序
return REDIS_KEY.GUILD_ACTIVE_RANK;
case RANK_TYPE.HERO: // 武将排行
return REDIS_KEY.HERO_RANK;
case RANK_TYPE.GUILD_FUND: // 军团积分排行,限时类型的排行榜,仅计算期限内增加的值
return REDIS_KEY.GUILD_FUND;
}
}
export const RANK_TYPE_TO_KEY = new Map();
// field处理方法
export enum COMPOSE_FIELD_TYPE {
@@ -334,7 +374,8 @@ export const KEY_TO_COMPOSE_FIELD = new Map([
[REDIS_KEY.SHOW_LINEUP, COMPOSE_FIELD_TYPE.ROLE],
[REDIS_KEY.SUM_CE_RANK, COMPOSE_FIELD_TYPE.ROLE],
[REDIS_KEY.PVP_RANK, COMPOSE_FIELD_TYPE.ROLE],
[REDIS_KEY.GUILD_FUND, COMPOSE_FIELD_TYPE.GUILD],
[REDIS_KEY.SUM_CE_SNAPSHOT, COMPOSE_FIELD_TYPE.ROLE],
]);