%% ---------------------------------------------------------------------------
%% @doc 跨服竞榜活动头文件.
%% @author zhaoyu
%% @since  2018-11-27
%% ---------------------------------------------------------------------------
-ifndef(RACE_RANK_HRL).
-define(RACE_RANK_HRL, ok).

%% 还没结算
-define(NOT_SETTLEMENT, 0).
%% 排行榜最大上榜人数
-define(RR_RANK_MAX,  100).

-define(TYPE_RACE,1). %%寻常冲榜
-define(TYPE_WISH,2). %%许愿冲榜

-define(TYPE_POOL_RACE,0). %%正常奖池
-define(TYPE_POOL_COIN,1). %%金币奖池
-define(TYPE_POOL_RUNE,2). %%符文奖池


%% 跨服竞榜活动-时间配置
-record(race_rank_act, {
    act_id = 0                          %% 活动Id
    ,type  = 0                          %% 1冲榜2许愿池
    ,open_day = 0                       %% 开服多少天后可以参与
    ,name = <<>>                        %% 活动名
    ,start_time = 0                     %% 活动开始时间
    ,end_time = 0                       %% 活动结束时间
    ,show_time = 0                      %% 展示时间
    ,lv = 0                             %% 玩家参加活动需要达到的等级
    ,condition = []                     %% 条件
    }
).

%% 跨服竞榜活动-奖池奖励配置
-record(race_rank_draw_pool, {
    act_id = 0                          %% 活动Id
    ,type  = 0                          %% 0冲榜1金币2符文
    ,stage = 0                          %% 世界等级阶段
    ,award_id = 0                       %% 奖励Id
    ,award = []                         %% 奖励
    ,loading_times = 0                  %% 入库次数
    ,weight = 0                         %% 权重
    ,is_broadcast = 0                   %% 是否发送传闻(1发 0不发)
    ,is_tv = 0                          %% 是否上电视(1上 0不上)
    }
).

%% 跨服竞榜活动-排名奖励
-record(race_rank_award, {
    act_id = 0                          %% 活动Id
    ,stage = 0                          %% 世界等级阶段
    ,min_rank = 0                       %% 排名上限
    ,max_rank = 0                       %% 排名下限
    ,need_score = 0                     %% 最低上榜要求
    ,award = []                         %% 奖励
    }
).

%% 跨服竞榜活动-积分阶段奖励
-record(race_rank_times_award, {
    act_id = 0                          %% 活动Id
    ,stage = 0                          %% 世界等级阶段
    ,award_id = 0                       %% 奖励Id
    ,need_score = 0                     %% 所需积分
    ,server_score = 0                   %% 所需全服积分
    ,award = []                         %% 奖励
    }
).


%% 跨服竞榜活动信息
-record(rr_act_info, {
    act_id = 0                          %% 活动Id
    ,status = 0                         %% 已结算奖励:结算时的时间戳;还没结算奖励:0
    ,start_time = 0                     %% 活动开始时间
    ,end_time = 0                       %% 活动结束时间
    ,show_end_time = 0                  %% 展示结束时间
}).


