%%% -------------------------------------------------------
%%% @author huangyongxing@yeah.net
%%% @doc
%%% 团购活动
%%% @end
%%% -------------------------------------------------------
-ifndef(GROUP_BUY_HRL).
-define(GROUP_BUY_HRL, ok).

-define(SQL_SELECT_GROUP_BUY_DATA, <<"SELECT subtype,grade,real_buyer_count,fix_buyer_count,gold_type,original_price,stime,etime,buyers FROM group_buy_data">>).
-define(SQL_REPLACE_GROUP_BUY_DATA_HEAD, <<"REPLACE INTO group_buy_data (subtype,grade,real_buyer_count,fix_buyer_count,gold_type,original_price,stime,etime,buyers)">>).
-define(SQL_DEL_GROUP_BUY_DATA, <<"DELETE FROM group_buy_data WHERE `subtype`=~w AND `grade`=~w">>).

%% 折扣返还邮件标题及内容的语言配置id
-define(GROUP_BUY_RETURN_TITLE,   3317001).
-define(GROUP_BUY_RETURN_CONTENT, 3317002).

%% 团购活动 - 个人参与活动的数据，
%% 存储在#custom_act_data.act_data中
%% ActData :: [ #role_group_buy{} ]
-record(role_group_buy, {
        subtype = 0                 % 活动子类型
        ,grade_id = 0               % 活动中的档次id
        ,gold_type = 1              % 购买消耗的货币类型
        ,buy_cost = 0               % 购买时花费（实际花费：buy_cost - got_return）
        ,got_return = 0             % 已领取折扣返还（自动返还也更新）
        ,buy_time = 0               % 购买时间
        ,return_time = 0            % 最后一次返还时间
        ,auto_return = 0            % 活动结束自动返还状态（1已返还，0未返还）
    }).

%% 团购活动数据 - 管理器中记录的活动数据
%% （记录在进程字典中）
-record(group_buy_info, {
        buy_id = {0, 0}             % 团购商品KEY {Subtype, GradeId}
        %% 活动数据部分
        ,real_buyer_count = 0
        ,fix_buyer_count = 0
        ,buyers = []

        %% 配置验证转换后的中间状态部分
        % 折扣配置#{Stage => {Discount, BuyerNeed}}
        % （通过活动奖励条件配置计算得到）
        ,discount_map = #{}
        % 折扣配置，有序列表，BuyerCount由小到大[{BuyerCount, State}]
        % 用于查询当前Stage
        ,buyer_count_stage = []
        % 缓存最大的阶段数，在查询时直接返回
        ,stage_total = 0

        %% --------------------------------------------------
        %% 以下为从活动配置中取得的配置数据，
        %% 用于对比是否变化及购买等操作时使用
        %% --------------------------------------------------
        ,gold_type = 0
        ,original_price = 0
        ,discount
        ,buyer_need
        ,fake
        ,stime = 0
        ,etime = 0
        %% --------------------------------------------------
    }).

%% 档次购买信息
-record(buy_info_grade, {
        buy_id = {0, 0}
        ,real_buyer_count = 0           % 真实购买人数
        ,fix_buyer_count = 0            % 真实+虚拟混合的购买人数
        ,discount = 10                  % 折扣
        ,original_price = 999999        % 原始价格
        ,gold_type = 1                  % 货币类型
        ,stage = 0                      % 当前活动折扣阶段（真实使用）
        ,stage_no_fix = 0               % 若论真实人数的折扣阶段（日志分析需要）
        ,stage_total = 0                % 总阶段数
    }).

%% 结算检查折扣返还时的参数
-record(check_return_params, {
        subtype = 0
        ,grade_id = 0
        ,original_price = 999999
        ,gold_type = 1
        ,curr_price = 999999
        ,discount = 10
        ,stime = 0
        ,etime = 0
    }).

-endif.
