%%%------------------------------------------------------------------- %%% @doc 社团竞速-头文件 %%% Module : guild_race_rank.hrl %%% Created : 2020-07-13 %%% @Author : tyl %%%------------------------------------------------------------------- -define(ONE_HOUR_SECOND, 60*60). %% 一小时秒数 -define(GUILD_TOP_RANK, [1,2,3]). %% 可获得人数扩张的社团排名 -define(DEFAULT_END_DAY, 7). %% 默认活动结束天数 -define(REWARD_RECEIVE_DAY, 8). %% 奖励可领取天数 -define(CHANGE_TYPE_OUT, 0). %% 退出社团 -define(CHANGE_TYPE_IN, 1). %% 进入社团 %% 是否第一次发放奖励 -define(FIRST_SEND_REWARD_NO, 0). -define(FIRST_SEND_REWARD_YES, 1). %% 是否已经开始结算 -define(START_REWARD_NO, 0). -define(START_REWARD_YES, 1). %% 任务计算类型 -define(TASK_TYPE_CALC, 1). %% 累计型 -define(TASK_TYPE_REPLACE, 2). %% 替换型 %% 任务状态 -define(TASK_NOT_FINISH, 0). %% 任务未完成 -define(TASK_FINISHED, 1). %% 任务完成 -define(TASK_HAS_RECEIVED, 2). %% 任务奖励已领取 %% 任务类型 -define(TASK_TYPE_CREATE_GUILD, 1). %% 创建社团 -define(TASK_TYPE_INVITE_ROLE, 2). %% 邀请玩家 -define(TASK_TYPE_POWER_UP, 3). %% 战力提升 -define(TASK_TYPE_LIVE_UP, 4). %% 活跃提升 -define(TASK_TYPE_GUILD_BOSS, 5). %% 社团幻魔 %% 是否已经领取奖励 -define(NOT_RECEIVE_REWARD, 0). %% 未领取奖励 -define(CAN_RECEIVE_REWARD, 1). %% 可领取奖励 -define(HAS_RECEIVE_REWARD, 2). %% 已领取奖励 %% 发放奖励的排名需求 -define(SEND_REWARD_RANK_NEED, 10). %% 称号奖励 -define(SEND_POWER_REWARD_RANK_NEED, %% 战力榜奖励(全员/团长专属) data_guild_race_rank:get_guild_race_rank_kv_cfg(power_rank_top) ). -define(SEND_LIVE_REWARD_RANK_NEED, %% 活跃榜奖励(全员/团长专属) data_guild_race_rank:get_guild_race_rank_kv_cfg(active_rank_top) ). %% 形象修改 -define(FIGURE_CHANGE_NAME, 1). -define(FIGURE_CHANGE_VIP, 2). -define(FIGURE_CHANGE_SUP_VIP, 3). %% 社团竞速管理进程状态数据 -record(guild_race_rank_state, { guild_rank_list = [] %% 公会排行 ,member_rank_map = #{} %% 成员排名 #{guild_id =>[]...} ,old_guild_rank_list = [] %% 旧的成员排名,开服前一个小时将第一个社团扔进来(这个逻辑废弃) ,old_member_rank_map = #{} %% 旧的成员排名,开服前一个小时将第一个社团扔进来(这个逻辑废弃) ,disband_rank_list = [] %% 解散的社团列表[guild_id1,guild_id2...] ,leave_member_map = #{} %% 离开社团的成员#{guild_id=>[mem1,mem2]...} ,role_guild_map = #{} %% 第八天使用(存储第八天0点结算时玩家和社团的映射) ,ref = [] %% 定时器(每隔一小时发放一次奖励) ,start_reward = 0 %% 开始结算状态 0-未开启 1-已开启 ,send_ref = [] %% 邮件发放定时器 ,guild_task = #{} %% 团长任务#{guild=>[#guild_task{}...]} }). %% 社团榜单数据 -record(guild_rank, { rank = 0 %% 排行 ,guild_id = 0 %% 社团Id ,guild_name = "" %% 社团名称 ,guild_lv = 0 %% 公会等级 ,captain_id = 0 %% 团长Id ,captain_name = "" %% 团长名称 ,limit_num = 0 %% 人数上限(包括增加人数) ,sum_power = 0 %% 社团总战力 ,old_power = 0 %% 上一次结算的战力 ,old_rank = 0 %% 上次结算的战力排行 ,sum_live = 0 %% 社团总活跃值 ,old_live = 0 %% 上次结算社团总活跃值 ,live_rank = 0 %% 总活跃值排行(只存内存) ,old_live_rank = 0 %% 上次结算社团总活跃值排行(只存内存) ,time = 0 %% 社团创建时间 ,is_first = 0 %% 是否是第一个创建社团(只存内存,重启后数据消失) ,create_id = 0 %% 创建者Id }). %% 成员榜单数据 -record(member_rank, { rank = 0 %% 排名 ,guild_id = 0 %% 社团Id ,role_id = 0 %% 角色Id ,role_name = "" %% 角色名称 ,position = 0 %% 职位 ,vip_lv = 0 %% vip等级 ,sup_vip = 0 %% 特权贵族类型 ,power = 0 %% 战力 ,old_power = 0 %% 上一次结算的战力 ,old_rank = 0 %% 上一次结算的排名 ,live = 0 %% 活跃值 ,old_live = 0 %% 上次结算活跃值 ,received_power = 0 %% 是否已领取战力榜奖励 ,received_live = 0 %% 是否已经领取活跃榜奖励 ,received_captain_power = 0 %% 是否已经领取团长战力榜奖励 ,received_captain_live = 0 %% 是否已经领取团长活跃榜奖励 }). %% 团长任务 -record(guild_race_rank_task, { task_id = 0 %% 任务Id ,progress = 0 %% 进度 ,status = 0 %% 状态 }). %% ==================================== 后台配置 =========================== %% 常量配置 -record(guild_race_rank_kv_cfg, { id = 0 %% Id ,key = "" %% 键 ,value = "" %% 值 ,remark = "" %% 备注 }). %% 社团竞榜结算 - 个人奖励配置 -record(guild_race_rank_reward_cfg, { id = 0 %% 主键Id ,rank_low = 0 %% 排名下限 ,rank_high = 0 %% 排名上限 ,reward = [] %% 个人奖励 ,guild_rank = 0 %% 社团排名 }). %% 社团竞榜结算 - 社团扩张人数配置 -record(guild_race_rank_expand_cfg, { day = 0 %% 天数 ,add_mem_num = 0 %% 增加成员数量 }). %% 任务配置 -record(base_guild_race_rank_task, { id = 0 %% 任务Id ,sequence = 0 %% 排序 ,task_name = "" %% 任务名称 ,task_desc = "" %% 任务描述 ,reward = [] %% 奖励 ,condition = [] %% 条件 ,client_skip= [] %% 前端跳转 }). %% ------------------------------ 数据库操作 ------------------------------------ -define(insert_guild_race_rank, <<"replace into guild_race_rank (`guild_id`, `guild_name`, `guild_lv`, `captain_id`, `sum_power`, `old_power`, `old_rank`, `old_live`, `create_id`, `time`) values (~p, '~ts', ~p, ~p, ~p, ~p, ~p, ~p, ~p, ~p)">>). -define(select_guild_race_rank, <<"select `guild_id`, `guild_name`, `guild_lv`, `captain_id`,`sum_power`,`old_power`, `old_rank`, `old_live`, `create_id`, `time` from guild_race_rank">>). -define(delete_guild_race, <<"delete from guild_race_rank where `guild_id` = ~p">>). -define(update_guild_race_rank_power, <<"update guild_race_rank set `sum_power` = ~p where `guild_id` = ~p">>). -define(update_guild_race_rank_old_rank, <<"update guild_race_rank set `old_rank` = ~p, `old_power` = ~p where `guild_id` = ~p">>). -define(update_guild_race_rank_old_live, <<"update guild_race_rank set `old_live` = ~p where `guild_id` = ~p">>). -define(update_guild_race_rank_guild_name, <<"update guild_race_rank set `guild_name` = '~ts' where `guild_id` = ~p">>). -define(update_guild_race_rank_guild_lv, <<"update guild_race_rank set `guild_lv` = ~p where `guild_id` = ~p">>). -define(update_guild_race_rank_captain, <<"update guild_race_rank set `captain_id` = ~p where `guild_id` = ~p">>). %% 成员榜相关 -define(insert_guild_race_rank_member, <<"replace into guild_race_rank_member (`role_id`, `guild_id`, `position`, `old_power`, `old_rank`, `old_live`, `received_power`, `received_live`, `received_captain_power`, `received_captain_live`) values (~p, ~p, ~p, ~p, ~p, ~p, ~p, ~p, ~p, ~p)">>). -define(select_guild_race_rank_member, <<"select `role_id`, `guild_id`, `position`, `old_power`, `old_rank`, `old_live`, `received_power`, `received_live`, `received_captain_power`, `received_captain_live` from guild_race_rank_member">>). -define(delete_guild_race_rank_member, <<"delete from guild_race_rank_member where `role_id` = ~p">>). -define(delete_guild_race_rank_guild, <<"delete from guild_race_rank_member where `guild_id` = ~p">>). -define(update_guild_race_rank_member_position, <<"update guild_race_rank_member set `position` = ~p where `role_id` = ~p">>). -define(update_guild_race_rank_member_old_live, <<"update guild_race_rank_member set `old_live` = ~p where `role_id` = ~p">>). -define(update_guild_race_rank_member_received_power, <<"update guild_race_rank_member set `received_power` = ~p where `role_id` = ~p">>). -define(update_guild_race_rank_member_received_live, <<"update guild_race_rank_member set `received_live` = ~p where `role_id` = ~p">>). -define(update_guild_race_rank_member_received_captain_power, <<"update guild_race_rank_member set `received_captain_power` = ~p where `role_id` = ~p">>). -define(update_guild_race_rank_member_received_captain_live, <<"update guild_race_rank_member set `received_captain_live` = ~p where `role_id` = ~p">>). %% 玩家和社团映射 -define(insert_guild_race_rank_role, <<"replace into guild_race_rank_role (`role_id`, `guild_id`) values ~ts">>). -define(insert_guild_race_rank_role_value, <<"(~p,~p)">>). -define(select_guild_race_rank_role, <<"select `role_id`, `guild_id` from guild_race_rank_role">>). %% 从社团成员表获取团长Id -define(select_guild_captain, <<"select id from guild_member where `position` = 1 and `guild_id` = ~p limit 1">>). %% 团长任务 -define(insert_guild_race_rank_task, <<"replace into guild_race_rank_task (`guild_id`, `task_id`, `progress`, `status`) values (~p,~p,~p,~p)">>). -define(select_guild_race_rank_task, <<"select `guild_id`, `task_id`, `progress`, `status` from guild_race_rank_task">>). -define(update_guild_race_rank_task, <<"update guild_race_rank_task set `status`=~p where `guild_id`=~p and `task_id`=~p">>). -define(delete_guild_race_rank_task, <<"delete from guild_race_rank_task where `guild_id`=~p">>).