%% race_rank_act进程state
-record(race_rank_act_info, {
    opening = []                        %% 正在开启中/展示中的活动[#rr_act_info{}]
    ,ref = 0                            %% 活动开启结束定时器
    ,scores = []                         %% 本服积分
}).

%% race_rank_mgr进程state
-record(rr_rank_state, {
    server2zone_dict = #{}              %% 按ServerId查询ZoneId的索引数据
    ,acts_rank = []                     %% 排行榜数据[#rr_act_rank{}]
    }
).

%% 竟榜活动排行榜
-record(rr_act_rank, {
    act_id = 0                          %% 活动Id
    ,ranks = []                         %% 排行榜数据[#rr_rank{}]
    }
).

%% 排行榜数据
-record(rr_rank, {
    act_id = 0                          %% 活动Id
    ,zone_id = 0                        %% 分区Id
    ,roles = []                         %% 排行榜数据[#rr_rank_role{}]
    }
).

%% 排行榜角色数据
-record(rr_rank_role, {
    act_id = 0                          %% 活动Id
    ,zone_id = 0                        %% 分区Id
    ,role_id = 0                        %% 角色Id
    ,role_name = <<>>                   %% 角色名
    ,server_id = 0                      %% 服务器Id(后台唯一服号)
    ,server_num = 0                     %% 服务器编号(玩家可见的服编号)
    ,score = 0                          %% 积分
    ,time = 0                           %% 时间戳
    ,ranking = 0                        %% 排名
    }
).

%% 角色竞榜活动数据
-record(role_race_rank, {
        act_data = []                   %% 角色竞榜活动数据:[#rr_act_data{}]
    }
).

%% 角色竞榜活动数据
-record(rr_act_data, {
    act_id = 0                          %% 活动Id
    ,times = 0                          %% 累计次数
    ,buy_ten_times = 0                  %% 抽十次的累计次数
    ,buy_ten_time = 0                   %% 最近一次抽十次的时间戳
    ,score = 0                          %% 积分
    ,use_free_times = 0                 %% 已使用免费次数
    ,free_time = 0                      %% 最近一次使用免费次数的时间戳
    ,award_log = []                     %% 累计次数奖励领取记录[AwardId]
    ,valid_time = 0                     %% 数据有效截止时间戳

    ,coin = 0        %%金币
    ,stage = 0       %%当前阶段 累计充值阶段
    ,time  = 0       %%充值时间 =
    ,coin_draw = 0   %%金币祈愿次数
    ,coin_time = 0   %%金币祈愿时间
    ,rune_draw = 0   %%符文祈愿次数
    ,rune_time = 0   %%符文祈愿时间
    }
).

%% 活动世界等级阶段数据
-record(rr_act_stage, {
    act_id = 0                          %% 活动Id
    ,stage = 0                          %% 世界等级阶段
    ,valid_time = 0                     %% 数据有效截止时间戳(等于活动的show_end_time)
    }
).


%% race_rank_opening_act数据表语句.
%% 活动展示期过后清理数据
-define(RR_ACT_SELECT, <<"SELECT `act_id`,`status` FROM `race_rank_opening_act`">>).
-define(RR_ACT_BATCH, <<"REPLACE INTO race_rank_opening_act (`act_id`,`status`)">>).
-define(RR_ACT_DEL, <<"DELETE FROM race_rank_opening_act WHERE `act_id`=~p">>).
-define(RR_ACT_DEL_ALL, <<"TRUNCATE TABLE race_rank_opening_act">>).


%% race_rank数据表语句.
-define(RR_RANK_SELECT, <<"SELECT `act_id`,`zone_id`,`rid`,`rname`,`server_id`"
    ",`server_num`,`score`,`time` FROM `race_rank`">>).
-define(RR_RANK_BATCH, <<"REPLACE INTO race_rank (`act_id`,`zone_id`,`rid`,`rname`,`server_id`"
    ",`server_num`,`score`,`time`) VALUES ~ts">>).
-define(RR_RANK_REPLACE, <<"REPLACE INTO race_rank (`act_id`,`zone_id`,`rid`,`rname`,`server_id`"
    ",`server_num`,`score`,`time`) VALUES (~p, ~p, ~p, '~ts', ~p,~p, ~p, ~p)">>).
-define(RR_RANK_DEL, <<"DELETE FROM race_rank WHERE `act_id`=~p AND `rid`=~p">>).
-define(RR_RANK_BATCH_DEL, <<"DELETE FROM race_rank WHERE `act_id`=~p AND `rid` IN (~ts)">>).
-define(RR_RANK_DEL_ACT, <<"DELETE FROM race_rank WHERE `act_id`=~p">>).
-define(RR_RANK_DEL_ALL, <<"TRUNCATE TABLE race_rank">>).

-define(RR_RANK_LOG_BATCH, <<"REPLACE INTO race_rank (`act_id`,`zone_id`,`rid`,`rname`,`server_id`"
    ",`server_num`,`score`,`time`) VALUES ~ts">>).


%% role_race_rank数据表语句.
-define(RR_ROLE_SELECT, <<"SELECT `act_id`,`times`,`buy_ten_times`,`buy_ten_time`,`score`,`use_free_times`,`free_time`,`award_log`"
    ",`valid_time`,`coin`,`stage`,`time`,`coin_draw`,`coin_time`,`rune_draw`,`rune_time` FROM `role_race_rank` WHERE `rid`=~p">>).
-define(RR_ROLE_REPLACE, <<"REPLACE INTO role_race_rank (`rid`,`act_id`,`times`,`buy_ten_times`,`buy_ten_time`,`score`,`use_free_times`,`free_time`"
    ",`award_log`,`valid_time`,`coin`,`stage`,`time`,`coin_draw`,`coin_time`,`rune_draw`,`rune_time`) VALUES (~p, ~p, ~p, ~p, ~p, ~p, ~p, ~p, '~ts', ~p,~p, ~p, ~p, ~p, ~p, ~p,~p)">>).
-define(RR_ROLE_DEL, <<"DELETE FROM role_race_rank WHERE `act_id`=~p">>).
-define(RR_ROLE_DEL_ROLE, <<"DELETE FROM role_race_rank WHERE `act_id`=~p AND `rid`=~p">>).
-define(RR_ROLE_DEL_ALL, <<"TRUNCATE TABLE role_race_rank">>).

%% log_race_rank数据表语句.
-define(RR_LOG_RANK_BATCH, <<"REPLACE INTO log_race_rank_kf (`act_id`,`zone_id`,`role_id`,`rname`,`server_id`"
    ",`server_num`,`stime`,`etime`,`score`,`rank`,`ctime`,`time`) VALUES ~ts">>).

-define(RR_LOG_RANK_REPLACE, <<"REPLACE INTO log_race_rank (`act_id`,`zone_id`,`role_id`,`rname`,`stime`,`etime`,`score`,`rank`,`ctime`,`time`) VALUES (~p,~p,~p,'~ts',~p,~p,~p,~p,~p,~p)">>).

%% race_rank_server_score数据表语句.
-define(SQL_SERVER_SCORE_GET, <<"SELECT `act_id`,`score`,`time` FROM `race_rank_server_score`">>).
-define(SQL_SERVER_SCORE_REPLACE, <<"REPLACE INTO `race_rank_server_score` (`act_id`,`score`,`time`) VALUES (~p, ~p, ~p)">>).
-define(SQL_SERVER_SCORE_DEL, <<"DELETE FROM `race_rank_server_score` WHERE `act_id`=~p">>).

-endif.                           %% RACE_RANK_HRL

