%%---------------------------------------------------- %% 运营活动数据配置文件 %% @author whjing2011@gmail.com %%---------------------------------------------------- -module(holiday_base). -export([cfg/0, handle/3]). -include("data_config.hrl"). -include("common.hrl"). cfg() -> #data_cfg{ name = holiday_base ,lua_name = holiday_base ,desc = "活动后台配置数据" ,source = "holiday_base.xml" ,target = "holiday_base.php" ,inc = [] ,callback_php = [ {"holiday.cfg.php", ?MODULE, handle, {}} ] ,sheet = [ {[N || {N,_} <- types()], [ #f_column{type = str, convert = false, name = bid, desc = "基础ID", primary = true} ,#f_column{type = int, name = sort_val, desc = "排序"} ,#f_column{type = str, convert = false, name = title, desc = "左侧标题", width = 200} ,#f_column{type = str, convert = false, name = title2, desc = "顶部横幅"} ,#f_column{type = str, convert = false, name = ico, desc = "左侧图标"} ,#f_column{type = str, convert = false, name = type_ico, desc = "类型图标"} ,#f_column{type = str, convert = false, name = top_banner, desc = "顶部底图", width = 200} ,#f_column{type = str, convert = false, name = rule_str, desc = "活动规则", width = 300} ,#f_column{type = str, convert = false, name = time_str, desc = "活动时间", width = 200} ,#f_column{type = str, convert = false, name = bottom_alert, desc = "温馨提示", width = 250} ,#f_column{type = str, convert = false, name = reward_title, desc = "奖励标题", comment = "与holiday_role_data的 子活动子项背景资源类似", width = 200} ,#f_column{type = str, convert = false, name = reward, desc = "奖励", width = 360} ,#f_column{type = str, convert = false, name = reward_desc, desc = "奖励填写规则", width = 360} ,#f_column{type = term, name = item_effect, desc = "物品特效", width = 250} ,#f_column{type = str, convert = false, name = mail_subject, desc = "邮件标题", width = 200} ,#f_column{type = str, convert = false, name = mail_content, desc = "邮件内容", width = 360} ,#f_column{type = str, convert = false, name = cli_reward, desc = "客户端奖励", width = 250} ,#f_column{type = str, convert = false, name = panel_type, desc = "客户端面板类型", width = 200} ,#f_column{type = kv, name = process_show_reward, kv_type = bool, desc = "处理领奖显示"} ,#f_column{type = int, name = start_open_day, desc = "开服多少天开启"} ,#f_column{type = int, name = open_day_min, desc = "开服X天开启"} ,#f_column{type = int, name = open_day_max, desc = "开服X天关闭"} ]} ,{["面板类型"], [ #f_column{type = int, name = type, desc = "类型"} ,#f_column{type = str, name = name, desc = "名称"} ]} ] }. types() -> [{"充值类",1}, {"消费类",2}, {"系统功能",3}, {"在线类",4}, {"趣味玩法",5}, {"其它",6}, {"排行榜",7}]. handle(_DataCfg, SheetDatas, _) -> S1 = " S = lists:concat(["\t'type_icon' => array(", [lists:concat(["\n\t\t'", Type, "' => '", TypeName, "',"]) || {TypeName, Type} <- types()], "\n\t),"]), string:join(lists:reverse([S | L]), ",\n"); do_sheets([{"面板类型", _, Rows} | T], L) -> S = lists:concat(["\t'panel_types' => array(", [lists:concat(["\n\t\t'", Val1, "' => '", str(Val2), "',"]) || [#f_column{val_cli = Val1}, #f_column{val_cli = Val2} | _] <- Rows], "\n\t)"]), do_sheets(T, [S | L]); do_sheets([{SheetName, _, Rows} | T], L) -> case lists:keyfind(SheetName, 1, types()) of {_, Type} -> S = lists:concat(["\t", Type , " => array( // 大分类 'name' => \"", SheetName ,"\", 'sub' => array(",do_rows(Rows, [])," ) )"]), do_sheets(T, [S | L]); _ -> ?P("======++~ts~n", [SheetName]), do_sheets(T, L) end. do_rows([], L) -> string:join(lists:reverse(L), ","); do_rows([Row | T], L) -> #f_column{val_cli = Name} = lists:keyfind(bid, #f_column.name, Row), #f_column{val = SortVal} = lists:keyfind(sort_val, #f_column.name, Row), #f_column{val_cli = Title} = lists:keyfind(title, #f_column.name, Row), #f_column{val_cli = Title2} = lists:keyfind(title2, #f_column.name, Row), #f_column{val_cli = Ico} = lists:keyfind(ico, #f_column.name, Row), #f_column{val_cli = Type_ico} = lists:keyfind(type_ico, #f_column.name, Row), #f_column{val_cli = Top_banner} = lists:keyfind(top_banner, #f_column.name, Row), #f_column{val_cli = Rule_str} = lists:keyfind(rule_str, #f_column.name, Row), #f_column{val_cli = Time_str} = lists:keyfind(time_str, #f_column.name, Row), #f_column{val_cli = Bottom_alert} = lists:keyfind(bottom_alert, #f_column.name, Row), #f_column{val_cli = Reward_title} = lists:keyfind(reward_title, #f_column.name, Row), #f_column{val_cli = Reward} = lists:keyfind(reward, #f_column.name, Row), #f_column{val_cli = Reward_desc} = lists:keyfind(reward_desc, #f_column.name, Row), #f_column{val_cli = ItemEff} = lists:keyfind(item_effect, #f_column.name, Row), #f_column{val_cli = Mail_subject} = lists:keyfind(mail_subject, #f_column.name, Row), #f_column{val_cli = Mail_content} = lists:keyfind(mail_content, #f_column.name, Row), #f_column{val_cli = Cli_reward} = lists:keyfind(cli_reward, #f_column.name, Row), #f_column{val_cli = Panel_type} = lists:keyfind(panel_type, #f_column.name, Row), #f_column{val_cli = Process_show_reward} = lists:keyfind(process_show_reward, #f_column.name, Row), #f_column{val_cli = Start_open_day} = lists:keyfind(start_open_day, #f_column.name, Row), #f_column{val_cli = Open_day_min} = lists:keyfind(open_day_min, #f_column.name, Row), #f_column{val_cli = Open_day_max} = lists:keyfind(open_day_max, #f_column.name, Row), [Bid | _] = string:tokens(Name, ":"), S = lists:concat([" ",Bid," => array( 'name' => \"", str(Name), "\", 'sort_val' => \"", str(SortVal), "\", 'title' => \"", str(Title), "\", 'title2' => \"", str(Title2), "\", 'ico' => \"", str(Ico), "\", 'type_ico' => \"", str(Type_ico), "\", 'top_banner' => \"", str(Top_banner), "\", 'rule_str' => \"", str(Rule_str), "\", 'time_str' => \"", str(Time_str), "\", 'bottom_alert' => \"", str(Bottom_alert), "\", 'reward_title' => \"", str(Reward_title), "\", 'reward' => \"[", str(Reward), "]\", 'reward_desc' => \"", str(Reward_desc), "\", 'item_effect' => \"", str(ItemEff), "\", 'item_effect_desc' => \"{物品ID, EffectId1, EffectId2}\", 'mail_title' => \"", str(Mail_subject), "\", 'mail_content' => \"", str(Mail_content), "\", 'cli_reward' => \"", str(Cli_reward), "\", 'panel_type' => \"", str(Panel_type), "\", 'process_show_reward' => \"", str(Process_show_reward), "\", 'start_open_day' => \"", str(Start_open_day), "\", 'open_day_min' => \"", str(Open_day_min), "\", 'open_day_max' => \"", str(Open_day_max), "\", )"]), do_rows(T, [S | L]). str(Str) -> Str1 = unicode:characters_to_list(util:to_binary(Str)), util:replace(Str1, "\"", "\\\"").