%%% ------------------------------------------------------- %%% @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.