%%%------------------------------------
|
|
%%% @Module : common_rank.hrl
|
|
%%% @Author : hejiahua
|
|
%%% @Created : 2015-12-18
|
|
%%% @Description: 通用榜单
|
|
%%%------------------------------------
|
|
%% --------------------#common_rank_role.rank_type 类型---------------------
|
|
-define(RANK_TYPE_COMBAT, 2000). %% 战力排行榜
|
|
-define(RANK_TYPE_COMBAT_1, 2001). %% 职业1战力榜
|
|
-define(RANK_TYPE_COMBAT_2, 2002). %% 职业2战力榜
|
|
-define(RANK_TYPE_COMBAT_3, 2003). %% 职业3战力榜
|
|
-define(RANK_TYPE_COMBAT_4, 2004). %% 职业4战力榜
|
|
|
|
-define(RANK_TYPE_LV, 3000). %% 等级排行榜
|
|
-define(RANK_TYPE_LV_1, 3001). %% 职业1等级榜
|
|
-define(RANK_TYPE_LV_2, 3002). %% 职业2等级榜
|
|
-define(RANK_TYPE_LV_3, 3003). %% 职业3等级榜
|
|
-define(RANK_TYPE_LV_4, 3004). %% 职业4等级榜
|
|
|
|
-define(RANK_TYPE_GUILD, 407). %% 公会排行榜
|
|
|
|
-define(RANK_TYPE_DESIGNATION, 411). %% 称号排行榜
|
|
-define(RANK_TYPE_FASHION, 413). %% 时装排行榜
|
|
|
|
-define(RANK_TYPE_FHORSE, 1461). %% 座驾排行榜
|
|
-define(RANK_TYPE_FWING, 1462). %% 炫翼排行榜
|
|
-define(RANK_TYPE_FPEARL, 1463). %% 宝具排行榜
|
|
-define(RANK_TYPE_FWEAPON, 1464). %% 武器排行榜
|
|
-define(RANK_TYPE_FJARVIS, 1465). %% AI娘排行榜
|
|
-define(RANK_TYPE_FGUN, 1466). %% 磁炮排行榜
|
|
-define(RANK_TYPE_FCLOUD, 1467). %% 星翼排行榜
|
|
-define(RANK_TYPE_FARMOUR, 1468). %% 幻甲排行榜
|
|
-define(RANK_TYPE_FOSTERS, 14600). %% 进阶总榜
|
|
-define(RANK_TYPE_AIGIRLS, 14601). %% AI娘总榜
|
|
|
|
-define(RANK_TYPE_DRESS, 112). %% 装扮排行榜
|
|
-define(RANK_TYPE_BABY, 163). %% 宝宝排行榜
|
|
|
|
-define(RANK_TYPE_CHARM_WEEK, 2231). %% 魅力(人气)榜
|
|
-define(RANK_TYPE_GENEROURS, 2232). %% 慷慨(豪气,即名望)榜
|
|
|
|
-define (RANK_TYPE_WARSOUL, 143). %% 战魂排行榜
|
|
|
|
-define(RANK_TYPE_EQUIP, 1520). %% 装备排行榜
|
|
-define(RANK_TYPE_EQUIP_1, 1521). %% 职业1装备榜
|
|
-define(RANK_TYPE_EQUIP_2, 1522). %% 职业2装备榜
|
|
-define(RANK_TYPE_EQUIP_3, 1523). %% 职业3装备榜
|
|
-define(RANK_TYPE_EQUIP_4, 1524). %% 职业4装备榜
|
|
|
|
-define(RANK_TYPE_GUILD_LABOR, 4001). %% 社团活跃榜
|
|
-define(RANK_TYPE_GUILD_LABOR_LAST, 4002). %% 社团上期活跃榜
|
|
|
|
|
|
-define(RANK_GUILD_LIST,[
|
|
?RANK_TYPE_GUILD
|
|
,?RANK_TYPE_GUILD_LABOR
|
|
,?RANK_TYPE_GUILD_LABOR_LAST
|
|
]).
|
|
|
|
%% 个人榜单列表
|
|
-define(RANK_TYPE_LIST, [
|
|
?RANK_TYPE_COMBAT,
|
|
?RANK_TYPE_COMBAT_1,
|
|
?RANK_TYPE_COMBAT_2,
|
|
?RANK_TYPE_COMBAT_3,
|
|
?RANK_TYPE_COMBAT_4,
|
|
?RANK_TYPE_LV,
|
|
?RANK_TYPE_LV_1,
|
|
?RANK_TYPE_LV_2,
|
|
?RANK_TYPE_LV_3,
|
|
?RANK_TYPE_LV_4,
|
|
?RANK_TYPE_FASHION,
|
|
?RANK_TYPE_DESIGNATION,
|
|
?RANK_TYPE_FOSTERS,
|
|
?RANK_TYPE_AIGIRLS,
|
|
?RANK_TYPE_FHORSE,
|
|
?RANK_TYPE_FWING,
|
|
?RANK_TYPE_FPEARL,
|
|
?RANK_TYPE_FWEAPON,
|
|
?RANK_TYPE_FJARVIS,
|
|
?RANK_TYPE_FGUN,
|
|
?RANK_TYPE_FCLOUD,
|
|
?RANK_TYPE_FARMOUR,
|
|
?RANK_TYPE_BABY,
|
|
?RANK_TYPE_CHARM_WEEK,
|
|
?RANK_TYPE_GENEROURS,
|
|
?RANK_TYPE_EQUIP,
|
|
?RANK_TYPE_EQUIP_1,
|
|
?RANK_TYPE_EQUIP_2,
|
|
?RANK_TYPE_EQUIP_3,
|
|
?RANK_TYPE_EQUIP_4,
|
|
?RANK_TYPE_WARSOUL,
|
|
?RANK_TYPE_DRESS
|
|
]).
|
|
|
|
%% 进阶系统榜
|
|
-define(RANK_TYPE_FOSTER, [
|
|
?RANK_TYPE_FHORSE,
|
|
?RANK_TYPE_FWING,
|
|
?RANK_TYPE_FPEARL,
|
|
?RANK_TYPE_FWEAPON,
|
|
?RANK_TYPE_FJARVIS,
|
|
?RANK_TYPE_FGUN,
|
|
?RANK_TYPE_FCLOUD,
|
|
?RANK_TYPE_FARMOUR
|
|
]).
|
|
|
|
-define(RANK_TYPE_FOSTER_1, [
|
|
?RANK_TYPE_FHORSE,
|
|
?RANK_TYPE_FWING,
|
|
?RANK_TYPE_FPEARL,
|
|
?RANK_TYPE_FWEAPON
|
|
]).
|
|
|
|
-define(RANK_TYPE_FOSTER_2, [
|
|
?RANK_TYPE_FJARVIS,
|
|
?RANK_TYPE_FGUN,
|
|
?RANK_TYPE_FCLOUD,
|
|
?RANK_TYPE_FARMOUR
|
|
]).
|
|
|
|
%% 战力综合+战力职业
|
|
-define(RANK_TYPE_ALL_COMBATS, [
|
|
?RANK_TYPE_COMBAT,
|
|
?RANK_TYPE_COMBAT_1,
|
|
?RANK_TYPE_COMBAT_2,
|
|
?RANK_TYPE_COMBAT_3,
|
|
?RANK_TYPE_COMBAT_4
|
|
]).
|
|
|
|
%% 等级综合+等级职业
|
|
-define(RANK_TYPE_ALL_LVS, [
|
|
?RANK_TYPE_LV,
|
|
?RANK_TYPE_LV_1,
|
|
?RANK_TYPE_LV_2,
|
|
?RANK_TYPE_LV_3,
|
|
?RANK_TYPE_LV_4
|
|
]).
|
|
|
|
%% 装备综合+装备职业
|
|
-define(RANK_TYPE_ALL_EQUIPS, [
|
|
?RANK_TYPE_EQUIP,
|
|
?RANK_TYPE_EQUIP_1,
|
|
?RANK_TYPE_EQUIP_2,
|
|
?RANK_TYPE_EQUIP_3,
|
|
?RANK_TYPE_EQUIP_4
|
|
]).
|
|
|
|
%% 有职业区分的榜单
|
|
-define(RANK_TYPE_CAREER, [
|
|
?RANK_TYPE_COMBAT_1,
|
|
?RANK_TYPE_COMBAT_2,
|
|
?RANK_TYPE_COMBAT_3,
|
|
?RANK_TYPE_COMBAT_4,
|
|
?RANK_TYPE_LV_1,
|
|
?RANK_TYPE_LV_2,
|
|
?RANK_TYPE_LV_3,
|
|
?RANK_TYPE_LV_4,
|
|
?RANK_TYPE_EQUIP_1,
|
|
?RANK_TYPE_EQUIP_2,
|
|
?RANK_TYPE_EQUIP_3,
|
|
?RANK_TYPE_EQUIP_4
|
|
]).
|
|
|
|
%% EQUIP+COMBAT+LV
|
|
-define(RANK_TYPE_ECL, [
|
|
?RANK_TYPE_EQUIP,
|
|
?RANK_TYPE_COMBAT,
|
|
?RANK_TYPE_LV
|
|
]).
|
|
|
|
%% 需要显示榜单上额外值second_value的榜单列表
|
|
-define(SHOW_RANK_SECVAL_LIST, [
|
|
?RANK_TYPE_EQUIP
|
|
]).
|
|
|
|
%% 进阶总榜
|
|
-define(RANK_TYPE_14600, [
|
|
?RANK_TYPE_FHORSE,
|
|
?RANK_TYPE_FWING,
|
|
?RANK_TYPE_FPEARL,
|
|
?RANK_TYPE_FWEAPON
|
|
]).
|
|
|
|
%% AI娘总榜
|
|
-define(RANK_TYPE_14601, [
|
|
?RANK_TYPE_FJARVIS,
|
|
?RANK_TYPE_FGUN,
|
|
?RANK_TYPE_FCLOUD,
|
|
?RANK_TYPE_FARMOUR
|
|
]).
|
|
|
|
-define(WORLD_LV_LEN, 20). %% 全服等级榜前20名玩家的长度
|
|
-define(REFRESH_SERVERLV_TIME, 3600*1000). %% 世界等级刷新时长
|
|
|
|
|
|
%% 点赞规则:
|
|
%% 1.每个独立榜单1次
|
|
%% 2.每日只有1次
|
|
-define(MAX_PRAISE_NUM, data_ranking:get_value(max_praise_num)).
|
|
-define(RANK_DAILY_PRAISE, 1).
|
|
|
|
%% 点赞类型
|
|
-define(PRAISE_0, 0). %% 个人
|
|
-define(PRAISE_1, 1). %% 社团
|
|
|
|
%% 排行榜配置
|
|
-record(rank_config, {
|
|
type = 0,
|
|
rank_name = "",
|
|
rank_max = 0,
|
|
rank_limit = 0,
|
|
title_id = 0
|
|
}).
|
|
|
|
-record(base_common_rank_kv, {
|
|
id = 0,
|
|
key = "",
|
|
value = 0,
|
|
desc = ""
|
|
}).
|
|
|
|
|
|
%% 排行榜目标奖励配置
|
|
-record(base_common_rank_target_reward, {
|
|
type = 0, %% 榜单类型
|
|
index = 0, %% 映射id
|
|
target = 0, %% 达成目标
|
|
name = <<>>, %% 榜单名称
|
|
reward = [] %% 奖励
|
|
}).
|
|
|
|
%% 通用榜单的角色信息
|
|
%% 注意:需要排序的话,使用value、second_value、third_value,不要用其他字段
|
|
-record(common_rank_role, {
|
|
role_key = undefined, % 玩家的唯一键 {RankType, id}
|
|
rank_type = 0, % 榜单类型
|
|
role_id = 0, % 角色Id
|
|
value = 0, % 值
|
|
second_value = 0, % 值(保留)
|
|
third_value = 0, % 值(保留)
|
|
extra_value = [], % 额外值(保留)
|
|
display_value = 0, % 客户端显示值
|
|
time = 0, % 时间
|
|
online = 0, % 是否在线
|
|
off_time = 0, % 离线时间
|
|
rank = 0 % 名次
|
|
}).
|
|
|
|
%% 跨服排行角色信息
|
|
-record(cross_common_rank_role, {
|
|
role_key = undefined, % 玩家唯一键
|
|
rank_type = 0, % 榜单类型
|
|
role_id = 0, % 角色id
|
|
value = 0, % 值
|
|
second_value = 0, % 第二值
|
|
vip = 0, % vip
|
|
sup_vip = 0, % sup_vip
|
|
name = 0, % 名字
|
|
gender = 0, % 性别
|
|
rank = 0,
|
|
server_num = 0, % 服务器编号
|
|
server_id = 0 % 服务器id
|
|
}).
|
|
|
|
-record(common_rank_guild, {
|
|
guild_key = undefine, % 唯一键{RankType, guild_id}
|
|
rank_type = 0, % 榜单类型
|
|
guild_id = 0, % 公会id
|
|
flag = 0,
|
|
guild_name = "", % 公会名称
|
|
chairman_id = 0, % 会长Id
|
|
chairman_name = "", % 会长名字
|
|
lv = 0, % 公会等级
|
|
members_num = 0, % 成员数量
|
|
value = 0, % 值
|
|
second_value = 0, % 值(保留)
|
|
third_value = 0, % 值(保留)
|
|
time = 0, % 时间
|
|
rank = 0 % 名次
|
|
,add_mem_num = 0 % 社团竞榜增加人数
|
|
,create_time = 0 % 社团创建时间(判断评级为待定 时使用)
|
|
,labor_refresh_time = 0 % 社团活跃刷新时间(判断评级为待定 时使用)
|
|
}).
|
|
|
|
%% 通用榜单的进程状态
|
|
-record(common_rank_state, {
|
|
% role_maps = maps:new(), % Key:RankType Value:[#common_rank_role{}|...]
|
|
guild_maps = maps:new(),
|
|
old_first_guild = 0, % 存昨天第一的公会id
|
|
rank_limit = maps:new(),
|
|
praise_maps = maps:new(), % key: role_id value: praise_num
|
|
ref_average_lv = none, % 世界等级刷新定时器
|
|
first_top = maps:new(), % 首度达成目标数据
|
|
first_top_role = [], % 首度目标辅助数据 [{{RoleId, RankType, Target}, Val}]
|
|
timer = undefined
|
|
}).
|
|
|
|
%% 跨服排行榜数据
|
|
-record(cross_rank_state, {
|
|
% role_maps = #{}, % Key:{ZoneId, RankType} Value:[#cross_common_rank_role{}|...]
|
|
rank_limit = #{}, %
|
|
srv_zones = #{}, % 游戏服分区映射
|
|
srv_upload_status = #{}, % 分区游戏服上传数据状态 ZoneId => [{ServerId, Status},...]
|
|
upload_status = [], % [{ZoneId, Status},...]
|
|
maps = #{} % 其他数据
|
|
}).
|
|
|
|
-define(RANK_INIT, 1).
|
|
-define(FORCE_UPDATE_PRE, 2).
|
|
-define(FORCE_UPDATE, 3).
|
|
-define(INTERVAL_UPDATE_REF,4).
|
|
|
|
-define(RANK_INTERVAL, 300000).
|
|
|
|
-define(RANK_TYPE_KEY(RankType), {common_rank_type, RankType}).
|
|
-define(CROSS_RANK_TYPE_KEY(RankKey), {cross_rank_type, RankKey}).
|
|
|
|
-define(sql_common_rank_guild_select,
|
|
<<"SELECT rank_type, guild_id, guild_name, flag, chairman_id, chairman_name, lv, members_num, value, second_value, third_value, time FROM common_rank_guild">>).
|
|
|
|
-define(sql_common_rank_role_select,
|
|
<<"SELECT rank_type, player_id, value, second_value, third_value, extra_value, time, off_time FROM common_rank_role">>).
|
|
|
|
-define(sql_common_rank_praise_select,
|
|
<<"SELECT type, id, praise_num FROM common_rank_praise">>).
|
|
|
|
-define(sql_common_rank_first_top_select,
|
|
<<"SELECT rank_type, target, role_id, time FROM common_rank_first_top">>).
|
|
|
|
-define(sql_common_rank_role_first_top_select,
|
|
<<"SELECT rank_type, target FROM role_first_top_reward WHERE role_id = ~p">>).
|
|
|
|
-define(sql_common_rank_role_save,
|
|
<<"replace into common_rank_role(rank_type, player_id, value, second_value, third_value, extra_value, time, off_time) values(~p, ~p, ~p, ~p, ~p, '~ts', ~p,~p)">>).
|
|
|
|
-define(sql_common_rank_praise_save,
|
|
<<"replace into common_rank_praise(type, id, praise_num) values(~p, ~p, ~p)">>).
|
|
|
|
-define(sql_common_rank_guild_save,
|
|
<<"replace into common_rank_guild(rank_type, guild_id, guild_name,flag, chairman_id, chairman_name, lv, members_num, value, second_value, third_value, time) values(~p, ~p , '~ts', ~p,~p, '~ts', ~p, ~p, ~p, ~p, ~p, ~p)">>).
|
|
|
|
-define(sql_common_rank_role_delete_by_role_id,
|
|
<<"delete from common_rank_role where rank_type = ~p and player_id = ~p">>).
|
|
|
|
-define(sql_common_rank_guild_delete_by_guild_id,
|
|
<<"delete from common_rank_guild where rank_type = ~p and guild_id = ~p">>).
|
|
|
|
|
|
-define(sql_common_rank_role_delete_by_value,
|
|
<<"delete from common_rank_role where rank_type = ~p and value < ~p ">>).
|
|
|
|
-define(sql_common_rank_guild_delete_by_value,
|
|
<<"delete from common_rank_guild where rank_type = ~p and value < ~p ">>).
|
|
|
|
-define(sql_common_rank_role_delete_by_rank_type,
|
|
<<"delete from common_rank_role where rank_type = ~p">>).
|
|
|
|
|
|
-define(SQL_COMMON_GUILD_RANK_DEL_TYPE,
|
|
<<"delete from common_rank_guild where rank_type=~p">>).
|
|
|
|
-define(SQL_COMMON_GUILD_RANK_BATCH,
|
|
<<"REPLACE INTO common_rank_guild(rank_type, guild_id, guild_name, flag, chairman_id, chairman_name, lv, members_num, value, second_value, third_value, time) VALUES ~ts">>).
|
|
|
|
-define(SQL_COMMON_RANK_FIRST_TOP,
|
|
<<"REPLACE INTO common_rank_first_top(rank_type, target, role_id, time) VALUES ~ts">>).
|
|
|
|
-define(REPLACE_INTO_COMMON_RANK_FIRST_TOP,
|
|
<<"REPLACE INTO role_first_top_reward SET role_id = ~p, rank_type = ~p, target = ~p">>).
|
|
|
|
|
|
-define(SQL_SELECT_COMMON_PRAISE_ROLE,
|
|
<<"SELECT rank_type, praise_id, time FROM role_praise_target WHERE role_id = ~p">>).
|
|
|
|
-define(SQL_REPLACE_COMMON_PRAISE_ROLE,
|
|
<<"REPLACE INTO role_praise_target SET role_id = ~p, rank_type = ~p, praise_id = ~p, time = ~p">>).
|
|
|
|
-define(SQL_DELETE_COMMON_PRAISE_ROLE,
|
|
<<"TRUNCATE TABLE role_praise_target">>).
|
|
|
|
-define(SQL_BTACH_DELETE_COMMON_PRAISE_ROLE,
|
|
<<"DELETE FROM role_praise_target WHERE role_id = ~p, rank_type = ~p">>).
|