├── include ├── html.hrl ├── gm.hrl ├── basic_data.hrl ├── yaws_api.hrl ├── table_record.hrl └── table_record_string.hrl ├── doc ├── 库函数 │ ├── 库函数使用方法.txt │ ├── emysql.zip │ ├── 库函数使用方法.txt~ │ └── tonyg-erlang-rfc4627-00caae5.zip └── msg.txt ├── rebar ├── priv └── docroot │ ├── images │ ├── logo.png │ ├── loading.gif │ ├── bg_sb_bot.png │ ├── bg_sb_top.png │ ├── closeIcon.png │ ├── topnav_bg.gif │ ├── bg_sb_line.png │ ├── bg_sb_main.png │ ├── calendar_all.png │ ├── new_sprite.png │ ├── topnav_tab.gif │ └── bg_sb_shortline.png │ ├── inc │ ├── side_my.inc │ ├── foot.inc │ ├── log_update.inc │ ├── side_data.inc │ ├── side_bg.inc │ ├── head_charset.inc │ ├── side_gm.inc │ ├── nav_head_guest.inc │ └── nav_head_master.inc │ ├── lib │ ├── jquery-ui │ │ ├── images │ │ │ ├── ui-icons_222222_256x240.png │ │ │ ├── ui-icons_2e83ff_256x240.png │ │ │ ├── ui-icons_454545_256x240.png │ │ │ ├── ui-icons_888888_256x240.png │ │ │ ├── ui-icons_cd0a0a_256x240.png │ │ │ ├── ui-bg_flat_0_aaaaaa_40x100.png │ │ │ ├── ui-bg_flat_75_ffffff_40x100.png │ │ │ ├── ui-bg_glass_55_fbf9ee_1x400.png │ │ │ ├── ui-bg_glass_65_ffffff_1x400.png │ │ │ ├── ui-bg_glass_75_dadada_1x400.png │ │ │ ├── ui-bg_glass_75_e6e6e6_1x400.png │ │ │ ├── ui-bg_glass_95_fef1ec_1x400.png │ │ │ └── ui-bg_highlight-soft_75_cccccc_1x100.png │ │ └── zh_CN.js │ └── flot │ │ └── jquery.flot.categories.min.js │ ├── userLogin │ ├── my_1.yaws │ ├── index.yaws │ ├── reg.yaws │ └── userLogin.yaws │ ├── css │ ├── reg.css │ ├── index.css │ ├── content.css │ └── public.css │ ├── gm │ ├── gm_5.yaws │ ├── index.yaws │ ├── gm_6.yaws │ ├── gm_3.yaws │ ├── gm_9.yaws │ ├── gm_2.yaws │ ├── gm_10.yaws │ ├── gm_4.yaws │ ├── gm_8.yaws │ ├── gm_7.yaws │ ├── gm_11.yaws │ └── gm_1.yaws │ ├── log.yaws │ ├── action.yaws │ ├── data │ ├── index.yaws │ ├── data_2.yaws │ ├── data_3.yaws │ ├── data_0.yaws │ ├── data_1.yaws │ ├── data_4.yaws │ └── date.yaws │ ├── index.yaws │ └── js │ └── public.js ├── src ├── gm.app.src ├── gm_app.erl ├── gm_sup.erl ├── gm_session.erl ├── gm_data3.erl ├── gm.erl ├── gm_data2.erl ├── gm_manager.erl ├── gm_data4.erl ├── gm_pool.erl ├── gm_fun.erl └── gm_data1.erl ├── Makefile ├── ebin └── game.config ├── .gitattributes ├── game_manager.iml ├── .gitignore ├── rebar.config └── README.md /include/html.hrl: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /doc/库函数/库函数使用方法.txt: -------------------------------------------------------------------------------- 1 | 1.解压缩到当前文件夹 2 | 2.文件夹复制到 /erlang安装目录/lib/下 3 | -------------------------------------------------------------------------------- /rebar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sdgdsffdsfff/game_manager/HEAD/rebar -------------------------------------------------------------------------------- /doc/库函数/emysql.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sdgdsffdsfff/game_manager/HEAD/doc/库函数/emysql.zip -------------------------------------------------------------------------------- /doc/库函数/库函数使用方法.txt~: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sdgdsffdsfff/game_manager/HEAD/doc/库函数/库函数使用方法.txt~ -------------------------------------------------------------------------------- /priv/docroot/images/logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sdgdsffdsfff/game_manager/HEAD/priv/docroot/images/logo.png -------------------------------------------------------------------------------- /priv/docroot/images/loading.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sdgdsffdsfff/game_manager/HEAD/priv/docroot/images/loading.gif -------------------------------------------------------------------------------- /priv/docroot/images/bg_sb_bot.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sdgdsffdsfff/game_manager/HEAD/priv/docroot/images/bg_sb_bot.png -------------------------------------------------------------------------------- /priv/docroot/images/bg_sb_top.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sdgdsffdsfff/game_manager/HEAD/priv/docroot/images/bg_sb_top.png -------------------------------------------------------------------------------- /priv/docroot/images/closeIcon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sdgdsffdsfff/game_manager/HEAD/priv/docroot/images/closeIcon.png -------------------------------------------------------------------------------- /priv/docroot/images/topnav_bg.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sdgdsffdsfff/game_manager/HEAD/priv/docroot/images/topnav_bg.gif -------------------------------------------------------------------------------- /priv/docroot/images/bg_sb_line.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sdgdsffdsfff/game_manager/HEAD/priv/docroot/images/bg_sb_line.png -------------------------------------------------------------------------------- /priv/docroot/images/bg_sb_main.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sdgdsffdsfff/game_manager/HEAD/priv/docroot/images/bg_sb_main.png -------------------------------------------------------------------------------- /priv/docroot/images/calendar_all.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sdgdsffdsfff/game_manager/HEAD/priv/docroot/images/calendar_all.png -------------------------------------------------------------------------------- /priv/docroot/images/new_sprite.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sdgdsffdsfff/game_manager/HEAD/priv/docroot/images/new_sprite.png -------------------------------------------------------------------------------- /priv/docroot/images/topnav_tab.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sdgdsffdsfff/game_manager/HEAD/priv/docroot/images/topnav_tab.gif -------------------------------------------------------------------------------- /doc/库函数/tonyg-erlang-rfc4627-00caae5.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sdgdsffdsfff/game_manager/HEAD/doc/库函数/tonyg-erlang-rfc4627-00caae5.zip -------------------------------------------------------------------------------- /priv/docroot/images/bg_sb_shortline.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sdgdsffdsfff/game_manager/HEAD/priv/docroot/images/bg_sb_shortline.png -------------------------------------------------------------------------------- /priv/docroot/inc/side_my.inc: -------------------------------------------------------------------------------- 1 |
2 | 5 |
6 | 7 | -------------------------------------------------------------------------------- /priv/docroot/lib/jquery-ui/images/ui-icons_222222_256x240.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sdgdsffdsfff/game_manager/HEAD/priv/docroot/lib/jquery-ui/images/ui-icons_222222_256x240.png -------------------------------------------------------------------------------- /priv/docroot/lib/jquery-ui/images/ui-icons_2e83ff_256x240.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sdgdsffdsfff/game_manager/HEAD/priv/docroot/lib/jquery-ui/images/ui-icons_2e83ff_256x240.png -------------------------------------------------------------------------------- /priv/docroot/lib/jquery-ui/images/ui-icons_454545_256x240.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sdgdsffdsfff/game_manager/HEAD/priv/docroot/lib/jquery-ui/images/ui-icons_454545_256x240.png -------------------------------------------------------------------------------- /priv/docroot/lib/jquery-ui/images/ui-icons_888888_256x240.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sdgdsffdsfff/game_manager/HEAD/priv/docroot/lib/jquery-ui/images/ui-icons_888888_256x240.png -------------------------------------------------------------------------------- /priv/docroot/lib/jquery-ui/images/ui-icons_cd0a0a_256x240.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sdgdsffdsfff/game_manager/HEAD/priv/docroot/lib/jquery-ui/images/ui-icons_cd0a0a_256x240.png -------------------------------------------------------------------------------- /priv/docroot/lib/jquery-ui/images/ui-bg_flat_0_aaaaaa_40x100.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sdgdsffdsfff/game_manager/HEAD/priv/docroot/lib/jquery-ui/images/ui-bg_flat_0_aaaaaa_40x100.png -------------------------------------------------------------------------------- /priv/docroot/lib/jquery-ui/images/ui-bg_flat_75_ffffff_40x100.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sdgdsffdsfff/game_manager/HEAD/priv/docroot/lib/jquery-ui/images/ui-bg_flat_75_ffffff_40x100.png -------------------------------------------------------------------------------- /priv/docroot/lib/jquery-ui/images/ui-bg_glass_55_fbf9ee_1x400.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sdgdsffdsfff/game_manager/HEAD/priv/docroot/lib/jquery-ui/images/ui-bg_glass_55_fbf9ee_1x400.png -------------------------------------------------------------------------------- /priv/docroot/lib/jquery-ui/images/ui-bg_glass_65_ffffff_1x400.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sdgdsffdsfff/game_manager/HEAD/priv/docroot/lib/jquery-ui/images/ui-bg_glass_65_ffffff_1x400.png -------------------------------------------------------------------------------- /priv/docroot/lib/jquery-ui/images/ui-bg_glass_75_dadada_1x400.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sdgdsffdsfff/game_manager/HEAD/priv/docroot/lib/jquery-ui/images/ui-bg_glass_75_dadada_1x400.png -------------------------------------------------------------------------------- /priv/docroot/lib/jquery-ui/images/ui-bg_glass_75_e6e6e6_1x400.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sdgdsffdsfff/game_manager/HEAD/priv/docroot/lib/jquery-ui/images/ui-bg_glass_75_e6e6e6_1x400.png -------------------------------------------------------------------------------- /priv/docroot/lib/jquery-ui/images/ui-bg_glass_95_fef1ec_1x400.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sdgdsffdsfff/game_manager/HEAD/priv/docroot/lib/jquery-ui/images/ui-bg_glass_95_fef1ec_1x400.png -------------------------------------------------------------------------------- /priv/docroot/lib/jquery-ui/images/ui-bg_highlight-soft_75_cccccc_1x100.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sdgdsffdsfff/game_manager/HEAD/priv/docroot/lib/jquery-ui/images/ui-bg_highlight-soft_75_cccccc_1x100.png -------------------------------------------------------------------------------- /include/gm.hrl: -------------------------------------------------------------------------------- 1 | -record( user, {userName, pwd, platformId} ). 2 | 3 | -define( trace(List), error_logger:error_msg( "~p...~p...log:~p~n", [ ?MODULE, ?LINE, List ] ) ). 4 | 5 | -define( ServerLIST, "xw_user" ). 6 | -------------------------------------------------------------------------------- /priv/docroot/inc/foot.inc: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /priv/docroot/inc/log_update.inc: -------------------------------------------------------------------------------- 1 |
2 |

版本:V1.0.0

3 |
4 |

发布时间:2014-11-21

5 |
6 |

功能:

7 |

1.数据查询功能基础完成,具备基本的功能

8 |
9 |
10 |
11 |
-------------------------------------------------------------------------------- /src/gm.app.src: -------------------------------------------------------------------------------- 1 | {application, gm, 2 | [ 3 | {description, ""}, 4 | {vsn, "1"}, 5 | {registered, []}, 6 | {applications, [ 7 | kernel, 8 | stdlib 9 | ]}, 10 | {mod, { gm_app, []}}, 11 | {env, []} 12 | ]}. 13 | -------------------------------------------------------------------------------- /priv/docroot/inc/side_data.inc: -------------------------------------------------------------------------------- 1 |
2 | 9 |
10 | 11 | -------------------------------------------------------------------------------- /include/basic_data.hrl: -------------------------------------------------------------------------------- 1 | -define( BASIC_DATA, 2 | [{{attr,#attr.gangId,1}, "武当"}, {{attr,#attr.gangId,2}, "天山"}, {{attr,#attr.gangId,3}, "丐帮"}, {{attr,#attr.gangId,4}, "血刀"}, 3 | {{attr,#attr.gangId,5}, "唐门"}, {{attr,#attr.gangId,6}, "天波"},{{attr,#attr.gangId, 1}, "武盟"}, {{attr,#attr.gangId, 2}, "侠盟"}] ). 4 | -------------------------------------------------------------------------------- /priv/docroot/inc/side_bg.inc: -------------------------------------------------------------------------------- 1 | 6 |
-------------------------------------------------------------------------------- /Makefile: -------------------------------------------------------------------------------- 1 | REBAR = ./rebar 2 | 3 | compile: 4 | @$(REBAR) compile 5 | 6 | clean: 7 | @$(REBAR) clean 8 | 9 | 10 | rar: 11 | tar -czf hand_game.tar.gz ebin win.bat priv ../apps/*/ebin data 12 | cd _msg; svn up; mv ../hand_game.tar.gz ./ ; svn ci -m'ci' ; cd - 13 | 14 | svn: 15 | cd data; svn up; cd ../ 16 | 17 | updata: 18 | cd data; svn up; cd - -------------------------------------------------------------------------------- /doc/msg.txt: -------------------------------------------------------------------------------- 1 | %% 后端返回状态码 2 | state状态码 含义 3 | 200 返回数据成功 4 | 5 | 101 服务器端crash 6 | 102 服务器端缺少配置文件 7 | 103 服务器端计算出现问题 8 | 104 用户名密码错误 9 | 105 存储的session过期 10 | 106 没有cookie 11 | 107 存储cookie 12 | 13 | 201 前端传入的数据格式不正确 14 | 202 前端传入的数据,后端验证没有通过 15 | -------------------------------------------------------------------------------- /src/gm_app.erl: -------------------------------------------------------------------------------- 1 | -module(gm_app). 2 | 3 | -behaviour(application). 4 | 5 | %% Application callbacks 6 | -export([start/2, stop/1]). 7 | 8 | %% =================================================================== 9 | %% Application callbacks 10 | %% =================================================================== 11 | 12 | start(_StartType, _StartArgs) -> 13 | gm_sup:start_link(). 14 | 15 | stop(_State) -> 16 | ok. 17 | -------------------------------------------------------------------------------- /priv/docroot/inc/head_charset.inc: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /ebin/game.config: -------------------------------------------------------------------------------- 1 | [{"server_list", "列表服", "xw_user", "root", "123", "127.0.0.1", 3306}, 2 | 3 | [{"all", "全部大区", "xw_user", "root", "123", "127.0.0.1", 3306}, 4 | {"7", "武林至尊", "xw_7","root","123","127.0.0.1",3306}, 5 | {"14", "绝代双骄", "xw_14","root","123","127.0.0.1",3306}], 6 | 7 | [{"all", "全部渠道"}, 8 | {"101", "google版"}, 9 | {"102", "IOS版"}, 10 | {"103", "mycard版"}, 11 | {"105", "萌萌哒google版"}, 12 | {"107", "萌萌哒mycard版"}, 13 | {"1001", "官网IOS版"}, 14 | {"1002", "91版"}, 15 | {"1003", "PP助手"}]]. -------------------------------------------------------------------------------- /priv/docroot/inc/side_gm.inc: -------------------------------------------------------------------------------- 1 |
2 | 15 |
-------------------------------------------------------------------------------- /.gitattributes: -------------------------------------------------------------------------------- 1 | # Auto detect text files and perform LF normalization 2 | * text=auto 3 | 4 | # Custom for Visual Studio 5 | *.cs diff=csharp 6 | *.sln merge=union 7 | *.csproj merge=union 8 | *.vbproj merge=union 9 | *.fsproj merge=union 10 | *.dbproj merge=union 11 | 12 | # Standard to msysgit 13 | *.doc diff=astextplain 14 | *.DOC diff=astextplain 15 | *.docx diff=astextplain 16 | *.DOCX diff=astextplain 17 | *.dot diff=astextplain 18 | *.DOT diff=astextplain 19 | *.pdf diff=astextplain 20 | *.PDF diff=astextplain 21 | *.rtf diff=astextplain 22 | *.RTF diff=astextplain 23 | -------------------------------------------------------------------------------- /priv/docroot/userLogin/my_1.yaws: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | out(A) -> 6 | {ssi, "../inc/head_charset.inc", "", ""}. 7 | 8 | 9 | 设置 10 | 11 | 12 |
13 |

设置   暂未完成

14 | 18 |
19 | -------------------------------------------------------------------------------- /game_manager.iml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | -------------------------------------------------------------------------------- /src/gm_sup.erl: -------------------------------------------------------------------------------- 1 | -module(gm_sup). 2 | 3 | -behaviour(supervisor). 4 | 5 | %% API 6 | -export([start_link/0]). 7 | 8 | %% Supervisor callbacks 9 | -export([init/1]). 10 | 11 | %% Helper macro for declaring children of supervisor 12 | -define(CHILD(I, Type), {I, {I, start_link, []}, permanent, 5000, Type, [I]}). 13 | 14 | %% =================================================================== 15 | %% API functions 16 | %% =================================================================== 17 | 18 | start_link() -> 19 | supervisor:start_link({local, ?MODULE}, ?MODULE, []). 20 | 21 | %% =================================================================== 22 | %% Supervisor callbacks 23 | %% =================================================================== 24 | 25 | init([]) -> 26 | {ok, { {one_for_one, 5, 10}, []} }. 27 | 28 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # Windows image file caches 2 | Thumbs.db 3 | ehthumbs.db 4 | 5 | # Folder config file 6 | Desktop.ini 7 | 8 | # Recycle Bin used on file shares 9 | $RECYCLE.BIN/ 10 | 11 | # Windows Installer files 12 | *.cab 13 | *.msi 14 | *.msm 15 | *.msp 16 | 17 | # ========================= 18 | # Operating System Files 19 | # ========================= 20 | 21 | # OSX 22 | # ========================= 23 | 24 | .DS_Store 25 | .AppleDouble 26 | .LSOverride 27 | 28 | # Icon must end with two \r 29 | Icon 30 | 31 | 32 | # Thumbnails 33 | ._* 34 | 35 | # Files that might appear on external disk 36 | .Spotlight-V100 37 | .Trashes 38 | 39 | # Directories potentially created on remote AFP share 40 | .AppleDB 41 | .AppleDesktop 42 | Network Trash Folder 43 | Temporary Items 44 | .apdisk 45 | 46 | .idea 47 | ebin 48 | *.dump 49 | out 50 | .rebar -------------------------------------------------------------------------------- /rebar.config: -------------------------------------------------------------------------------- 1 | %% vim: ft=erlang 2 | {require_min_otp_vsn, "R17"}. 3 | 4 | %% {lib_dirs, ["../apps"]}. 5 | %% {erl_first_files, ["player_mod", "handle_client", "safe_ets"]}. 6 | 7 | {erl_opts, [ 8 | %%{parse_transform, lager_transform}, 9 | debug_info, 10 | %warnings_as_errors, 11 | 12 | warn_export_all, 13 | nowarn_unused_record, 14 | 15 | {d, env_develop, 1}, 16 | %%{d, env_product, 1}, 17 | 18 | {src_dirs, ["src/"]}, 19 | {i, "include/"} 20 | 21 | ]}. 22 | 23 | %% {sub_dirs, ["../apps/common", "../apps/config", "../apps/cron", "../apps/esqlite", "../apps/global_table", "../apps/goldrush", 24 | %% "../apps/lager", "../apps/lc", "../apps/pangzi"]}. 25 | 26 | %%{pre_hooks, [ 27 | %% %%{compile, "priv/tools/gen_module_define"} 28 | %% {compile, "priv/tools/config_pp"} 29 | %% ]}. 30 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | #game_manager(游戏后台统计) 2 | ============ 3 | **功能方面**:本项目开发的最终目标是: 4 | 1.让运营可以快速的查询玩家角色信息。 5 | 6 | 2.操作玩家角色信息(发装备,.....) 7 | 8 | 3.数据统计(在线量、留存率、支付.....) 9 | 10 | 4.游戏GM工具,数据统计工具。 11 | 12 | 13 | ##开发方面: 14 | webserver:`Yaws`, 一个Erlang开发的web服务器[官方网站](http://yaws.hyber.org/). 15 | 16 | 开发语言:`Erlang`,`Html`(html,javascript,css) 17 | 18 | ###如何部署: 19 | 20 | 1.下载并安装Erlang.http://www.erlang.org/down。 21 | 22 | 2.安装完成后,把bin/erl.exe添加入环境变量 23 | 24 | 3.下载并安装yaws。http://yaws.hyber.org/download/ 25 | 26 | 4.安装完成后,把/bin/yaws.exe添加入环境变量 27 | 28 | 5.启动yaws,在浏览器中输入http://127.0.0.1:8080/ 出现内容表示安装成功 29 | 30 | 6.进入yaws的根目录,根目录下有一个www文件夹,刚刚访问http://127.0.0.1:8080/ 进入的页面就在www下。 31 | 32 | 7.清空www的文件,把该项目game_manager/priv/docroot/ 下的文件复制到www文件夹下 33 | 34 | 8.重启yaws,在yaws控制台中执行gm:init().初始化数据库 35 | 36 | 9.打开浏览器,输入:http://127.0.0.1:8080/ 37 | 38 | 10.输入账户密码:userName:123 pwd:123 39 | -------------------------------------------------------------------------------- /priv/docroot/css/reg.css: -------------------------------------------------------------------------------- 1 | *{padding:0px;margin:0px;} 2 | body{font-family:arial,sans-serif;padding:13px 15px 15px;background-color:#FFFFFF;font-size:9pt;} 3 | #body{width:760px;} 4 | #body .logo{height:70px;padding-left:50px;} 5 | #body .login{margin:20px 0;} 6 | #body table th{text-align:right;padding-top:10px;padding-right:12px;width:110px;} 7 | #body table td{padding:5px 0;} 8 | table tr{height:40px;} 9 | #body table td .info{color:#6F6F6F;font-family:arial,sans-serif;font-size:smaller;} 10 | em{ 11 | font-style:normal; 12 | padding-left:20px; 13 | margin-left:10px; 14 | } 15 | em.error{color:#FF0000;background:url(../images/check.gif) -135px -185px no-repeat;} 16 | em.success{color:green;background:url(../images/check.gif) -135px -146px no-repeat;} 17 | 18 | #reg input[type="text"], #reg input[type="password"] {width:300px;height:28px;font-size:15px;border:1px solid #d9d9d9; 19 | border-top:1px solid silver;box-sizing:border-box;background:white;padding-left:4px;line-height:20px;} -------------------------------------------------------------------------------- /priv/docroot/css/index.css: -------------------------------------------------------------------------------- 1 | #content{margin:20px auto;} 2 | 3 | #content #mainPanel{float:left;padding:20px;width:624px;border-right:1px solid #d3d3d3;} 4 | #content #mainPanel h2 {color:#e00400;} 5 | #content #mainPanel .todoList{ margin-top:40px;} 6 | #content #mainPanel .todoList p{padding-bottom:10px;border-bottom:1px solid #d3d3d3;} 7 | #content #mainPanel .svg{width:100%;height:300px;background:#FFF;margin:20px auto 0 auto;} 8 | 9 | #content #extendPanel{float:right;width:275px;padding:20px 20px 20px 0;} 10 | 11 | #content #extendPanel .ex_top{ background:url(../images/bg_sb_top.png) no-repeat top; height:5px;} 12 | #content #extendPanel .ex_cen{ background:url(../images/bg_sb_main.png) repeat-y;} 13 | #content #extendPanel .ex_bot{ background:url(../images/bg_sb_bot.png) no-repeat bottom;height: 6px;} 14 | 15 | #content #extendPanel h3, #content #extendPanel p{padding:9px 25px 9px 40px;color: #666;} 16 | #content #extendPanel .cen .item_top{height:1px;background: url(../images/bg_sb_shortline.png) no-repeat; margin:5px 0;} 17 | -------------------------------------------------------------------------------- /priv/docroot/gm/gm_5.yaws: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | out(A) -> 6 | {ssi, "../inc/head_charset.inc", "", ""}. 7 | 8 | 9 | 10 | 管理平台 11 | 12 |
13 | 31 |
32 | 33 | 34 | 35 | -------------------------------------------------------------------------------- /priv/docroot/lib/jquery-ui/zh_CN.js: -------------------------------------------------------------------------------- 1 | jQuery(function($){ 2 | $.datepicker.regional['zh-CN'] = { 3 | clearText: '清除', 4 | clearStatus: '清除已选日期', 5 | closeText: '关闭', 6 | closeStatus: '不改变当前选择', 7 | prevText: '<上月', 8 | prevStatus: '显示上月', 9 | prevBigText: '<<', 10 | prevBigStatus: '显示上一年', 11 | nextText: '下月>', 12 | nextStatus: '显示下月', 13 | nextBigText: '>>', 14 | nextBigStatus: '显示下一年', 15 | currentText: '今天', 16 | currentStatus: '显示本月', 17 | monthNames: ['一月','二月','三月','四月','五月','六月', '七月','八月','九月','十月','十一月','十二月'], 18 | monthNamesShort: ['一','二','三','四','五','六', '七','八','九','十','十一','十二'], 19 | monthStatus: '选择月份', 20 | yearStatus: '选择年份', 21 | weekHeader: '周', 22 | weekStatus: '年内周次', 23 | dayNames: ['星期日','星期一','星期二','星期三','星期四','星期五','星期六'], 24 | dayNamesShort: ['周日','周一','周二','周三','周四','周五','周六'], 25 | dayNamesMin: ['日','一','二','三','四','五','六'], 26 | dayStatus: '设置 DD 为一周起始', 27 | dateStatus: '选择 m月 d日, DD', 28 | dateFormat: 'yy-mm-dd', 29 | firstDay: 1, 30 | initStatus: '请选择日期', 31 | isRTL: false}; 32 | $.datepicker.setDefaults($.datepicker.regional['zh-CN']); 33 | }); 34 | -------------------------------------------------------------------------------- /priv/docroot/log.yaws: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | out(A) -> 6 | {ssi, "inc/head_charset.inc", "", ""}. 7 | 8 | 9 | 更新日志 10 | 11 | 12 | 13 | out(A) -> 14 | {ssi, "inc/nav_head_master.inc", "%%", [{"user", "test"}]}. 15 | 16 |
17 |
18 |
19 | 20 | out(A) -> 21 | {ssi, "inc/log_update.inc", "", ""}. 22 | 23 |
24 |
25 |
26 |
27 |
28 |
29 |

系统公告

30 |
31 |
32 |

使用时有任何疑问或建议,联系邮箱:yujian1018@gmail.com

33 |
34 |
35 |
36 |

gm管理平台上线

37 |
38 |
39 |
40 |
41 |
42 |
43 |
44 | 45 | out(A) -> 46 | {ssi, "inc/foot.inc", "", ""}. 47 | 48 | 49 | 50 | 51 | -------------------------------------------------------------------------------- /priv/docroot/inc/nav_head_guest.inc: -------------------------------------------------------------------------------- 1 | 2 | 13 | 14 | 21 |
22 | 登录 23 | 注册 24 |
-------------------------------------------------------------------------------- /priv/docroot/action.yaws: -------------------------------------------------------------------------------- 1 | 2 | out(A) -> 3 | Html = case gm_manager:api("check_session", A) of 4 | {ok, UserData} -> 5 | case yaws_api:parse_query( A ) of 6 | [{"action", "logOut"}, {"arg", "logOut"}] -> 7 | gm_manager:api( "login_out", {A, "gmadmin"} ); 8 | 9 | [{"action", "gm_1_1"}, {"username", UserName}, {"uid", Uid}] -> 10 | gm_manager:api( "gm_1_1", {UserName, Uid} ); 11 | 12 | %%数据统计 data 13 | [{"action", Action}, {"select_option", SelectOption}, {"serverId", ServerName}, {"platformId", PlatformName}|QueryData] -> 14 | gm_manager:api( Action, {SelectOption, ServerName, PlatformName, QueryData} ); 15 | 16 | %[{"action", "data_2"}, {"select_option", SelectOption}, {"serverId", ServerName}, {"platformId", PlatformName}|QueryData] -> 17 | % gm_manager:api( "data_2", {SelectOption, ServerName, PlatformName, Stime, Etime} ); 18 | 19 | _ -> 20 | "{\"state\":\"201\", \"messege\":\"arg error\"}" 21 | end; 22 | "{\"state\":\"105\"}" -> 23 | case yaws_api:parse_query( A ) of 24 | [{"action", "login"}, {"username", UserName}, {"pwd", Pwd}] -> 25 | case gm_manager:api( "login", {A, UserName, Pwd} ) of 26 | "{\"state\":\"200\", \"msg\":\"ok\"}" -> {cookie, yaws_api:new_cookie_session( UserName )}; 27 | Error -> Error 28 | end; 29 | _ -> 30 | "{\"state\":\"106\", \"messege\":\"no cookie\"}" 31 | end 32 | end, 33 | case Html of 34 | {cookie, Cookie} -> [{html, "{\"state\":\"107\"}"}, yaws_api:setcookie("gmadmin",Cookie)]; 35 | {url, Redirect} -> [yaws_api:redirect(Redirect)]; 36 | _ -> {html, Html} 37 | end. 38 | -------------------------------------------------------------------------------- /src/gm_session.erl: -------------------------------------------------------------------------------- 1 | %% @author 余健 2 | %% @doc 验证session 3 | 4 | -module(gm_session). 5 | 6 | -include("../include/yaws_api.hrl"). 7 | -include( "../include/gm.hrl" ). 8 | 9 | -export( [login/1, logout/1, isSession/1] ). 10 | 11 | login( {A, UserName, Pwd} ) -> 12 | case check_cookie( {A, "gmadmin"} ) of 13 | { ok, _User, _ } -> {ok, "ok"}; 14 | _ -> 15 | case mnesia:dirty_read(user, UserName ) of 16 | [] -> {json, "{\"state\":\"104\"}"}; 17 | [UserVO] -> 18 | if 19 | UserVO#user.pwd == Pwd -> {ok, "ok"}; 20 | true -> {json, "{\"state\":\"104\"}"} 21 | end 22 | end 23 | end. 24 | 25 | logout({A, Key}) -> 26 | case check_cookie( {A, Key} ) of 27 | {ok, _Sess, Cookie} -> 28 | yaws_api:delete_cookie_session( Cookie ), 29 | {ok, "ok"}; 30 | _ -> {ok, "ok"} 31 | end. 32 | 33 | isSession( A ) -> 34 | case check_cookie( {A, "gmadmin"} ) of 35 | { ok, Session, _ } -> {"erlang term", Session}; 36 | _ -> {json, "{\"state\":\"105\"}"} 37 | end. 38 | 39 | check_cookie( {A, Key} ) -> 40 | H = A#arg.headers, 41 | case yaws_api:find_cookie_val( Key, H#headers.cookie ) of 42 | CookieVal when CookieVal /= [] -> 43 | case yaws_api:cookieval_to_opaque( CookieVal ) of 44 | {ok, Session} -> 45 | {ok, Session, CookieVal}; 46 | {error, { has_session, Session}} -> 47 | {ok, Session, CookieVal}; 48 | Else -> 49 | {error, Else} 50 | end; 51 | [] -> 52 | {error, "nocookie"} 53 | end. 54 | -------------------------------------------------------------------------------- /src/gm_data3.erl: -------------------------------------------------------------------------------- 1 | %% @author 余健 2 | %% @doc 玩法分析 3 | 4 | -module(gm_data3). 5 | 6 | -include( "../include/gm.hrl" ). 7 | -export([handle/1]). 8 | 9 | handle( {"0", ServerDB, PaltformId, []} ) -> 10 | SqlData = lv( ServerDB, PaltformId ), 11 | {ok, gm_fun:json( ["lv", "num"], SqlData )}; 12 | 13 | handle( {"1", ServerDB, PaltformId, []} ) -> 14 | SqlData = camp( ServerDB, PaltformId ), 15 | {ok, gm_fun:json( ["camp", "num"], SqlData )}; 16 | 17 | handle( _Other ) -> 18 | ?trace( ["no this handle", _Other] ). 19 | 20 | lv( ServerDB, PaltformId ) -> 21 | Sql = case PaltformId of 22 | "all" -> 23 | "SELECT lv, COUNT(*) FROM attr WHERE uid > 162 GROUP BY lv;"; 24 | PaltformId -> 25 | "SELECT lv, COUNT(*) FROM attr WHERE uid > 162 AND platformId = "++PaltformId++" GROUP BY lv;" 26 | end, 27 | case gm_pool:executeDynamic( {0, 0}, {Sql, item, ServerDB} ) of 28 | 0 -> [0,0]; 29 | Res -> Res 30 | end. 31 | 32 | camp(ServerDB, PaltformId) -> 33 | Sql = case PaltformId of 34 | "all" -> 35 | "SELECT camp, COUNT(*) FROM attr WHERE uid > 162 GROUP BY camp"; 36 | PaltformId -> 37 | "SELECT camp, COUNT(*) FROM attr WHERE uid > 162 AND platformId = "++PaltformId++" GROUP BY camp;" 38 | end, 39 | gm_pool:executeDynamic( {0, 0}, {Sql, item, ServerDB} ). 40 | 41 | %% task( ServerDB, PaltformId ) -> 42 | %% Sql = case PaltformId of 43 | %% "all" -> 44 | %% "SELECT lv, COUNT(*) FROM attr WHERE uid > 162 GROUP BY lv;"; 45 | %% PaltformId -> 46 | %% "SELECT lv, COUNT(*) FROM attr WHERE uid > 162 AND platformId = "++PaltformId++" GROUP BY lv;" 47 | %% end, 48 | %% gm_pool:executeDynamic( {0, 0}, {Sql, item, ServerDB} ). -------------------------------------------------------------------------------- /src/gm.erl: -------------------------------------------------------------------------------- 1 | 2 | -module( gm ). 3 | 4 | -include( "../include/gm.hrl" ). 5 | 6 | -export([start/0, load/0, get_path/1, init/0]). 7 | 8 | init() -> 9 | c:cd(get_path( "../ebin" )), 10 | mnesia:stop(), 11 | mnesia:delete_schema([node()]), 12 | mnesia:create_schema([node()]), 13 | mnesia:start(), 14 | mnesia:create_table( user, [{disc_copies, [node()]}, {attributes, record_info(fields, user)}] ), 15 | mnesia:dirty_write(user, {user, "123", "123", {101,102,103,104}}). 16 | 17 | %%初始化函数 18 | start() -> 19 | c:cd(get_path( "../ebin" )), 20 | mnesia:start(), 21 | emysql:start(), 22 | case gm_fun:read_config() of 23 | {error, _Other} -> ?trace( ["read game.config error"] ); 24 | {ok, [[ServerList, GameMsg, _PlatMsg]]} -> 25 | DBList = lists:keydelete("all", 1, GameMsg)++[ServerList], 26 | lists:map( 27 | fun({Pool,_Descript,DB, UserName, Pwd, IP, Port}) -> 28 | gm_pool:start_link({Pool, UserName, Pwd, IP, Port, DB}) 29 | end, 30 | DBList ) 31 | end. 32 | 33 | %%加载代码 34 | load() -> 35 | Path = get_path("../ebin/" ), 36 | { ok, List } = file:list_dir( Path ), 37 | List_fit = [ I||I <- List, lists:suffix( ".beam", I ) ], 38 | [ load( I )||I <- List_fit ]. 39 | 40 | load( StringTemp ) -> 41 | case string:tokens( StringTemp, "." ) of 42 | [ Temp, _ ] -> 43 | c:l( list_to_atom( Temp ) ); 44 | _Other -> 45 | [] 46 | end. 47 | 48 | get_path( Str )-> 49 | Root = filename:split( code:which( ?MODULE ) ), 50 | join( Root, Str ). 51 | join( List, "../"++Str )-> join( lists:sublist( List, length( List )-1 ), Str ); 52 | join( List, Str )-> string:join( lists:sublist( List, length( List )-1 )++[Str], "/" )--"/". -------------------------------------------------------------------------------- /priv/docroot/data/index.yaws: -------------------------------------------------------------------------------- 1 | 2 | out(A) -> 3 | case gm_manager:api("check_session", A) of 4 | {ok, UserData} -> [{bindings, [{"UserData", UserData}]}]; 5 | "{\"state\":\"105\"}" -> {redirect, "/userLogin/userLogin.yaws"} 6 | end. 7 | 8 | 9 | 10 | 11 | 12 | out(A) -> 13 | {ssi, "../inc/head_charset.inc", "", ""}. 14 | 15 | 数据查询 16 | 17 | 18 | 19 | out(A) -> 20 | {ServerId, PlatformId} = case gm_fun:read_config() of 21 | {error, _Other} -> {"", ""}; 22 | {ok, [[_ServerList, GameMsg, PlatMsg]]} -> 23 | Fun = fun(Arg) -> 24 | {Id, Name} = case Arg of 25 | {Id1, Name1,_A1,_A2,_A3,_A4,_A5} -> {unicode:characters_to_binary(Id1), unicode:characters_to_binary(Name1)}; 26 | {Id1, Name1} -> {unicode:characters_to_binary(Id1), unicode:characters_to_binary(Name1)} 27 | end, 28 | <<""/utf8,Id/binary,"服("/utf8,Name/binary,")"/utf8>> 29 | end, 30 | {lists:map(Fun, GameMsg),lists:map(Fun, PlatMsg)} 31 | end, 32 | {ssi, "../inc/nav_head_master.inc", "%%", [{"serverId", ServerId}, {"platformId", PlatformId}]}. 33 | 34 | 35 |
36 |

数据查询

37 | 38 | out(A) -> 39 | {ssi, "../inc/side_data.inc", "%%", [{"user", "test"}]}. 40 | 41 |
42 | 43 |
44 |
45 |
46 | 47 | 48 | out(A) -> 49 | {ssi, "../inc/foot.inc", "", ""}. 50 | 51 | 52 | 53 | 54 | -------------------------------------------------------------------------------- /priv/docroot/userLogin/index.yaws: -------------------------------------------------------------------------------- 1 | 2 | out(A) -> 3 | case gm_manager:api("check_session", A) of 4 | {ok, UserData} -> [{bindings, [{"UserData", UserData}]}]; 5 | "{\"state\":\"105\"}" -> {redirect, "/userLogin/userLogin.yaws"} 6 | end. 7 | 8 | 9 | 10 | 11 | 12 | out(A) -> 13 | {ssi, "../inc/head_charset.inc", "", ""}. 14 | 15 | 设置 16 | 17 | 18 | 19 | out(A) -> 20 | {ServerId, PlatformId} = case gm_fun:read_config() of 21 | {error, _Other} -> {"", ""}; 22 | {ok, [[_ServerList, GameMsg, PlatMsg]]} -> 23 | Fun = fun(Arg) -> 24 | {Id, Name} = case Arg of 25 | {Id1, Name1,_A1,_A2,_A3,_A4,_A5} -> {unicode:characters_to_binary(Id1), unicode:characters_to_binary(Name1)}; 26 | {Id1, Name1} -> {unicode:characters_to_binary(Id1), unicode:characters_to_binary(Name1)} 27 | end, 28 | <<""/utf8,Id/binary,"服("/utf8,Name/binary,")"/utf8>> 29 | end, 30 | {lists:map(Fun, GameMsg), lists:map(Fun, PlatMsg)} 31 | end, 32 | {ssi, "../inc/nav_head_master.inc", "%%", [{"serverId", ServerId}, {"platformId", PlatformId}]}. 33 | 34 | 35 |
36 |

数据查询

37 | 38 | out(A) -> 39 | {ssi, "../inc/side_my.inc", "%%", [{"user", "test"}]}. 40 | 41 |
42 | 43 |
44 |
45 |
46 | 47 | 48 | out(A) -> 49 | {ssi, "../inc/foot.inc", "", ""}. 50 | 51 | 52 | 53 | 54 | -------------------------------------------------------------------------------- /priv/docroot/gm/index.yaws: -------------------------------------------------------------------------------- 1 | 2 | out(A) -> 3 | case gm_manager:api("check_session", A) of 4 | {ok, UserData} -> [{bindings, [{"UserData", UserData}]}]; 5 | "{\"state\":\"105\"}" -> {redirect, "/userLogin/userLogin.yaws"} 6 | end. 7 | 8 | 9 | 10 | 11 | 12 | out(A) -> 13 | {ssi, "../inc/head_charset.inc", "", ""}. 14 | 15 | GM工具 16 | 17 | 18 | 19 | out(A) -> 20 | {ServerId, PlatformId} = case gm_fun:read_config() of 21 | {error, _Other} -> {"", ""}; 22 | {ok, [[_ServerList, GameMsg, PlatMsg]]} -> 23 | Fun = fun(Arg) -> 24 | {Id, Name} = case Arg of 25 | {Id1, Name1,_A1,_A2,_A3,_A4,_A5} -> {unicode:characters_to_binary(Id1), unicode:characters_to_binary(Name1)}; 26 | {Id1, Name1} -> {unicode:characters_to_binary(Id1), unicode:characters_to_binary(Name1)} 27 | end, 28 | <<""/utf8,Id/binary,"服("/utf8,Name/binary,")"/utf8>> 29 | end, 30 | {lists:map(Fun, GameMsg),lists:map(Fun, PlatMsg)} 31 | end, 32 | {ssi, "../inc/nav_head_master.inc", "%%", [{"serverId", ServerId}, {"platformId", PlatformId}]}. 33 | 34 | 35 |
36 |

GM工具   GM工具由AIR开发更快速,体验更好(因为数据缓存)

37 | 38 | out(A) -> 39 | {ssi, "../inc/side_gm.inc", "%%", [{"user", "test"}]}. 40 | 41 |
42 | 43 |
44 |
45 |
46 | 47 | 48 | out(A) -> 49 | {ssi, "../inc/foot.inc", "", ""}. 50 | 51 | 52 | 53 | 54 | -------------------------------------------------------------------------------- /src/gm_data2.erl: -------------------------------------------------------------------------------- 1 | %% @author 余健 2 | %% @doc 收入统计 3 | 4 | -module(gm_data2). 5 | 6 | -include( "../include/gm.hrl" ). 7 | -export([handle/1]). 8 | 9 | handle( {"0", ServerDB, PaltformId, [{"stime", StimeStr}, {"etime", EtimeStr}]} ) -> 10 | SqlData = pay_data( ServerDB, PaltformId, gm_fun:all_to_integer(StimeStr), gm_fun:all_to_integer(EtimeStr) ), 11 | {ok, gm_fun:json( ["dayTime", "all", "allnum", "allrole", "reg", "regnum", "regrole"], SqlData )}; 12 | 13 | handle( _Other ) -> 14 | ?trace( ["no this handle", _Other] ). 15 | 16 | pay_data( _ServerDB, PaltformId, Stime, Etime ) -> 17 | TimeList = gm_fun:time_to_list(Stime, Etime, day), 18 | Sql1 = 19 | case PaltformId of 20 | "all" -> 21 | "SELECT SUM(orderMoney), COUNT(*), COUNT(DISTINCT uid) FROM `"++?ServerLIST++"`.rmb_info WHERE `time`>=#DayStime# AND `time` <#DayEtime#;"; 22 | PaltformId -> 23 | "SELECT SUM(orderMoney), COUNT(*), COUNT(DISTINCT uid) FROM `"++?ServerLIST++"`.rmb_info WHERE platformId = "++PaltformId++" AND `time`>=#DayStime# AND `time` <#DayEtime#;" 24 | end, 25 | AllList = gm_pool:executeDynamic(TimeList, {Sql1, item, "server_list"}), 26 | Sql2 = 27 | case PaltformId of 28 | "all" -> "SELECT SUM(b.orderMoney), COUNT(*), COUNT(DISTINCT b.uid) FROM `user` AS a, rmb_info AS b WHERE a.createTime >=#DayStime# AND a.createTime < #DayEtime# AND a.uid = b.uid AND b.`time`>=#DayStime# AND b.`time` <#DayEtime#;"; 29 | PaltformId -> "SELECT SUM(b.orderMoney), COUNT(*), COUNT(DISTINCT b.uid) FROM `user` AS a, rmb_info AS b WHERE a.createTime >=#DayStime# AND a.createTime < #DayEtime# AND a.uid = b.uid AND b.`time`>=#DayStime# AND b.`time` <#DayEtime#;" 30 | end, 31 | RegList = gm_pool:executeDynamic(TimeList, {Sql2, item, "server_list"}), 32 | Fun = fun({{Stime1, 0}, {Stime1, 0}}) ->[Stime1, 0,0,0,0,0,0]; 33 | ({{Stime1, 0}, {Stime1, [Reg, RegNum, RegRole]}}) -> [Stime1, 0,0,0,Reg, RegNum, RegRole]; 34 | ({{Stime1, [All, AllNum, AllRole]}, {Stime1, 0}}) -> [Stime1, All, AllNum, AllRole, 0, 0, 0]; 35 | ({{Stime1, [All, AllNum, AllRole]}, {Stime1, [Reg, RegNum, RegRole]}}) -> [Stime1, All, AllNum, AllRole, Reg, RegNum, RegRole] 36 | end, 37 | lists:map(Fun, lists:zip(AllList, RegList)). -------------------------------------------------------------------------------- /src/gm_manager.erl: -------------------------------------------------------------------------------- 1 | %% @author 余健 2 | %% @doc 产生数据发回给页面 3 | 4 | -module(gm_manager). 5 | 6 | -include( "../include/gm.hrl" ). 7 | 8 | -export([api/2]). 9 | 10 | -define( DispatchEvent, 11 | [{"login", gm_session, login}, {"login_out", gm_session, logout}, {"check_session", gm_session, isSession}, 12 | {"data_1", gm_data1}, {"data_2", gm_data2}, {"data_3", gm_data3}, {"data_4", gm_data4}] ). 13 | 14 | api( Event, Args ) -> 15 | case lists:keyfind( Event, 1, ?DispatchEvent ) of 16 | {Event, Module, Fun} -> 17 | try Module:Fun( Args ) of 18 | {ok, Json} -> "{\"state\":\"200\", \"msg\":\""++Json++"\"}"; 19 | {error, Reason} -> "{\"state\":\"103\", \"msg\":\""++Reason++"\"}"; 20 | {json, Json} ->Json; 21 | {"erlang term", Data} -> {ok, Data} 22 | catch 23 | Catch:Why -> 24 | ?trace( [Catch, Why] ), 25 | "{\"state\":\"101\", \"msg\":\"code crash\"}" 26 | end; 27 | {Event, Module} -> 28 | case check( Args ) of 29 | {error, Error} -> 30 | Error; 31 | {ok, NewArgs} -> 32 | try Module:handle( NewArgs ) of 33 | {ok, Json} -> rfc4627:encode( {obj, [{"state", 200}, {"msg", Json}]} ); 34 | {error, Reason} -> "{\"state\":\"103\", \"msg\":\""++Reason++"\"}" 35 | catch 36 | Catch:Why -> 37 | ?trace( [Catch, Why] ), 38 | "{\"state\":\"101\", \"msg\":\"code crash\"}" 39 | end 40 | end; 41 | false -> 42 | ?trace( Event ), 43 | "{\"state\":\"202\", \"msg\":\"no this event\"}" 44 | end. 45 | 46 | check( Args ) -> 47 | case gm_fun:read_config() of 48 | {error, Other} -> {error, Other}; 49 | {ok, [[_ServerList, GameMsg, PlatMsg]]} -> 50 | ServerId = element( 2, Args ), 51 | PlatformId = element( 3, Args ), 52 | case lists:keyfind(ServerId, 1, GameMsg) of 53 | false -> 54 | ?trace( "no this game_server" ), 55 | {error, "{\"state\":\"202\", \"msg\":\"no this game_server_id\"}"}; 56 | {ServerId, _Name, _A1, _A2, _A3, _A4, _A5} -> 57 | case lists:keyfind(PlatformId, 1, PlatMsg) of 58 | false -> 59 | ?trace( "no this platformId" ), 60 | {error, "{\"state\":\"202\", \"msg\":\"no this PlatformId\"}"}; 61 | {_PlatformId, _Des} -> 62 | {ok, Args} 63 | end 64 | end 65 | end. 66 | -------------------------------------------------------------------------------- /src/gm_data4.erl: -------------------------------------------------------------------------------- 1 | %% @author 余健 2 | %% @doc 数据查询 -》 游戏数据 3 | 4 | -module(gm_data4). 5 | -include( "../include/gm.hrl" ). 6 | -export([handle/1]). 7 | 8 | 9 | handle( {"0", ServerDB, PlatformId, []} ) -> 10 | SqlData = currency( ServerDB, PlatformId ), 11 | {ok, gm_fun:json( ["currency_1", "currency_2", "currency_3", "currency_4"], SqlData )}; 12 | 13 | 14 | handle( {"1", ServerDB, PlatformId, [{"option", Economy_option}, {"stime", StimeStr}, {"etime", EtimeStr}]} ) -> 15 | Stime = gm_fun:all_to_integer(StimeStr), 16 | Etime = gm_fun:all_to_integer(EtimeStr), 17 | SqlData = economy( ServerDB, PlatformId, Economy_option, Stime, Etime ), 18 | {ok, gm_fun:json( ["id", "num"], SqlData )}; 19 | 20 | handle( {"2", ServerDB, PlatformId, [{"prop_option", PropOption}]} ) -> 21 | SqlData = propOption( ServerDB, PlatformId, PropOption ), 22 | {ok, gm_fun:json( ["id", "num"], SqlData )}; 23 | 24 | handle( _Other ) -> 25 | ?trace( ["no this handle", _Other] ). 26 | 27 | currency( ServerDB, PlatformId ) -> 28 | Sql = case PlatformId of 29 | "all" -> 30 | "SELECT SUM( rmb ), SUM( learn ), SUM( gold ), SUM( drug ) FROM attr WHERE uid>= 163;"; 31 | PlatformName -> 32 | "SELECT SUM( rmb ), SUM( learn ), SUM( gold ), SUM( drug ) FROM attr WHERE uid>= 163 AND platformId = "++PlatformName++";" 33 | end, 34 | gm_pool:executeDynamic( {0, 0}, {Sql, item, ServerDB} ). 35 | 36 | economy( ServerDB, _PlatformId, Economy_option, Stime, Etime ) -> 37 | Sql = case Economy_option of 38 | "0" -> "SELECT costId, SUM(num) FROM gold_cost WHERE `time` >=#DayStime# AND `time`<#DayEtime# GROUP BY costId"; 39 | "1" -> "SELECT costId, SUM(num) FROM rmb_cost WHERE `time` >=#DayStime# AND `time`<#DayEtime# GROUP BY costId"; 40 | "2" -> "SELECT costId, SUM(num) FROM learn_cost WHERE `time` >=#DayStime# AND `time`<#DayEtime# GROUP BY costId" 41 | end, 42 | gm_pool:executeDynamic( {Stime, Etime+86400}, {Sql, item, ServerDB} ). 43 | 44 | propOption( ServerDB, _PlatformId, PropOption ) -> 45 | Sql =case PropOption of 46 | "0" -> "SELECT tableId, count(num) FROM item GROUP BY tableId"; 47 | "1" -> "SELECT tableId, count(uid) FROM skill GROUP BY tableId"; 48 | "2" -> "SELECT mateId, count(mateId) FROM mate_attr GROUP BY mateId" 49 | end, 50 | gm_pool:executeDynamic( {0, 0}, {Sql, item, ServerDB} ). -------------------------------------------------------------------------------- /src/gm_pool.erl: -------------------------------------------------------------------------------- 1 | -module(gm_pool). 2 | 3 | -export([start_link/1, executeDynamic/2, executeStatic/1]). 4 | 5 | 6 | start_link({Pool, SUser, SPassword, SHost, SPort, SDatabase}) -> 7 | %% 建立数据库连接池 8 | emysql:add_pool(Pool, 1, SUser, SPassword, SHost, SPort, SDatabase, utf8), 9 | ok. 10 | 11 | %% 对静态表进程操作, 12 | %% 查询操作, 返回查询结果 13 | executeStatic(Value) -> 14 | Sql = iolist_to_binary(Value), 15 | Result = emysql:execute(static_pool, Sql), 16 | case Result of 17 | {result_packet,_,_,Data,_} -> 18 | Data 19 | end. 20 | 21 | 22 | %%============================================ 23 | %%% @doc 共用函数,查询从Stime到Etime之间的数据 24 | %%============================================ 25 | executeDynamic( {Stime, Etime}, {Sql, Action, ServerDB} ) -> 26 | ReSql1 = re:replace(Sql, "#DayStime#", integer_to_list(Stime), [{return, list}]), 27 | ReSql2 = re:replace(ReSql1, "#DayEtime#", integer_to_list(Etime), [{return, list}]), 28 | ReSql3 = re:replace(ReSql2, "#DayStime#", integer_to_list(Stime), [{return, list}]), 29 | ReSql4 = re:replace(ReSql3, "#DayEtime#", integer_to_list(Etime), [{return, list}]), 30 | case execute(ServerDB, ReSql4) of 31 | ok -> 0; %sql报错 32 | [[undefined]] -> 0;% 计算为空 33 | [] -> 0;%查询结果为空 34 | SqlRes -> %正常情况 35 | case Action of 36 | count -> [[Data]] = SqlRes, Data; 37 | item -> 38 | case SqlRes of 39 | [Data] -> [case I of undefined -> 0; _ -> I end||I<- Data]; 40 | SqlRes -> SqlRes 41 | end; 42 | group_by -> SqlRes 43 | end 44 | end; 45 | 46 | executeDynamic( {Stime, Etime, TimeUnit}, {Sql, Action, ServerDB} ) -> 47 | TimeList = gm_fun:time_to_list(Stime, Etime, TimeUnit), 48 | executeDynamic( TimeList, {Sql, Action, ServerDB} ); 49 | 50 | executeDynamic( TimeList, {Sql, Action, ServerDB} ) -> 51 | lists:map( fun( {Stime, Etime} ) -> {Stime, executeDynamic( {Stime, Etime}, {Sql, Action, ServerDB} )} end, TimeList ). 52 | 53 | 54 | execute( DBName, Value ) -> 55 | Sql = iolist_to_binary(Value), 56 | try emysql:execute(DBName, Sql, 10000) of 57 | {result_packet,_,_,Data,_} -> 58 | Data; 59 | {ok_packet,_,_,Data,_,_,_} -> 60 | Data; 61 | [{result_packet, _,_,Data,_},_] -> 62 | Data; 63 | Error when is_list(Error) -> 64 | ok; 65 | _Error -> 66 | ok 67 | catch 68 | _E1:_E2 -> ok 69 | end. 70 | -------------------------------------------------------------------------------- /priv/docroot/index.yaws: -------------------------------------------------------------------------------- 1 | 2 | out(A) -> 3 | case gm_manager:api("check_session", A) of 4 | {ok, UserData} -> 5 | [{bindings, [{"UserData", UserData}]}]; 6 | "{\"state\":\"105\"}" -> 7 | {redirect, "/userLogin/userLogin.yaws"} 8 | end. 9 | 10 | 11 | 12 | 13 | 14 | out(A) -> 15 | {ssi, "inc/head_charset.inc", "", ""}. 16 | 17 | 18 | 首页 19 | 20 | 21 | 22 | out(A) -> 23 | {ServerId, PlatformId} = case gm_fun:read_config() of 24 | {error, _Other} -> {"", ""}; 25 | {ok, [[_ServerList, GameMsg, PlatMsg]]} -> 26 | Fun = fun(Arg) -> 27 | {Id, Name} = case Arg of 28 | {Id1, Name1,_A1,_A2,_A3,_A4,_A5} -> {unicode:characters_to_binary(Id1), unicode:characters_to_binary(Name1)}; 29 | {Id1, Name1} -> {unicode:characters_to_binary(Id1), unicode:characters_to_binary(Name1)} 30 | end, 31 | <<""/utf8,Id/binary,"服("/utf8,Name/binary,")"/utf8>> 32 | end, 33 | {lists:map(Fun, GameMsg), lists:map(Fun, PlatMsg)} 34 | end, 35 | {ssi, "inc/nav_head_master.inc", "%%", [{"serverId", ServerId}, {"platformId", PlatformId}]}. 36 | 37 | 38 |
39 |
40 |

欢迎您,超级管理员

41 |

每日数据统计

42 |
43 |
44 |
45 |
46 |
47 |
48 |
49 |
50 |
51 |

系统公告

52 |
53 |
54 |

使用时有任何疑问或建议,联系邮箱:yujian1018@gmail.com

55 |
56 |
57 |
58 |

gm管理平台上线

59 |
60 |
61 |
62 |
63 |
64 |
65 |
66 | 67 | out(A) -> 68 | {ssi, "inc/foot.inc", "", ""}. 69 | 70 | 71 | 72 | 73 | -------------------------------------------------------------------------------- /priv/docroot/gm/gm_6.yaws: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | out(A) -> 6 | {ssi, "../inc/head_charset.inc", "", ""}. 7 | 8 | 9 | 10 | 11 | 16 | 管理平台 17 | 18 |
19 | 27 |

全服公告列表导出CVX

28 |
29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 39 | 40 | 41 |
ID内容发布时间
50000 38 |
倚×天屠龙剑倚×天屠龙剑倚×天屠龙剑倚×天屠龙剑倚×天屠龙剑倚×天屠龙剑倚×天屠龙剑倚×天屠龙剑倚×天屠龙剑倚×天屠龙剑倚×天屠龙剑倚×天屠龙剑倚×天屠龙剑倚×天屠龙剑倚×天屠龙剑倚×天屠龙剑倚×天屠龙剑倚×天屠龙剑倚×天屠龙剑倚×天屠龙剑倚×天屠龙剑倚×天屠龙剑倚×天屠龙剑倚×天屠龙剑倚×天屠龙剑倚×天屠龙剑倚×天屠龙剑倚×天屠龙剑倚×天屠龙剑倚×天屠龙剑倚×天屠龙剑倚×天屠龙剑倚×天屠龙剑倚×天屠龙剑倚×天屠龙剑倚×天屠龙剑倚×天屠龙剑倚×天屠龙剑倚×天屠龙剑倚×天屠龙剑倚×天屠龙剑倚×天屠龙剑倚×天屠龙剑倚×天屠龙剑倚×天屠龙剑倚×天屠龙剑倚×天屠龙剑倚×天屠龙剑倚×天屠龙剑倚×天屠龙剑倚×天屠龙剑倚×天屠龙剑倚×天屠龙剑倚×天屠龙剑倚×天屠龙剑倚×天屠龙剑倚×天屠龙剑倚×天屠龙剑倚×天屠龙剑倚×天屠龙剑倚×天屠龙剑倚×天屠龙剑倚×天屠龙剑倚×天屠龙剑倚×天屠龙剑倚×天屠龙剑倚×天屠龙剑倚×天屠龙剑倚×天屠龙剑倚×天屠龙剑倚×天屠龙剑倚×天屠龙剑倚×天屠龙剑倚×天屠龙剑倚×天屠龙剑倚×天屠龙剑倚×天屠龙剑倚×天屠龙剑倚×天屠龙剑倚×天屠龙剑倚×天屠龙剑倚×天屠龙剑倚×天屠龙剑倚×天屠龙剑倚×天屠龙剑倚×天屠龙剑倚×天屠龙剑倚×天屠龙剑倚×天屠龙剑倚×天屠龙剑倚×天屠龙剑倚×天屠龙剑倚×天屠龙剑倚×天屠龙剑倚×天屠龙剑倚×天屠龙剑倚×天屠龙剑倚×天屠龙剑倚×天屠龙剑倚×天屠龙剑
2014-09-30 15:15:15
42 |
43 |
上一页下一页
44 |
45 | 46 | 47 | 48 | -------------------------------------------------------------------------------- /priv/docroot/lib/flot/jquery.flot.categories.min.js: -------------------------------------------------------------------------------- 1 | /* Javascript plotting library for jQuery, version 0.8.3. 2 | 3 | Copyright (c) 2007-2014 IOLA and Ole Laursen. 4 | Licensed under the MIT license. 5 | 6 | */ 7 | (function($){var options={xaxis:{categories:null},yaxis:{categories:null}};function processRawData(plot,series,data,datapoints){var xCategories=series.xaxis.options.mode=="categories",yCategories=series.yaxis.options.mode=="categories";if(!(xCategories||yCategories))return;var format=datapoints.format;if(!format){var s=series;format=[];format.push({x:true,number:true,required:true});format.push({y:true,number:true,required:true});if(s.bars.show||s.lines.show&&s.lines.fill){var autoscale=!!(s.bars.show&&s.bars.zero||s.lines.show&&s.lines.zero);format.push({y:true,number:true,required:false,defaultValue:0,autoscale:autoscale});if(s.bars.horizontal){delete format[format.length-1].y;format[format.length-1].x=true}}datapoints.format=format}for(var m=0;mindex)index=categories[v];return index+1}function categoriesTickGenerator(axis){var res=[];for(var label in axis.categories){var v=axis.categories[label];if(v>=axis.min&&v<=axis.max)res.push([v,label])}res.sort(function(a,b){return a[0]-b[0]});return res}function setupCategoriesForAxis(series,axis,datapoints){if(series[axis].options.mode!="categories")return;if(!series[axis].categories){var c={},o=series[axis].options.categories||{};if($.isArray(o)){for(var i=0;i 2 | 3 | 4 | 5 | out(A) -> 6 | {ssi, "../inc/head_charset.inc", "", ""}. 7 | 8 | 9 | 10 | 11 | 17 | 管理平台 18 | 19 |
20 |
    21 |
  • 22 | 游戏角色名 23 | UID 24 |
  • 25 |
  • 26 | 开始时间 27 | 结束时间 28 |
  • 29 |
  • 30 |
  • 31 | 充值总额 32 | 当前元宝余额 33 |
  • 34 |
35 |

充值记录列表导出CVX

36 |
37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 |
payIdplatformId充值金额充值状态充值时间
b949733e-7dd0-9267-f85b-6186ab89bb91100199999充值成功2014-09-30 15:15:15
53 |
54 |
上一页下一页
55 |
56 | 57 | 58 | 59 | -------------------------------------------------------------------------------- /priv/docroot/gm/gm_9.yaws: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | out(A) -> 6 | {ssi, "../inc/head_charset.inc", "", ""}. 7 | 8 | 9 | 10 | 11 | 17 | 管理平台 18 | 19 |
20 |
    21 |
  • 22 | 开始时间 23 | 结束时间 24 |
  • 25 |
  • 26 |
27 |

bug反馈列表导出CVX

28 |
29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 |
ID时间服务器Uid角色名称bug状态bug描述
12014-09-30 15:15:15荣耀至尊123荣耀至尊未处理请问下首冲的邀月公主在哪,为什么没有
51 |
52 |
上一页下一页
53 | 54 |
    55 |
  • BugID 56 |
  • 描述
  • 57 |
  • 58 |
59 |
60 | 61 | 62 | -------------------------------------------------------------------------------- /priv/docroot/gm/gm_2.yaws: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | out(A) -> 6 | {ssi, "../inc/head_charset.inc", "", ""}. 7 | 8 | 9 | 10 | 11 | 17 | 管理平台 18 | 19 |
20 |
    21 |
  • 22 | 游戏角色名 23 | UID 24 | 消耗道具 25 | 29 |
  • 30 |
  • 31 | 开始时间 32 | 结束时间 33 |
  • 34 |
  • 35 |
36 |

道具消耗列表导出CVX

37 |
38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 |
ID角色名称内容道具名称道具数量道具等级操作时间
50000倚×天屠龙剑123弟子习武卷999992014-09-30 15:15:15
58 |
59 |
上一页下一页
60 |
61 | 62 | 63 | -------------------------------------------------------------------------------- /priv/docroot/gm/gm_10.yaws: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | out(A) -> 6 | {ssi, "../inc/head_charset.inc", "", ""}. 7 | 8 | 9 | 管理平台 10 | 11 |
12 |
    13 |
  • 14 | 角色名 15 | Uid 16 | 17 | 21 | 22 |
  • 23 |
  • 24 |
25 |

封禁查询列表导出CVX

26 |
27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 |
Uid角色名到期时间类型门派等级VIP
1荣耀至尊2014-09-30 15:15:15停封武当158
49 |
50 |
上一页下一页
51 | 52 |
    53 |
  • 54 | 角色 55 | Uid 56 |
  • 57 |
  • 封号状态
  • 58 |
  • 禁言状态
  • 59 |
60 |
61 | 62 | 63 | -------------------------------------------------------------------------------- /priv/docroot/gm/gm_4.yaws: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | out(A) -> 6 | {ssi, "../inc/head_charset.inc", "", ""}. 7 | 8 | 9 | 10 | 11 | 17 | 管理平台 18 | 19 |
20 |
    21 |
  • 22 | 游戏角色名 23 | UID 24 |
  • 25 |
  • 26 | 开始时间 27 | 结束时间 28 |
  • 29 |
  • 30 |
  • 31 | 元宝总收入 32 | 元宝总消耗 33 | 元宝余额 34 |
  • 35 |
36 |

元宝消耗列表导出CVX

37 |
38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 |
消费事项消费类型消费金额元宝剩余消费时间
购买体力开支10999992014-09-30 15:15:15
0收入100999992014-09-30 15:15:15
61 |
62 |
上一页下一页
63 |
64 | 65 | 66 | -------------------------------------------------------------------------------- /priv/docroot/gm/gm_8.yaws: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | out(A) -> 6 | {ssi, "../inc/head_charset.inc", "", ""}. 7 | 8 | 9 | 10 | 管理平台 11 | 12 |
13 |
    14 |
  • 15 | 总在线量 16 | 开服数量 17 |
  • 18 |
19 |

所有游戏服导出CVX

20 |
21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 |
ID游戏服名称在线人数状态描述是否默认最大人数ipport
1荣耀至尊123爆满6区,火爆新服,恭候入驻1500192.168.0.2198083
47 |
48 |
上一页下一页
49 | 50 |
    51 |
  • id 52 | 名称 53 | 状态 54 | 60 | 默认 61 | 65 | 最大人数 66 |
  • 描述
  • 67 |
  • 68 |
  • 69 |
70 |
71 | 72 | 73 | -------------------------------------------------------------------------------- /priv/docroot/gm/gm_7.yaws: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | out(A) -> 6 | {ssi, "../inc/head_charset.inc", "", ""}. 7 | 8 | 9 | 10 | 11 | 16 | 管理平台 17 | 18 |
19 |
    20 |
  • 公告内容

    100字以内

  • 21 |
  • 次数 22 |
  • 时间间隔分钟
  • 23 |
  • 开始时间
  • 24 |
  • 25 | 26 | 27 | 28 | 29 |
    30 |
  • 31 |
32 |

游戏公告列表导出CVX

33 |
34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 47 | 48 | 49 | 50 | 51 | 52 |
ID内容次数时间间隔状态开始时间
50000 46 |
倚×天屠龙剑倚×天屠龙剑倚×天屠龙剑倚×天屠龙剑倚×天屠龙剑倚×天屠龙剑倚×天屠龙剑倚×天屠龙剑倚×天屠龙剑倚×天屠龙剑倚×天屠龙剑倚×天屠龙剑倚×天屠龙剑倚×天屠龙剑倚×天屠龙剑倚×天屠龙剑倚×天屠龙剑倚×天屠龙剑倚×天屠龙剑倚×天屠龙剑倚×天屠龙剑倚×天屠龙剑倚×天屠龙剑倚×天屠龙剑倚×天屠龙剑倚×天屠龙剑倚×天屠龙剑倚×天屠龙剑倚×天屠龙剑倚×天屠龙剑倚×天屠龙剑倚×天屠龙剑倚×天屠龙剑倚×天屠龙剑倚×天屠龙剑倚×天屠龙剑倚×天屠龙剑倚×天屠龙剑倚×天屠龙剑倚×天屠龙剑倚×天屠龙剑倚×天屠龙剑倚×天屠龙剑倚×天屠龙剑倚×天屠龙剑倚×天屠龙剑倚×天屠龙剑倚×天屠龙剑倚×天屠龙剑倚×天屠龙剑倚×天屠龙剑倚×天屠龙剑倚×天屠龙剑倚×天屠龙剑倚×天屠龙剑倚×天屠龙剑倚×天屠龙剑倚×天屠龙剑倚×天屠龙剑倚×天屠龙剑倚×天屠龙剑倚×天屠龙剑倚×天屠龙剑倚×天屠龙剑倚×天屠龙剑倚×天屠龙剑倚×天屠龙剑倚×天屠龙剑倚×天屠龙剑倚×天屠龙剑倚×天屠龙剑倚×天屠龙剑倚×天屠龙剑倚×天屠龙剑倚×天屠龙剑倚×天屠龙剑倚×天屠龙剑倚×天屠龙剑倚×天屠龙剑倚×天屠龙剑倚×天屠龙剑倚×天屠龙剑倚×天屠龙剑倚×天屠龙剑倚×天屠龙剑倚×天屠龙剑倚×天屠龙剑倚×天屠龙剑倚×天屠龙剑倚×天屠龙剑倚×天屠龙剑倚×天屠龙剑倚×天屠龙剑倚×天屠龙剑倚×天屠龙剑倚×天屠龙剑倚×天屠龙剑倚×天屠龙剑倚×天屠龙剑倚×天屠龙剑
1235分钟本服务器公告2014-09-30 15:15:15
53 |
54 |
上一页下一页
55 |
56 | 57 | 58 | -------------------------------------------------------------------------------- /priv/docroot/gm/gm_11.yaws: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | out(A) -> 6 | {ssi, "../inc/head_charset.inc", "", ""}. 7 | 8 | 9 | 10 | 11 | 17 | 管理平台 18 | 19 |
20 |

推送列表导出CVX

21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 |
ID标题内容类型状态url时间段具体时间
1世界boss开启啦,请大家快来虐boss世界boss开启啦,请大家快来虐boss世界boss开启啦,请大家快来虐boss世界boss开启啦,请大家快来虐boss世界boss开启啦,请大家快来虐boss世界boss开启啦,请大家快来虐boss 世界boss未运行http://www.baidu.com2014-09-30 15:15:15 - 2014-09-30 15:15:158:00
45 |
46 |
上一页下一页
47 | 48 |
    49 |
  • 标题
  • 50 |
  • 内容
  • 51 |
  • 类型 52 | 59 |
  • 60 |
  • URL
  • 61 |
  • 开始时间 62 | 结束时间 63 | 具体时间
  • 64 |
  • 65 |
66 |
67 | 68 | 69 | -------------------------------------------------------------------------------- /src/gm_fun.erl: -------------------------------------------------------------------------------- 1 | %% @author 余健 2 | %% @doc pub function 3 | 4 | -module(gm_fun). 5 | -include( "../include/basic_data.hrl" ). 6 | -include( "../include/table_record.hrl" ). 7 | -export( [all_to_binary/1, all_to_integer/1] ). 8 | -export( [random/2, json/2, time_to_list/3] ). 9 | -export( [read_config/0] ). 10 | 11 | -define( AllTOBinary(All), all_to_binary(All) ). 12 | 13 | %%============================================ 14 | %% @doc 把日期范围转换成从开始时间到结束时间的每一天||每一周||每一月的列表 15 | %% time_to_daylist( 2014-05-22的时间戳, 2014-05-25的时间戳 ) -> [{2014-05-22 0:00:00的时间戳, 2014-05-22 23:59:59的时间戳}, ......] 16 | %% @spec time_to_daylist( 1400054072, 1400148111 ) -> [{1400054072,1400140472},{1400226872,1400148111}] 17 | %%============================================ 18 | time_to_list( Stime, Etime, TimeUnit ) -> 19 | case TimeUnit of 20 | day -> time_to_daylist( Stime, Etime ); 21 | week -> time_to_weeklist( Stime, Etime ); 22 | month -> time_to_monthlist( Stime, Etime ) 23 | end. 24 | 25 | time_to_daylist( Stime, Etime ) -> 26 | time_to_list( Stime, Etime+86400, [], 86400 ). 27 | 28 | time_to_weeklist( Stime, Etime ) -> 29 | time_to_list( Stime, Etime+86400*7, [], 86400*7 ). 30 | 31 | time_to_list( Stime, Etime, Data, Seconds ) -> 32 | if 33 | Stime == Etime -> 34 | lists:reverse(Data); 35 | Stime > Etime -> 36 | lists:reverse([{Stime, Etime}|Data]); 37 | true -> 38 | time_to_list( Stime+Seconds, Etime, [{Stime, Stime+Seconds}|Data], Seconds ) 39 | end. 40 | 41 | time_to_monthlist( Stime, Etime ) -> 42 | {{Year,Month,_Day},{0,0,0}} = zt_time:timerToLocalTime( Etime ), 43 | MaxDay = calendar:last_day_of_the_month(Year, Month), 44 | time_to_monthlist( Stime, Etime+86400*MaxDay, [] ). 45 | 46 | time_to_monthlist( Stime, Etime, Data ) -> 47 | {{Year,Month,_Day},{0,0,0}} = zt_time:timerToLocalTime( Stime ), 48 | MaxDay = calendar:last_day_of_the_month(Year, Month), 49 | if 50 | Stime == Etime -> 51 | lists:reverse(Data); 52 | Stime > Etime -> 53 | lists:reverse([{Stime, Etime}|Data]); 54 | true -> 55 | time_to_monthlist( Stime+86400*MaxDay, Etime, [{Stime, Stime+86400*MaxDay}|Data] ) 56 | end. 57 | 58 | all_to_binary( All ) when is_integer( All ) -> integer_to_binary( All ); 59 | all_to_binary( All ) when is_list( All ) -> list_to_binary( All ); 60 | all_to_binary( All ) when is_float( All ) -> float_to_binary( All ); 61 | all_to_binary( All ) when is_binary( All ) -> All; 62 | all_to_binary( All ) -> term_to_binary( All ). 63 | 64 | all_to_integer( All ) when is_integer( All ) -> All; 65 | all_to_integer( All ) when is_list( All ) -> list_to_integer( All ); 66 | all_to_integer( All ) when is_binary( All ) -> binary_to_integer(All); 67 | all_to_integer( All ) -> All. 68 | 69 | random(Min, Max) -> 70 | case get(random_seed) of 71 | undefined -> 72 | random:seed(now()); 73 | _Tuple -> 74 | ok 75 | end, 76 | random:uniform(Max - Min + 1) + Min - 1. 77 | 78 | read_config() -> 79 | FileNameSplit = filename:split( code:which( ?MODULE ) ), 80 | FilePath = string:join( lists:sublist( FileNameSplit, length( FileNameSplit )-1 ), "/" )++"/game.config", 81 | case file:consult( FilePath ) of 82 | {error, _Other} -> 83 | {error, "{\"state\":\"102\", \"msg\":\"read game.config error\"}"}; 84 | {ok, Data} -> 85 | {ok, Data} 86 | end. 87 | 88 | json( KeyList, ValueList ) when is_integer(hd( ValueList ))-> 89 | TupleList = lists:zip( KeyList, ValueList ), 90 | [{obj, [{Key, ?AllTOBinary(Value)}||{Key, Value}<- TupleList]}]; 91 | 92 | json( KeyList, ValueList ) -> 93 | Fun = fun( Value ) -> 94 | TupleList = lists:zip( KeyList, Value ), 95 | {obj, [{Key, ?AllTOBinary(Value1)}||{Key, Value1}<- TupleList]} 96 | end, 97 | lists:map( Fun, ValueList ). -------------------------------------------------------------------------------- /priv/docroot/userLogin/reg.yaws: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 账户注册 6 | 7 | 8 | 9 | 44 | 45 | 46 |
47 | 50 |
51 |

创建账户

52 | 53 |
54 |
55 |

创建账户的必须信息

56 |
57 |
58 | 59 | 60 | 63 | 64 | 68 | 69 | 71 | 73 | 74 | 75 | 77 | 78 | 84 | 85 | 86 | 97 |
电子邮箱:
61 | 请输入您的电子邮箱 62 |
设定密码: 65 |
66 | 长度必须最少包含 8 个字符。 67 |
再次输入密码:
70 |
公司名称:
72 | 目前不提供修改服务,请仔细填写
邀请码:
76 | 输入您获得的邀请码
79 |

80 | 81 | 《好问角用户协议》 82 |

83 |
87 | 88 | out(A) -> 89 | Text = case yaws_api:queryvar(A, "msg") of 90 | {ok, Val} ->Val; 91 | _ ->[] 92 | end, 93 | {ehtml, 94 | [{p,[{style,"color:red"}],Text}]}. 95 | 96 |
98 |
99 |
100 | 103 |
104 | 105 | 106 | -------------------------------------------------------------------------------- /priv/docroot/css/content.css: -------------------------------------------------------------------------------- 1 | body{background: none;} 2 | 3 | #conPanel h3 {padding: 18px 0 8px 0;border-bottom: 2px solid #d3d3d3;} 4 | 5 | #conPanel .title_tab {line-height: 40px;border-bottom-color: #e7e7eb;box-shadow: none;-moz-box-shadow: none;-webkit-box-shadow: none;border-bottom: 1px solid #e7e7eb;} 6 | #conPanel .title_tab li {text-align:center;line-height: 30px;border-bottom:0px;float: left;font-size: 14px;} 7 | #conPanel .title_tab li.selected {background:0;border-bottom:3px solid #44b549;} 8 | #conPanel .title_tab li:hover {background:0;border-bottom:3px solid #A0A3AB;} 9 | #conPanel .title_tab .li.first p {padding-left: 30px;} 10 | #conPanel .title_tab li p{display: block;text-decoration: none;color: #222;outline: 0;padding: 0 20px;cursor: pointer;} 11 | 12 | #conPanel ul{width:100%;} 13 | #conPanel ul li{padding:6px 0;border-bottom:1px solid #eee;} 14 | #conPanel ul li:hover{background-color:#F7F7F7;} 15 | 16 | #conPanel ul li span{text-align:right;line-height:36px;display:inline-block;padding-right:10px;padding-left: 10px;} 17 | 18 | #conPanel input[type="input"]{height:28px;font-size:14px;border:1px solid #d9d9d9;box-sizing:border-box;padding-left:4px;} 19 | #conPanel input.warn{border:1px solid red;box-sizing:border-box;} 20 | 21 | #conPanel .ul_css_2 li{float:left;padding-right: 12px;} 22 | #conPanel .ul_css_2 input[type="input"]{width:90px;} 23 | #conPanel ul.ul_css_2 li .width3{width:47px;} 24 | #conPanel ul.ul_css_2 li .width4{width:150px;} 25 | 26 | #conPanel .ul_css_3 span{width:72px;} 27 | #conPanel .li_css_2 span{width: 56px;} 28 | #conPanel .li_css_3 span{width: 42px;} 29 | 30 | 31 | #conPanel .ul_css_2 input.button1{width:80px;height:29px;margin:6px 6px 6px 46px;} 32 | #conPanel .ul_css_2 input.button2{width:39px;height:29px;} 33 | 34 | #conPanel button[type="button"]{height:30px;line-height:26px;width:100px;margin:5px;padding:1px;background:#EEE;color: #FE6518;border: 2px solid #DDD;cursor:pointer;font-weight:bold; 35 | -moz-border-radius: 5px;-webkit-border-radius: 5px;border-radius: 5px;} 36 | 37 | 38 | #conPanel .table_css_1{font-size: 12px;border-collapse: collapse;width:100%;margin-top:12px;text-align:center;} 39 | #conPanel .table_css_1 thead th {line-height: 19px;padding: 10px 15px;color: #444;border: 1px solid #e8e8e8; 40 | -webkit-box-shadow: inset 0px 1px 0 rgba(255, 255, 255, 1.0); 41 | -moz-box-shadow: inset 0px 1px 0 rgba(255, 255, 255, 1.0); 42 | box-shadow: inset 0px 1px 0 rgba(255, 255, 255, 1.0); 43 | background: -webkit-gradient(linear, 0 0, 0 100%, from(#fafafa), to(#f3f3f3)); 44 | background: -moz-linear-gradient(top,#fafafa,#f3f3f3); 45 | background: -ms-linear-gradient(top,#fafafa,#f3f3f3); 46 | background-color: #f5f5f5;white-space: nowrap;overflow: hidden; 47 | } 48 | #conPanel .table_css_1 td{border: 1px solid rgb(232, 232, 232);padding:4px 0px;} 49 | 50 | #conPanel #card{width:100%;} 51 | #conPanel #card ul{width:100%;border-bottom: 1px dashed #d0d3d8;padding:6px 0px 36px 0px;} 52 | #conPanel #card ul li{width:33.3%;float:left;border:0px;} 53 | #conPanel #card ul li .card{height:230px;margin-right: 8px;border: 1px solid #d5d7e1;background-color: #fff;overflow: hidden;} 54 | #conPanel #card ul li .card:hover{border-color:#9598a9;position:relative;top:-10px;} 55 | #conPanel #card ul li .card .title{padding: 15px 12px;} 56 | #conPanel #card ul li .card .title h3{font-size: 14px;font-weight: bold;border-bottom: 1px solid #e4e4e9;padding-bottom: 13px;margin-bottom: 21px;padding-top:0px;} 57 | #conPanel #card ul li .card .title .num{font-size: 34px;color: #3a3f48;margin-bottom: 10px;height: 24px;font-weight: bold;margin-top: 2px;line-height: 18px;white-space: nowrap;} 58 | /*#conPanel #card ul li .card .title .dd{font-size: 14px;color: #6c6c77;font-weight:bold;margin-top:6px;line-height:18px;}*/ 59 | #conPanel #card ul li .card table{width:100%;border-collapse: collapse;border-spacing: 0;} 60 | #conPanel #card ul li .card table tbody{border-spacing:2px;border-color: gray;} 61 | #conPanel #card ul li .card table tr {display: table-row;vertical-align: inherit;border-color: inherit;} 62 | #conPanel #card ul li .card table tr td{width: auto;height:110px;;border: none;margin: 0;padding: 0;} 63 | #conPanel #card ul li .card table tr td .histogram_wrap{height:100%;position:relative;} 64 | #conPanel #card ul li .card table tr td .histogram_chart{width:100%;display:block;position:absolute;bottom:0;left:0;background-color:#daeafd;} 65 | #conPanel #card ul li .card table tr td .histogram_chart:hover{background-color:#2D89FE;} 66 | #conPanel #card ul li .card table tr td span{display:none;} -------------------------------------------------------------------------------- /src/gm_data1.erl: -------------------------------------------------------------------------------- 1 | %% @author 余健 2 | %% @doc 玩家数据统计 3 | 4 | -module(gm_data1). 5 | 6 | -include( "../include/gm.hrl" ). 7 | -export([handle/1]). 8 | 9 | handle( {"0", ServerDB, PaltformId, [{"stime", StimeStr}, {"etime", EtimeStr}]} ) -> 10 | SqlData = reg_data( ServerDB, PaltformId, gm_fun:all_to_integer(StimeStr), gm_fun:all_to_integer(EtimeStr) ), 11 | {ok, gm_fun:json( ["dayTime", "add", "online"], SqlData )}; 12 | 13 | handle( {"1", ServerDB, PaltformId, [{"stime", StimeStr}, {"etime", EtimeStr}]} ) -> 14 | SqlData = retention_select( ServerDB, PaltformId, gm_fun:all_to_integer(StimeStr), gm_fun:all_to_integer(EtimeStr) ), 15 | {ok, gm_fun:json( ["dayTime", "reg", "renum_1", "renum_2", "renum_3", "renum_4", 16 | "renum_5", "renum_6", "renum_7", "renum_8", "renum_9"], SqlData )}; 17 | 18 | handle( _Other ) -> 19 | ?trace( ["no this handle", _Other] ). 20 | 21 | 22 | %%1.reg 表增加onlineTime字段,玩家登录更新该字段,如果是今天第一次登录,account_amount+1 23 | %%2.新增表账户活跃表(account_amount),记录每天不重复的账户登录数量 24 | reg_data( ServerDB, PaltformId, Stime, Etime ) -> 25 | TimeList = gm_fun:time_to_list(Stime, Etime, day), 26 | case {ServerDB, PaltformId} of 27 | {"all", "all"} -> 28 | Sql1 = "SELECT COUNT(*) FROM `"++?ServerLIST++"`.`user` WHERE regTime >= #DayStime# AND regTime < #DayEtime#;", 29 | %Sql2 = "SELECT amount FROM `"++?ServerLIST++"`.`account_amount` WHERE `date` = #DayStime#;", 30 | Reg = gm_pool:executeDynamic(TimeList, {Sql1, count, "server_list"}), 31 | %Amount = gm_pool:executeDynamic({Stime, Etime, day}, {Sql2, count, ServerDB}); 32 | Amount = [{_M, "暂无数据"}||{_M, _N} <- TimeList], 33 | [[Time, RegNum, OnlineNum]||{{Time, RegNum}, {Time, OnlineNum}}<-lists:zip( Reg, Amount )]; 34 | {"all", PaltformId} -> 35 | Sql1 = "SELECT COUNT(*) FROM `"++?ServerLIST++"`.`user` WHERE regTime >= #DayStime# AND regTime < #DayEtime# AND platformId = "++PaltformId++";", 36 | Reg = gm_pool:executeDynamic(TimeList, {Sql1, count, "server_list"}), 37 | Amount = [{_M, "暂无数据"}||{_M, _N} <- TimeList], 38 | [[Time, RegNum, OnlineNum]||{{Time, RegNum}, {Time, OnlineNum}}<-lists:zip( Reg, Amount )]; 39 | 40 | {ServerDB, "all"} -> 41 | Sql1 = "SELECT COUNT(*) FROM attr WHERE createTime>=#DayStime# AND createTime < #DayEtime# AND uid >= 163", 42 | Sql2 = "SELECT COUNT(DISTINCT uid) FROM day_online_time WHERE `date`>=#DayStime# AND `date`<#DayEtime#", 43 | Reg = gm_pool:executeDynamic(TimeList, {Sql1, count, ServerDB}), 44 | Online = gm_pool:executeDynamic(TimeList, {Sql2, count, ServerDB}), 45 | [[Time, RegNum, OnlineNum]||{{Time, RegNum}, {Time, OnlineNum}}<-lists:zip( Reg, Online )]; 46 | 47 | {ServerDB, PaltformId} -> 48 | Sql1 = "SELECT COUNT(*) FROM attr WHERE createTime>=#DayStime# AND createTime < #DayEtime# AND uid >= 163 AND platformId = "++PaltformId++";", 49 | Sql2 = "SELECT COUNT(DISTINCT uid) FROM day_online_time WHERE `date`>=#DayStime# AND `date`<#DayEtime# AND platformId = "++PaltformId++";", 50 | Reg = gm_pool:executeDynamic(TimeList, {Sql1, count, ServerDB}), 51 | Online = gm_pool:executeDynamic(TimeList, {Sql2, count, ServerDB}), 52 | [[Time, RegNum, OnlineNum]||{{Time, RegNum}, {Time, OnlineNum}}<-lists:zip( Reg, Online )] 53 | end. 54 | 55 | 56 | retention_select( ServerDB, PaltformId, Stime, Etime ) -> 57 | TimeList = gm_fun:time_to_list(Stime, Etime, day), 58 | RetentionTime = [86400, 2*86400,3*86400,4*86400,5*86400,6*86400,7*86400,14*86400,30*86400], 59 | Fun = 60 | fun( {DayStime, DayEtime} ) -> 61 | Sql1 = case PaltformId of 62 | "all" -> "SELECT COUNT(*) FROM attr WHERE createTime>=#DayStime# AND createTime<#DayEtime#;"; 63 | PaltformId -> "SELECT COUNT(*) FROM attr WHERE createTime>=#DayStime# AND createTime<#DayEtime# AND platformId = "++PaltformId++";" 64 | end, 65 | Reg = gm_pool:executeDynamic({DayStime, DayEtime}, {Sql1, count, ServerDB}), 66 | Fun2 = 67 | fun( Retention ) -> 68 | Sql2 = 69 | case PaltformId of 70 | "all" -> 71 | "SELECT COUNT(*) FROM attr AS a, day_online_time AS b WHERE a.createTime>="++integer_to_list(DayStime)++ 72 | " AND a.createTime <"++integer_to_list(DayEtime)++" AND a.uid = b.uid AND b.date ="++integer_to_list(DayStime+Retention)++";"; 73 | PaltformId -> 74 | "SELECT COUNT(*) FROM attr AS a, day_online_time AS b WHERE a.platformId = "++PaltformId++" AND a.createTime>="++integer_to_list(DayStime)++ 75 | " AND a.createTime <"++integer_to_list(DayEtime)++" AND a.uid = b.uid AND b.date ="++integer_to_list(DayStime+Retention)++";" 76 | end, 77 | gm_pool:executeDynamic({DayStime, DayEtime}, {Sql2, count, ServerDB}) 78 | end, 79 | [DayStime, Reg|lists:map( Fun2, RetentionTime )] 80 | 81 | end, 82 | lists:map( Fun, TimeList ). 83 | 84 | 85 | -------------------------------------------------------------------------------- /priv/docroot/data/data_2.yaws: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | out(A) -> 6 | {ssi, "../inc/head_charset.inc", "", ""}. 7 | 8 | 9 | 10 | 11 | 12 | 85 | 管理平台 86 | 87 |
88 |
    89 |
  • 收入

  • 90 |
    91 |
92 |
93 |
    94 |
  • 95 | 时间: 96 | 97 | 98 | 99 | 100 |
  • 101 |
    102 |
103 |

详细数据 104 | 导出CVX

105 | 106 | 107 | 108 | 109 | 110 | 111 | 112 | 113 | 114 | 115 | 116 | 117 | 118 | 119 | 120 | 121 | 122 | 123 | 124 | 125 |
当前时间所有用户新注册用户
总金额付费次数付费人数付费ARPU新注册付费金额新注册付费次数新注册付费人数

没有相应的数据

126 |
127 |
128 | 129 | 130 | 131 | out(A) -> 132 | {ssi, "../inc/side_bg.inc", "", ""}. 133 | 134 | 135 | 136 | -------------------------------------------------------------------------------- /priv/docroot/css/public.css: -------------------------------------------------------------------------------- 1 | /*全局样式放在这里 ------------------------------------*/ 2 | *{margin:0px;padding:0px;} 3 | body{color:#333;font:14px/1.5 arial;background-color:#eaeaea;background:url(/images/topnav_bg.gif) repeat-x 0 115px;} 4 | .clear{float:none;clear:both;} 5 | ul, li {list-style:none;} 6 | .dis{display:none;} 7 | a{text-decoration:none;} 8 | .wtcenter{width:1120px;margin:0 auto;} 9 | .text-left{text-align:left;} 10 | textarea{vertical-align: top;} 11 | /*全局样式放在这里 ------------------------------------*/ 12 | 13 | /*头部样式放在这里 ------------------------------------*/ 14 | #header{height:30px;width:100%;font:13px Arial,sans-serif;background-color:#222} 15 | #header .head{white-space:nowrap;height:30px;padding-left:4px;float:left;} 16 | #header ul.nav{line-height:27px;} 17 | #header .nav li{display:inline-block;line-height:27px;vertical-align:top;} 18 | #header .nav li a .title_head{display:block;border-top:2px solid transparent;} 19 | #header .nav li a .title{display:block;padding:0 5px;position:relative;z-index:1000;color:#CCC;} 20 | #header .nav li:hover{background-color:white;} 21 | #header .nav li:hover a .title_head{background-color:red;} 22 | #header .nav li:hover a .title{color:#36C;} 23 | 24 | /*头部样式放在这里 ------------------------------------*/ 25 | 26 | /*导航样式放在这里 ------------------------------------*/ 27 | #logo{height:85px;} 28 | #logo h1{line-height:85px;} 29 | #nav{font:13px/30px Arial,Verdana,Geneva,sans-serif;} 30 | #nav ul li{ float:left;display:inline;width:130px;} 31 | #nav ul li a{display:inline-block;height:30px;color:#5d5d5d;width:60%;margin-left:20%; padding-right:20%;text-align:center;} 32 | #nav ul li a:hover {color: #e00400;outline: none;} 33 | #nav ul li.selected{ background:url(/images/topnav_tab.gif) no-repeat bottom left;} 34 | #nav ul li.selected a{background: url(/images/topnav_tab.gif) no-repeat bottom right;color: #e20400;} 35 | #message h2{color:#e00400;padding-top:30px;} 36 | /*导航样式放在这里 ------------------------------------*/ 37 | 38 | /*第一种框架-----------------------------------------------------------------------------------------------*/ 39 | 40 | /*边框*/ 41 | #content {margin-top:30px;margin-bottom: 20px;border:1px solid #d3d3d3;border-radius: 3px;box-shadow: 0 3px 3px #ddd; 42 | -moz-box-shadow: 0 3px 3px #ddd;-webkit-box-shadow: 0 3px 3px #ddd;-moz-border-radius: 3px;-webkit-border-radius: 3px;} 43 | 44 | /*边框头部*/ 45 | #content .container_hd {padding: 0 20px;border-bottom: 1px solid #c3c3c3;font-size: 14px;color: #545454;line-height: 40px; 46 | box-shadow: inset 0 1px 0 0 #fcfcfc; 47 | -moz-box-shadow: inset 0 1px 0 0 #fcfcfc; 48 | -webkit-box-shadow: inset 0 1px 0 0 #fcfcfc; 49 | background-color: #e9e9e9; 50 | background-image: -moz-linear-gradient(top,#f3f3f3 0,#e3e3e3 100%); 51 | background-image: -webkit-gradient(linear,0 0,0 100%,from(#f3f3f3),to(#e3e3e3)); 52 | background-image: -webkit-linear-gradient(top,#f3f3f3 0,#e3e3e3 100%); 53 | background-image: -o-linear-gradient(top,#f3f3f3 0,#e3e3e3 100%); 54 | background-image: linear-gradient(to bottom,#f3f3f3 0,#e3e3e3 100%);} 55 | #content .container_hd h2 {font-weight: 400;font-style: normal;font-size: 14px;} 56 | 57 | /*边框左侧样式*/ 58 | #content #sidePanel {float:left;width:190px;border-right: 1px solid #d3d3d3;cursor: pointer;} 59 | #content #sidePanel ul {margin-top: 10px;} 60 | #content #sidePanel ul li{display: block;padding:5px 0px;color:#000;line-height:31px;text-indent:10px;} 61 | #content #sidePanel ul li p{padding-left:10px;} 62 | #content #sidePanel ul li:hover{border-left:6px solid #6E778A;background-color:#f0f2f3;} 63 | #content #sidePanel ul li.selected {font-weight:bold;background-color:#EDEEF0;border-left:6px solid #3794E3;} 64 | 65 | 66 | /*边框右侧统一样式*/ 67 | #mainPanel{width:889px;float:right;margin-left:-2px;padding:20px;border-left:1px solid #d3d3d3;} 68 | #mainPanel iframe{width: 100%;border:0;display: inline;} 69 | 70 | /*图表框样式*/ 71 | .container{box-sizing: border-box;height:450px;font-size: 14px;line-height: 1.2em;border: 1px solid #ddd;background: #fff;margin-top:15px;padding: 20px 15px 15px 15px; 72 | background: linear-gradient(#f6f6f6 0, #fff 50px); 73 | background: -o-linear-gradient(#f6f6f6 0, #fff 50px); 74 | background: -ms-linear-gradient(#f6f6f6 0, #fff 50px); 75 | background: -moz-linear-gradient(#f6f6f6 0, #fff 50px); 76 | background: -webkit-linear-gradient(#f6f6f6 0, #fff 50px); 77 | box-shadow: 0 3px 10px rgba(0,0,0,0.15); 78 | -o-box-shadow: 0 3px 10px rgba(0,0,0,0.1); 79 | -ms-box-shadow: 0 3px 10px rgba(0,0,0,0.1); 80 | -moz-box-shadow: 0 3px 10px rgba(0,0,0,0.1); 81 | -webkit-box-shadow: 0 3px 10px rgba(0,0,0,0.1);} 82 | .placeholder{width: 100%;height: 100%;font-size: 14px;line-height: 1.2em;} 83 | .legend table{border-spacing: 5px;} 84 | 85 | /*页面底部样式 -----------------------------------------*/ 86 | #footer{background-color:#F7F7F7;border-top:1px solid #ddd;} 87 | #promote {text-align:center;margin-top:6px;font-size:12px;color:#999;} 88 | #promote a{color:#999;} 89 | #promote a:hover{color:#db0303;} 90 | /*页面底部样式 ----------------------------------------- -------------------------------------------------------------------------------- /priv/docroot/data/data_3.yaws: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | out(A) -> 6 | {ssi, "../inc/head_charset.inc", "", ""}. 7 | 8 | 9 | 10 | 11 | 12 | 76 | 管理平台 77 | 78 |
79 |
    80 |
  • 等级分布

  • 81 |
  • 阵营分布

  • 82 |
  • 任务分布

  • 83 |
  • 关卡分布

  • 84 |
  • 擂台分布

  • 85 |
    86 |
87 |
88 |

详细数据 89 | 导出CVX

90 | 91 | 92 | 93 | 94 | 95 | 96 | 97 | 98 | 99 | 100 |
等级该等级角色数量

没有相应的数据

101 |
102 | 103 | 118 | 119 | 134 | 135 |
136 | 137 | 138 | 139 | out(A) -> 140 | {ssi, "../inc/side_bg.inc", "", ""}. 141 | 142 | 143 | 144 | -------------------------------------------------------------------------------- /priv/docroot/js/public.js: -------------------------------------------------------------------------------- 1 | 2 | $(function(){ 3 | $("#sidePanel ul li").click(function(){ 4 | var $index = $(this).index(); 5 | $("#sidePanel ul li").removeClass( "selected" ); 6 | $("#sidePanel ul li").eq($index).addClass( "selected" ); 7 | var $iframeUrl = $("#sidePanel ul li").eq($index).attr( "data" ); 8 | $("#gm_iframe").attr( "src", $iframeUrl ); 9 | 10 | }); 11 | $("#conPanel .title_tab li").click(function(){ 12 | if($(this).attr("class") != "selected"){ 13 | $(this).attr( "class", "selected" ); 14 | $(this).siblings().removeClass( "selected" ); 15 | var $index = $(this).index(); 16 | $("#select_option").val( $index ); 17 | $("#conPanel>div").hide(); 18 | $("#conPanel>div").eq($index).show(); 19 | console.log( $index ); 20 | if( $("#thisPage").val() == "data_3" ){ 21 | if( $index == 0 ){option_1();} 22 | else if( $index == 1 ){option_2();} 23 | else if( $index == 2 ){option_3();} 24 | } 25 | } 26 | }); 27 | try {float( ".placeholder", [{data:[["9-11",0],["9-12",0], ["9-13",0],["9-14",0],["9-15",0]],label:"暂无数据",color:2}] );} 28 | catch(e){}; 29 | }) 30 | 31 | //iframe自适应高度 32 | function reinitIframe( id ){ 33 | var iframe = document.getElementById(id); 34 | var bHeight = iframe.contentWindow.document.body.scrollHeight; 35 | var dHeight = iframe.contentWindow.document.documentElement.scrollHeight; 36 | var height = Math.max(bHeight, dHeight); 37 | if( height >= 500 ){ 38 | iframe.height = height; 39 | }else{ 40 | iframe.height = 500; 41 | } 42 | } 43 | function parentIframe( id ){ 44 | var iframe = self.parent.frames[id]; 45 | var height = document.body.scrollHeight; 46 | if( height >= 500 ){ 47 | iframe.height = height; 48 | }else{ 49 | iframe.height = 500; 50 | } 51 | } 52 | 53 | function setCookie(key,value,expiredays) 54 | { 55 | var exdate=new Date() 56 | exdate.setDate(exdate.getDate()+expiredays) 57 | document.cookie=key+ "=" +escape(value)+ 58 | ((expiredays==null) ? "" : ";expires="+exdate.toGMTString()) 59 | } 60 | 61 | function getCookie(key) 62 | { 63 | if (document.cookie.length>0) 64 | { 65 | c_start=document.cookie.indexOf(key + "=") 66 | if (c_start!=-1){ 67 | c_start=c_start + key.length+1 68 | c_end=document.cookie.indexOf(";",c_start) 69 | if (c_end==-1) c_end=document.cookie.length 70 | return unescape(document.cookie.substring(c_start,c_end)) 71 | } 72 | } 73 | return "" 74 | } 75 | 76 | //ajax 发送数据给服务端 77 | function ajax($url, $callback){ 78 | $("#errorBg").show(); 79 | $("#loading span").show(); 80 | $.ajax({ 81 | url:$url, 82 | dataType: "json", 83 | error:function(){ 84 | $("#errorBg").hide(); 85 | alert( "链接服务器失败,请稍后重试!" ); 86 | }, 87 | success:function(data){ 88 | $("#errorBg").hide(); 89 | $("#loading span").hide(); 90 | callback( data, $callback ); 91 | } 92 | }) 93 | } 94 | 95 | function now_to_time(now){ 96 | var year=now.getFullYear(); 97 | var month=now.getMonth()+1; 98 | var date=now.getDate(); 99 | return year+"/"+month+"/"+date; 100 | } 101 | 102 | 103 | function eval_divide( Key, Value, action ){ 104 | if(Key == 0){ 105 | return "0.00"; 106 | }else if( Value == 0 ){ 107 | return "0.00"; 108 | }else{ 109 | if(action == "%"){ 110 | return Number((Key/Value)*100).toFixed(2); 111 | }else{ 112 | return Number(Key/Value).toFixed(2); 113 | } 114 | 115 | } 116 | } 117 | 118 | //图表 119 | // data = [{ data:[["9-11", 10], ["9-12", 8], ["9-13", 4], ["9-14", 13], ["9-15", 17], ["9-16", 9]], 120 | // label: "留存数", 121 | // color:2 122 | // }, 123 | // { data:[["9-11", 5], ["9-12", 4], ["9-13", 2], ["9-14", 0], ["9-15", 5], ["9-16", 28]], 124 | // label: "活跃数", 125 | // color:3 126 | // }] 127 | function float(id, data){ 128 | var plot = $.plot(id, data, { 129 | series: { 130 | lines: {show: true}, 131 | points: {show: true} 132 | }, 133 | grid: { 134 | hoverable: true, 135 | clickable: true 136 | }, 137 | xaxis: {mode: "categories",tickLength: 0}, 138 | yaxis: {min:0} 139 | }); 140 | 141 | $("
").css({ 142 | position: "absolute", 143 | display: "none", 144 | border: "1px solid #fdd", 145 | padding: "2px", 146 | "background-color": "#fee", 147 | opacity: 0.80 148 | }).appendTo("body"); 149 | 150 | $(id).bind("plothover", function (event, pos, item) { 151 | if (item) { 152 | var x = item.datapoint[0].toFixed(2), 153 | y = item.datapoint[1].toFixed(2); 154 | 155 | $("#tooltip").html(item.series.label + y) 156 | .css({top: item.pageY+5, left: item.pageX+5}) 157 | .fadeIn(200); 158 | } else { 159 | $("#tooltip").hide(); 160 | } 161 | }); 162 | } -------------------------------------------------------------------------------- /include/yaws_api.hrl: -------------------------------------------------------------------------------- 1 | %%%---------------------------------------------------------------------- 2 | %%% File : yaws_api.hrl 3 | %%% Author : Claes Wikstrom 4 | %%% Purpose : 5 | %%% Created : 24 Jan 2002 by Claes Wikstrom 6 | %%%---------------------------------------------------------------------- 7 | 8 | -author('klacke@hyber.org'). 9 | 10 | -record(arg, { 11 | clisock, % the socket leading to the peer client 12 | client_ip_port, % {ClientIp, ClientPort} tuple 13 | headers, % headers 14 | req, % request (possibly rewritten) 15 | orig_req, % original request 16 | clidata, % The client data (as a binary in POST requests) 17 | server_path, % The normalized server path 18 | % (pre-querystring part of URI) 19 | querydata, % For URIs of the form ...?querydata 20 | % equiv of cgi QUERY_STRING 21 | appmoddata, % (deprecated - use pathinfo instead) the remainder 22 | % of the path leading up to the query 23 | docroot, % Physical base location of data for this request 24 | docroot_mount, % virtual directory e.g /myapp/ that the docroot 25 | % refers to. 26 | fullpath, % full deep path to yaws file 27 | cont, % Continuation for chunked multipart uploads 28 | state, % State for use by users of the out/1 callback 29 | pid, % pid of the yaws worker process 30 | opaque, % useful to pass static data 31 | appmod_prepath, % (deprecated - use prepath instead) path in front 32 | % of: 33 | prepath, % Path prior to 'dynamic' segment of URI. 34 | % ie http://some.host///d/e 35 | % where is an appmod mount point, 36 | % or .yaws,.php,.cgi,.fcgi etc script file. 37 | pathinfo % Set to '/d/e' when calling c.yaws for the request 38 | % http://some.host/a/b/c.yaws/d/e 39 | % equiv of cgi PATH_INFO 40 | }). 41 | 42 | 43 | -record(http_request, {method, 44 | path, 45 | version}). 46 | 47 | -record(http_response, {version, 48 | status, 49 | phrase}). 50 | 51 | -record(rewrite_response, {status, 52 | headers = [], 53 | content = <<>>}). 54 | 55 | -record(headers, { 56 | connection, 57 | accept, 58 | host, 59 | if_modified_since, 60 | if_match, 61 | if_none_match, 62 | if_range, 63 | if_unmodified_since, 64 | range, 65 | referer, 66 | user_agent, 67 | accept_ranges, 68 | cookie = [], 69 | keep_alive, 70 | location, 71 | content_length, 72 | content_type, 73 | content_encoding, 74 | authorization, 75 | transfer_encoding, 76 | x_forwarded_for, 77 | other = [] % misc other headers 78 | }). 79 | 80 | 81 | 82 | 83 | -record(url, 84 | {scheme, % undefined means not set 85 | host, % undefined means not set 86 | port, % undefined means not set 87 | path = [], 88 | querypart = []}). 89 | 90 | 91 | -record(setcookie, {key, 92 | value, 93 | quoted = false, 94 | domain, 95 | max_age, 96 | expires, 97 | path, 98 | secure = false, 99 | http_only = false, 100 | extensions = []}). 101 | 102 | 103 | -record(cookie, {key, 104 | value, 105 | quoted = false}). 106 | 107 | 108 | -record(redir_self, { 109 | host, % string() - our own host 110 | scheme, % http | https 111 | scheme_str, % "https://" | "http://" 112 | port, % integer() - our own port 113 | port_str % "" | ":" - the optional port part 114 | % to append to the url 115 | }). 116 | 117 | %% Corresponds to the frame sections as in 118 | %% http://tools.ietf.org/html/rfc6455#section-5.2 119 | %% plus 'data' and 'ws_state'. Used for incoming frames. 120 | -record(ws_frame_info, { 121 | fin, 122 | rsv, 123 | opcode, 124 | masked, 125 | masking_key, 126 | length, 127 | payload, 128 | data, % The unmasked payload. Makes payload redundant. 129 | ws_state % The ws_state after unframing this frame. 130 | % This is useful for the endpoint to know what type of 131 | % fragment a potentially fragmented message is. 132 | }). 133 | 134 | %% Used for outgoing frames. No checks are done on the validity of a frame. This 135 | %% is the application's responsability to send valid frames. 136 | -record(ws_frame, { 137 | fin = true, 138 | rsv = 0, 139 | opcode, 140 | payload = <<>> 141 | }). 142 | 143 | %%---------------------------------------------------------------------- 144 | %% The state of a WebSocket connection. 145 | %% This is held by the ws owner process and passed in calls to yaws_api. 146 | %%---------------------------------------------------------------------- 147 | -type frag_type() :: text 148 | | binary 149 | | none. % The WebSocket is not expecting continuation 150 | % of any fragmented message. 151 | -record(ws_state, { 152 | vsn :: integer(), % WebSocket version number 153 | sock, % gen_tcp or gen_ssl socket 154 | frag_type :: frag_type() 155 | }). 156 | -------------------------------------------------------------------------------- /priv/docroot/inc/nav_head_master.inc: -------------------------------------------------------------------------------- 1 | 70 | 130 | 131 | -------------------------------------------------------------------------------- /priv/docroot/userLogin/userLogin.yaws: -------------------------------------------------------------------------------- 1 | 2 | out(A) -> 3 | RedirectUrl = 4 | case (A#arg.headers)#headers.referer of 5 | undefined -> "/"; 6 | Url -> Url 7 | end, 8 | case gm_manager:api("check_session", A) of 9 | {ok, UserData} -> 10 | {redirect, "/"}; 11 | "{\"state\":\"105\"}" -> 12 | [{bindings, [{"RedirectUrl", RedirectUrl}]}] 13 | end. 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 67 | 68 | 账户登陆 69 | 92 | 93 | 94 | 105 |
106 | 110 |
111 |
112 |
113 |

gm管理工具

114 |

实时查询玩家信息、发送道具给玩家、实时获取服务器信息......

115 |
116 |
117 |

后台数据统计

118 |

统计玩家的数据信息

119 |
120 |
121 |
122 |
123 |
124 |
125 |

还没有账户?

126 | 129 |
130 |
131 |

登陆

132 | 133 | 134 | 135 | 142 | 143 | 150 | 151 | 153 | 154 | 155 | 156 |
136 | 141 |
144 | 149 |
保持登录状态 152 |

请输入您的账户名

登录成功

157 |
158 |
159 |
160 |
161 | 162 | out(A) -> 163 | {ssi, "../inc/foot.inc", "", ""}. 164 | 165 | 166 | 167 | -------------------------------------------------------------------------------- /priv/docroot/data/data_0.yaws: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | out(A) -> 6 | {ssi, "../inc/head_charset.inc", "", ""}. 7 | 8 | 9 | 10 | 11 | 106 | 管理平台 107 | 108 |
109 |
    110 |
  • 关键指标

  • 111 | 112 |
    113 |
114 |
115 |
    116 |
  • 117 | 时间: 118 |
  • 119 |
    120 |
121 |
122 |

新玩家

123 |
    124 |
  • 125 |
    126 |

    新增帐号

    15.6%
    127 | 128 | 129 | 130 | 131 |
    132 |
    133 |
  • 134 |
  • 135 |
    136 |

    次日留存数

    15
    137 |
    138 |
    139 |
  • 140 |
  • 141 |
    142 |

    三日留存数

    15
    143 |
    144 |
    145 |
  • 146 |
    147 |
148 |

活跃玩家

149 |
    150 |
  • 151 |
    152 |

    日活跃(DAU)

    15
    153 |
    154 |
    155 |
  • 156 |
  • 157 |
    158 |

    周活跃用户

    15
    159 |
    160 |
    161 |
  • 162 |
  • 163 |
    164 |

    双周流失账号

    15.6%
    165 |
    166 |
    167 |
  • 168 |
    169 |
170 |

收入(¥)

171 |
    172 |
  • 173 |
    174 |

    新增帐号

    15.6%
    175 |
    176 |
    177 |
  • 178 |
  • 179 |
    180 |

    付费总人数

    15.6%
    181 |
    182 |
    183 |
  • 184 |
  • 185 |
    186 |

    付费总次数

    15.6%
    187 |
    188 |
    189 |
  • 190 |
    191 |
192 |
193 |
194 | 195 |
196 | 197 | 198 | out(A) -> 199 | {ssi, "../inc/side_bg.inc", "", ""}. 200 | 201 | 202 | 203 | -------------------------------------------------------------------------------- /priv/docroot/data/data_1.yaws: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | out(A) -> 6 | {ssi, "../inc/head_charset.inc", "", ""}. 7 | 8 | 9 | 10 | 11 | 12 | 163 | 管理平台 164 | 165 |
166 |
    167 |
  • 玩家账户

  • 168 |
  • 玩家留存

  • 169 | 170 |
    171 |
172 | 173 |
174 |
    175 |
  • 176 | 时间: 177 | 178 | 179 | 180 |
  • 181 |
    182 |
183 |

趋势图 184 | 导出CVX

185 |
186 |

详细数据 187 | 导出CVX

188 | 189 | 190 | 191 | 192 | 193 | 194 | 195 | 196 | 197 | 198 | 199 |
日期新增帐号活跃账户数

没有相应的数据

200 |
201 | 237 | 238 |
239 | 240 | 241 | 242 | out(A) -> 243 | {ssi, "../inc/side_bg.inc", "", ""}. 244 | 245 | 246 | 247 | -------------------------------------------------------------------------------- /priv/docroot/data/data_4.yaws: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | out(A) -> 6 | {ssi, "../inc/head_charset.inc", "", ""}. 7 | 8 | 9 | 10 | 11 | 12 | 199 | 管理平台 200 | 201 |
202 |
    203 |
  • 货币消耗

  • 204 |
  • 游戏经济

  • 205 |
  • 道具总量

  • 206 | 207 |
    208 |
209 |
210 |

详细数据 211 | 导出CVX

212 | 213 | 214 | 215 | 216 | 217 | 218 | 219 | 220 | 221 | 222 | 223 | 224 | 225 |
货币类型货币总量
元宝没有相应的数据
银两没有相应的数据
学点没有相应的数据
药材没有相应的数据
226 |
227 | 259 | 288 | 289 |
290 | 291 | 292 | 293 | out(A) -> 294 | {ssi, "../inc/side_bg.inc", "", ""}. 295 | 296 | 297 | 298 | -------------------------------------------------------------------------------- /include/table_record.hrl: -------------------------------------------------------------------------------- 1 | -record( activity_task, {id, uid, tableId, state, num, completeNum} ). 2 | 3 | -record( acu, {id, uid, gangMainLv, gangMinorLv, footMainLv, footMinorLv, hideMainLv, hideMinorLv, magicMainLv, magicMinorLv} ). 4 | 5 | -record( answer_record, {id, uid, answerList, answerNum, totalNum, trueNum, errorNum, flag, time} ). 6 | 7 | -record( att_main_info, {id, uid, attUid, time} ). 8 | 9 | -record( attr, {uid, name, sex, txt, gangId, styleId, camp, weaponStyle, lv, exp, gold, rmb, vit, ge, learn, rank, teamRank, practice, strength, realm, realmExp, teamNum, teamLv, teamStrength, guildId, downlineTime, revise, addHp, drug, canPvpNum, manager, createTime, onlineTime, friendPassNum, gagTime, vitBuyNum, sweepPoint, canBuyPoint, closure, choice, platformId, refreshTime} ). 10 | 11 | -record( bag, {id, uid, size} ). 12 | 13 | -record( boss, {id, type, lv} ). 14 | 15 | -record( box_record, {id, uid, x, y, quality, type, typeId, num, time} ). 16 | 17 | -record( building, {id, uid, type, lv} ). 18 | 19 | -record( cdkey_used, {id, uid, cdkey} ). 20 | 21 | -record( current_instance, {id, uid, instanceId, mode, currentFight, dropList} ). 22 | 23 | -record( daily_task, {id, uid, tableId, quality, currentSeat, num, task_1, quality_1, isAccept_1, task_2, isAccept_2, quality_2, task_3, isAccept_3, quality_3, task_4, isAccept_4, quality_4, lostTime, freeNum, completeNum, toZeroTime} ). 24 | 25 | -record( day_online_time, {date, uid, platformId, time, logincount} ). 26 | 27 | -record( debug_trace_info, {id, debugTraceInfo, time} ). 28 | 29 | -record( delete_temporary_item, {id, uid, tableId, num} ). 30 | 31 | -record( drop_table, {id, drop} ). 32 | 33 | -record( drug_buff, {id, uid, itemId, drugId, time} ). 34 | 35 | -record( drug_cost, {id, uid, costId, num, drugNum, time} ). 36 | 37 | -record( email, {id, uid, fromUid, receiveTime, title, info, appendix, isRead, isGet} ). 38 | 39 | -record( energe_record, {id, uid, time, energe} ). 40 | 41 | -record( energe_task, {id, uid, energeTask, prize1, prize2, prize3, prize4} ). 42 | 43 | -record( equ, {id, uid, tableId, quality, maxHp, normalAtt, magicAtt, normalDef, magicDef, rageAdd, agile, hit, block, crit, addNum, teamAddNum, gem1, gem2, gem3, gem4, gem5, isWear, state, time, star} ). 44 | 45 | -record( equ_state, {id, uid, succinctTime, addTime, succinctNum, todayNum} ). 46 | 47 | -record( fight_attr, {id, uid, maxHp, normalAtt, magicAtt, normalDef, magicDef, maxRage, rageAdd, agile, crit, block, blockDmg, hit, critDmg, style_1, style_2, style_3, style_4, style_5, style_6, by_1, by_2, by_3} ). 48 | 49 | -record( first_open_equ_treasure, {id, uid, flag, time} ). 50 | 51 | -record( friend, {id, uid_1, uid_2, intimacy, friendState, teamState, joinTime} ). 52 | 53 | -record( fun_open, {id, uid, funList} ). 54 | 55 | -record( ge_rank, {rank, uid, value} ). 56 | 57 | -record( gem_lv_up, {id, uid, itemId} ). 58 | 59 | -record( give_mate, {uid} ). 60 | 61 | -record( gm_log, {id, uid, name, time, type, info} ). 62 | 63 | -record( gold_cost, {id, uid, costId, num, goldNum, time, itemId, num1, lvl} ). 64 | 65 | -record( herbal_garden, {id, uid, farm, farmStartTime, farmHelpList, farmStealList, treeNum, treeHelpList, treeHelpNum, maxTreeHelpNum, farmerTime, farmerExp, farmerQuality, farmerLv, clearTime, toCompleteNum, infoList} ). 66 | 67 | -record( hotel, {id, uid, lostRefresh, recruitNum, openNum, freeNum, role_1, food_1, state_1, time_1, role_2, food_2, state_2, time_2, role_3, food_3, state_3, time_3, role_4, food_4, state_4, time_4, role_5, food_5, state_5, time_5, role_6, food_6, state_6, time_6} ). 68 | 69 | -record( instance, {id, uid, instanceId, mode, modeScore_1, modeScore_2, modeScore_3} ). 70 | 71 | -record( item, {id, uid, tableId, num, state, time} ). 72 | 73 | -record( item_use_record, {id, uid, tableId, useType, num, time} ). 74 | 75 | -record( league, {id, leagueName, leagueLv, leagueExp, leagueNum, leagueRank, leagueStrength, leagueWealth, leagueCharge, leagueDebt, leaguePayTime, leagueState, leaguefeeFlag, leagueCreateTime, leagueCreateUid, leagueBossUid, leagueNotice, leaguebrief, leagueInfoState, fightState, targetLeagueId, fightStartTime, fightEndTime, payWealth, loseProTime, avoidProTime, avoidState, applyChallengeTime} ). 76 | 77 | -record( league_building, {leagueId, normalBuildingList, guardBuildingList} ). 78 | 79 | -record( league_contribute_cost, {id, uid, itemId, num, contribute, time} ). 80 | 81 | -record( league_daily_task, {id, uid, tableId, quality, currentSeat, num, task_1, quality_1, isAccept_1, task_2, isAccept_2, quality_2, task_3, isAccept_3, quality_3, task_4, isAccept_4, quality_4, lostTime, freeNum, completeNum} ). 82 | 83 | -record( league_escort_record, {id, leagueId, uid, escortId, eventId, num, rmb, completeNum, operationList, eventList, gridEventList, rewardList, allEventList, time} ). 84 | 85 | -record( league_fight, {id, uid, fightState, targetLeagueId} ). 86 | 87 | -record( league_fight_history, {id, leagueNameWin, leagueNameLose, time} ). 88 | 89 | -record( league_guard, {uid, feedNum, addHpNum} ). 90 | 91 | -record( league_member, {id, uid, leagueId, leaguePay, currentPay, memberLv, currentContribute, memberExp, memberContribute, memberPosition, memberState, getPayState, applyLeagueTime, joinLeagueTime} ). 92 | 93 | -record( league_mine, {leagueId, mine_1, loseTime_1, mine_2, loseTime_2, mine_3, loseTime_3, mine_4, loseTime_4, mine_5, loseTime_5} ). 94 | 95 | -record( league_record, {'Id', leagueId, uid, uid1, uid2, type, type1, time} ). 96 | 97 | -record( league_wealth_record, {id, leagueId, mineMoney, leagueWealth, buildingFee, money, payWealth, finalLeagueWealth, time} ). 98 | 99 | -record( league_wish_record, {'Id', leagueId, uid, type, pay, time} ). 100 | 101 | -record( learn, {id, uid, lostTime, refreshNum, getNum, learnTableVOId, lostLearn, time} ). 102 | 103 | -record( learn_cost, {id, uid, costId, num, learnNum, time} ). 104 | 105 | -record( leave_word, {id, uid, fromUid, fromName, sex, vipLv, 'Info'} ). 106 | 107 | -record( lineup, {id, uid, tableId, seat_1, seat_2, seat_3, seat_4, seat_5, seat_6, seat_7, seat_8, seat_9} ). 108 | 109 | -record( lineup_lose_hp, {uid, teamUid, loseHp} ). 110 | 111 | -record( lineup_use, {id, uid, useId} ). 112 | 113 | -record( location, {id, uid, x, y} ). 114 | 115 | -record( login, {id, uid, dateList, signTime, continuationDays} ). 116 | 117 | -record( login_ip_record, {id, uid, guid, platformId, ip, module, version, manufacturer, time} ). 118 | 119 | -record( lottery, {lotteryTableId, num} ). 120 | 121 | -record( lv_up_prize, {uid, lvList} ). 122 | 123 | -record( make_drug, {id, uid, makeDrugId} ). 124 | 125 | -record( mate_attr, {id, uid, mateId, lv, exp, loseHp, byRelationList, num, isFight, skillId, skillLv, style1Lv, style2Lv, style3Lv, style4lv, style5Lv, style6Lv, maxHp, normalAttr, magicAttr, normalDef, magicDef} ). 126 | 127 | -record( mate_equ, {id, uid, mateId, tableId, quality, addNum, isWear, state, exp, totalExp, time} ). 128 | 129 | -record( mate_equ_box_record, {id, uid, x, y, quality, type, typeId, num, time} ). 130 | 131 | -record( mate_equ_use, {id, uid, tableId, useType, time} ). 132 | 133 | -record( mate_fight_attr, {id, mateId, maxHp, normalAtt, magicAtt, normalDef, magicDef, maxRage, rageAdd, agile, crit, block, blockDmg, hit, critDmg} ). 134 | 135 | -record( mate_layer, {id, uid, mateId, layer, lv} ). 136 | 137 | -record( mate_record, {uid, mateId, handle, time, typeId} ). 138 | 139 | -record( mate_recruit, {id, uid, time1, time2, time3, num, dayNum} ). 140 | 141 | -record( mate_title, {id, uid, type, lv, exp, totalExp, state, time} ). 142 | 143 | -record( mate_title_bag, {id, uid, maxNum} ). 144 | 145 | -record( mate_title_groove, {id, uid, mateId, groove1, groove2, groove3, groove4, groove5, groove6, groove7, groove8} ). 146 | 147 | -record( mate_title_use, {id, uid, type, lv, useType, time} ). 148 | 149 | -record( mate_type, {id, uid, typeList} ). 150 | 151 | -record( mate_will, {id, uid, quality, num, time} ). 152 | 153 | -record( mate_will_use, {id, uid, quality, num, time} ). 154 | 155 | -record( mine, {id, uid, hostUid, guardUid, first, levyTime, gold, lostLevyTime, attTime} ). 156 | 157 | -record( mine_reward, {id, uid, gold, state} ). 158 | 159 | -record( month_card, {uid, currentCard, startTime, getTimeList, cardMoney} ). 160 | 161 | -record( new_year_prize, {uid, num} ). 162 | 163 | -record( online_prize, {id, uid, prize, accPrize, timePrize} ). 164 | 165 | -record( pharmacy, {id, uid, drug} ). 166 | 167 | -record( practice_rank, {rank, uid, value} ). 168 | 169 | -record( queue, {id, uid, building_1, lock_1, isOpen_1, buildingStart_1, building_2, lock_2, isOpen_2, buildingStart_3, building_3, lock_3, isOpen_3, buildingStart_2, skill_1, skillIsOpen_1, skillStart_1} ). 170 | 171 | -record( realm, {id, uid, mainLv, minorLv} ). 172 | 173 | -record( recharge_prize, {id, uid, num, time, day_1, day_2, day_3, day_4, day_5} ). 174 | 175 | -record( recharger_record, {id, uid, originalMoney, orderMoney, platformId, payId, time} ). 176 | 177 | -record( reg, {id, uid, regX, regY} ). 178 | 179 | -record( rmb_cost, {id, uid, costId, num, rmbNum, time, itemId, num1, lvl} ). 180 | 181 | -record( role_list, {id, uid, roleId, lost} ). 182 | 183 | -record( seller, {id, uid, itemList} ). 184 | 185 | -record( server_info, {name, ip, port, maxOnline, maxTime, startTime, serverState, serverDec, maxPlayer, serverName, serverDefault} ). 186 | 187 | -record( server_state, {date, platformId, rmb, max, maxTime, min, minTime, allOnline, hour_0, hour_1, hour_2, hour_3, hour_4, hour_5, hour_6, hour_7, hour_8, hour_9, hour_10, hour_11, hour_12, hour_13, hour_14, hour_15, hour_16, hour_17, hour_18, hour_19, hour_20, hour_21, hour_22, hour_23, payUser, allRmb, newPayUser, payUserInfo, newUser, one, three, seven, onlineTime, m10, m30, h1, h2, h3, h5, thanH5, lv} ). 188 | 189 | -record( set_skill, {id, uid, skill_1, skill_2, skill_3, skill_4, skill_5, skill_6, by_1, by_2, by_3, magic_1, magic_2, magic_3} ). 190 | 191 | -record( skill, {id, uid, tableId, skillLv, styleLv_1, styleLv_2, styleLv_3, styleLv_4, styleLv_5, styleLv_6, studyNum, addRate} ). 192 | 193 | -record( skill_by, {id, uid, tableId, lv} ). 194 | 195 | -record( skill_magic, {id, uid, tableId, lv} ). 196 | 197 | -record( stest, {test} ). 198 | 199 | -record( str_info, {id, class, a, b, c, d, e, f, g, uid} ). 200 | 201 | -record( strength_rank, {rank, uid, value} ). 202 | 203 | -record( sys_notic, {id, beginTime, difTime, num, txt} ). 204 | 205 | -record( target, {id, uid, tableId, state, num, drop} ). 206 | 207 | -record( task, {id, uid, tableId, state, num_1, num_2, num_3} ). 208 | 209 | -record( team_rank, {id, uid, rank, num, lostTime, lostAttTime, nextRewardTime, isReward, rewardRank, buyNum, exercise} ). 210 | 211 | -record( team_share, {id, uid, toUid, gold, exp, learn, year, month, day, getNum} ). 212 | 213 | -record( ticket, {id, uid, ticket, type, time, isget} ). 214 | 215 | -record( ticket_win, {id, type, ticket, time} ). 216 | 217 | -record( trace_info, {id, traceInfo, time} ). 218 | 219 | -record( uid_pass, {uid} ). 220 | 221 | -record( user_pack, {id, uid, packId, type, data, time, runTime, guid} ). 222 | 223 | -record( vip, {id, uid, vipExp, isGiftGet, vipLv, getPrizeList, vipRechargePrize} ). 224 | 225 | -record( xw_global, {teamRankRewardTime, regNum} ). 226 | 227 | -------------------------------------------------------------------------------- /priv/docroot/data/date.yaws: -------------------------------------------------------------------------------- 1 | 2 | 25 | 26 |
27 |
28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 |
2014年10月
38 |
2829301234
567891011
12131415161718
19202122232425
2627282930311
50 | 51 |
2014年11月
2627282930311
2345678
9101112131415
16171819202122
23242526272829
30123456
52 |
53 | 91 | 92 | 93 | -------------------------------------------------------------------------------- /priv/docroot/gm/gm_1.yaws: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | out(A) -> 6 | {ssi, "../inc/head_charset.inc", "", ""}. 7 | 8 | 9 | 管理平台 10 | 96 | 97 |
98 |
    99 |
  • 100 | 角色名 101 | UID 102 |
  • 103 |
  • 104 |
105 |
    106 |
  • 角色信息

  • 107 |
    108 |
109 |
110 |
    111 |
  • 112 |

    名称

    113 |

    UID

    114 |

    排名

    115 |

    等级

    116 |

    充值

    117 |

    实力

    118 |

    门派

    119 |

    阵营

    120 |

    121 |

    122 |

    123 |

    124 |
  • 125 |
  • 126 |

    队伍排名

    127 |

    最大人数

    128 |

    队伍实力

    129 |

    队伍人数

    130 |

    队员1人

    131 |

    队员2人

    132 |

    队员3人

    133 |

    队员4人

    134 |

    封号状态 135 |

    136 |

    禁言状态 137 |

    138 |
  • 139 |
  • 140 |

    主穴

    141 |

    腿穴

    142 |

    奇门穴

    143 |

    境界

    144 |

    大殿

    145 |

    闭关

    146 |

    药园

    147 |

    药房

    148 |

    酒楼

    149 |

    铁匠铺

    150 |
  • 151 |
  • 152 |

    创建日期

    153 |

    最后登录

    154 |

    最后登出

    155 |

    扫荡点

    156 |

    VIP

    157 |

    银两

    158 |

    元宝

    159 |

    学点

    160 |

    体力

    161 |

    经验

    162 |

    修为

    163 |

    药材

    164 |
    165 |
  • 166 |
167 |
168 |
169 | 170 | 171 | 172 | -------------------------------------------------------------------------------- /include/table_record_string.hrl: -------------------------------------------------------------------------------- 1 | [{"activity_task", 2 | ["`id`","`uid`","`tableId`","`state`","`num`","`completeNum`"]}, 3 | {"acu", 4 | ["`id`","`uid`","`gangMainLv`","`gangMinorLv`","`footMainLv`", 5 | "`footMinorLv`","`hideMainLv`","`hideMinorLv`","`magicMainLv`", 6 | "`magicMinorLv`"]}, 7 | {"answer_record", 8 | ["`id`","`uid`","`answerList`","`answerNum`","`totalNum`","`trueNum`", 9 | "`errorNum`","`flag`","`time`"]}, 10 | {"att_main_info",["`id`","`uid`","`attUid`","`time`"]}, 11 | {"attr", 12 | ["`uid`","`name`","`sex`","`txt`","`gangId`","`styleId`","`camp`", 13 | "`weaponStyle`","`lv`","`exp`","`gold`","`rmb`","`vit`","`ge`","`learn`", 14 | "`rank`","`teamRank`","`practice`","`strength`","`realm`","`realmExp`", 15 | "`teamNum`","`teamLv`","`teamStrength`","`guildId`","`downlineTime`", 16 | "`revise`","`addHp`","`drug`","`canPvpNum`","`manager`","`createTime`", 17 | "`onlineTime`","`friendPassNum`","`gagTime`","`vitBuyNum`","`sweepPoint`", 18 | "`canBuyPoint`","`closure`","`choice`","`platformId`","`refreshTime`"]}, 19 | {"bag",["`id`","`uid`","`size`"]}, 20 | {"boss",["`id`","`type`","`lv`"]}, 21 | {"boss_harm_list",["`id`","`uid`","`value`","`time`"]}, 22 | {"box_record", 23 | ["`id`","`uid`","`x`","`y`","`quality`","`type`","`typeId`","`num`", 24 | "`time`"]}, 25 | {"building",["`id`","`uid`","`type`","`lv`"]}, 26 | {"cdkey_used",["`id`","`uid`","`cdkey`"]}, 27 | {"current_instance", 28 | ["`id`","`uid`","`instanceId`","`mode`","`currentFight`","`dropList`"]}, 29 | {"daily_task", 30 | ["`id`","`uid`","`tableId`","`quality`","`currentSeat`","`num`","`task_1`", 31 | "`quality_1`","`isAccept_1`","`task_2`","`isAccept_2`","`quality_2`", 32 | "`task_3`","`isAccept_3`","`quality_3`","`task_4`","`isAccept_4`", 33 | "`quality_4`","`lostTime`","`freeNum`","`completeNum`","`toZeroTime`"]}, 34 | {"day_online_time",["`date`","`uid`","`platformId`","`time`","`logincount`"]}, 35 | {"debug_trace_info",["`id`","`debugTraceInfo`","`time`"]}, 36 | {"delete_temporary_item",["`id`","`uid`","`tableId`","`num`"]}, 37 | {"drug_buff",["`id`","`uid`","`itemId`","`drugId`","`time`"]}, 38 | {"drug_cost",["`id`","`uid`","`costId`","`num`","`drugNum`","`time`"]}, 39 | {"email", 40 | ["`id`","`uid`","`fromUid`","`receiveTime`","`title`","`info`","`appendix`", 41 | "`isRead`","`isGet`"]}, 42 | {"energe_record",["`id`","`uid`","`time`","`energe`"]}, 43 | {"energe_task", 44 | ["`id`","`uid`","`energeTask`","`prize1`","`prize2`","`prize3`","`prize4`"]}, 45 | {"equ", 46 | ["`id`","`uid`","`tableId`","`quality`","`maxHp`","`normalAtt`", 47 | "`magicAtt`","`normalDef`","`magicDef`","`rageAdd`","`agile`","`hit`", 48 | "`block`","`crit`","`addNum`","`teamAddNum`","`gem1`","`gem2`","`gem3`", 49 | "`gem4`","`gem5`","`isWear`","`state`","`time`","`star`"]}, 50 | {"equ_state", 51 | ["`id`","`uid`","`succinctTime`","`addTime`","`succinctNum`","`todayNum`"]}, 52 | {"fight_attr", 53 | ["`id`","`uid`","`maxHp`","`normalAtt`","`magicAtt`","`normalDef`", 54 | "`magicDef`","`maxRage`","`rageAdd`","`agile`","`crit`","`block`", 55 | "`blockDmg`","`hit`","`critDmg`","`style_1`","`style_2`","`style_3`", 56 | "`style_4`","`style_5`","`style_6`","`by_1`","`by_2`","`by_3`"]}, 57 | {"first_open_equ_treasure",["`id`","`uid`","`flag`","`time`"]}, 58 | {"friend", 59 | ["`id`","`uid_1`","`uid_2`","`intimacy`","`friendState`","`teamState`", 60 | "`joinTime`"]}, 61 | {"fun_open",["`id`","`uid`","`funList`"]}, 62 | {"ge_rank",["`rank`","`uid`","`value`"]}, 63 | {"gem_lv_up",["`id`","`uid`","`itemId`"]}, 64 | {"give_mate",["`uid`"]}, 65 | {"gm_log",["`id`","`uid`","`name`","`time`","`type`","`info`"]}, 66 | {"gold_cost", 67 | ["`id`","`uid`","`costId`","`num`","`goldNum`","`time`","`itemId`","`num1`", 68 | "`lvl`"]}, 69 | {"herbal_garden", 70 | ["`id`","`uid`","`farm`","`farmStartTime`","`farmHelpList`", 71 | "`farmStealList`","`treeNum`","`treeHelpList`","`treeHelpNum`", 72 | "`maxTreeHelpNum`","`farmerTime`","`farmerExp`","`farmerQuality`", 73 | "`farmerLv`","`clearTime`","`toCompleteNum`","`infoList`"]}, 74 | {"hotel", 75 | ["`id`","`uid`","`lostRefresh`","`recruitNum`","`openNum`","`freeNum`", 76 | "`role_1`","`food_1`","`state_1`","`time_1`","`role_2`","`food_2`", 77 | "`state_2`","`time_2`","`role_3`","`food_3`","`state_3`","`time_3`", 78 | "`role_4`","`food_4`","`state_4`","`time_4`","`role_5`","`food_5`", 79 | "`state_5`","`time_5`","`role_6`","`food_6`","`state_6`","`time_6`"]}, 80 | {"instance", 81 | ["`id`","`uid`","`instanceId`","`mode`","`modeScore_1`","`modeScore_2`", 82 | "`modeScore_3`"]}, 83 | {"item",["`id`","`uid`","`tableId`","`num`","`state`","`time`"]}, 84 | {"item_use_record",["`id`","`uid`","`tableId`","`useType`","`num`","`time`"]}, 85 | {"league", 86 | ["`id`","`leagueName`","`leagueLv`","`leagueExp`","`leagueNum`", 87 | "`leagueRank`","`leagueStrength`","`leagueWealth`","`leagueCharge`", 88 | "`leagueDebt`","`leaguePayTime`","`leagueState`","`leaguefeeFlag`", 89 | "`leagueCreateTime`","`leagueCreateUid`","`leagueBossUid`", 90 | "`leagueNotice`","`leaguebrief`","`leagueInfoState`","`fightState`", 91 | "`targetLeagueId`","`fightStartTime`","`fightEndTime`","`payWealth`", 92 | "`loseProTime`","`avoidProTime`","`avoidState`","`applyChallengeTime`"]}, 93 | {"league_building", 94 | ["`leagueId`","`normalBuildingList`","`guardBuildingList`"]}, 95 | {"league_contribute_cost", 96 | ["`id`","`uid`","`itemId`","`num`","`contribute`","`time`"]}, 97 | {"league_daily_task", 98 | ["`id`","`uid`","`tableId`","`quality`","`currentSeat`","`num`","`task_1`", 99 | "`quality_1`","`isAccept_1`","`task_2`","`isAccept_2`","`quality_2`", 100 | "`task_3`","`isAccept_3`","`quality_3`","`task_4`","`isAccept_4`", 101 | "`quality_4`","`lostTime`","`freeNum`","`completeNum`"]}, 102 | {"league_escort_record", 103 | ["`id`","`leagueId`","`uid`","`escortId`","`eventId`","`num`","`rmb`", 104 | "`completeNum`","`operationList`","`eventList`","`gridEventList`", 105 | "`rewardList`","`allEventList`","`time`"]}, 106 | {"league_fight",["`id`","`uid`","`fightState`","`targetLeagueId`"]}, 107 | {"league_fight_history", 108 | ["`id`","`leagueNameWin`","`leagueNameLose`","`time`"]}, 109 | {"league_guard",["`uid`","`feedNum`","`addHpNum`"]}, 110 | {"league_member", 111 | ["`id`","`uid`","`leagueId`","`leaguePay`","`currentPay`","`memberLv`", 112 | "`currentContribute`","`memberExp`","`memberContribute`", 113 | "`memberPosition`","`memberState`","`getPayState`","`applyLeagueTime`", 114 | "`joinLeagueTime`"]}, 115 | {"league_mine", 116 | ["`leagueId`","`mine_1`","`loseTime_1`","`mine_2`","`loseTime_2`", 117 | "`mine_3`","`loseTime_3`","`mine_4`","`loseTime_4`","`mine_5`", 118 | "`loseTime_5`"]}, 119 | {"league_record", 120 | ["`Id`","`leagueId`","`uid`","`uid1`","`uid2`","`type`","`type1`","`time`"]}, 121 | {"league_wealth_record", 122 | ["`id`","`leagueId`","`mineMoney`","`leagueWealth`","`buildingFee`", 123 | "`money`","`payWealth`","`finalLeagueWealth`","`time`"]}, 124 | {"league_wish_record", 125 | ["`Id`","`leagueId`","`uid`","`type`","`pay`","`time`"]}, 126 | {"learn", 127 | ["`id`","`uid`","`lostTime`","`refreshNum`","`getNum`","`learnTableVOId`", 128 | "`lostLearn`","`time`"]}, 129 | {"learn_cost",["`id`","`uid`","`costId`","`num`","`learnNum`","`time`"]}, 130 | {"leave_word", 131 | ["`id`","`uid`","`fromUid`","`fromName`","`sex`","`vipLv`","`Info`"]}, 132 | {"lineup", 133 | ["`id`","`uid`","`tableId`","`seat_1`","`seat_2`","`seat_3`","`seat_4`", 134 | "`seat_5`","`seat_6`","`seat_7`","`seat_8`","`seat_9`"]}, 135 | {"lineup_lose_hp",["`uid`","`teamUid`","`loseHp`"]}, 136 | {"lineup_use",["`id`","`uid`","`useId`"]}, 137 | {"location",["`id`","`uid`","`x`","`y`"]}, 138 | {"login",["`id`","`uid`","`dateList`","`signTime`","`continuationDays`"]}, 139 | {"login_ip_record", 140 | ["`id`","`uid`","`guid`","`platformId`","`ip`","`module`","`version`", 141 | "`manufacturer`","`time`"]}, 142 | {"lottery",["`lotteryTableId`","`num`"]}, 143 | {"lv_up_prize",["`uid`","`lvList`"]}, 144 | {"make_drug",["`id`","`uid`","`makeDrugId`"]}, 145 | {"mate_attr", 146 | ["`id`","`uid`","`mateId`","`lv`","`exp`","`loseHp`","`byRelationList`", 147 | "`num`","`isFight`","`skillId`","`skillLv`","`style1Lv`","`style2Lv`", 148 | "`style3Lv`","`style4lv`","`style5Lv`","`style6Lv`","`maxHp`", 149 | "`normalAttr`","`magicAttr`","`normalDef`","`magicDef`"]}, 150 | {"mate_equ", 151 | ["`id`","`uid`","`mateId`","`tableId`","`quality`","`addNum`","`isWear`", 152 | "`state`","`exp`","`totalExp`","`time`"]}, 153 | {"mate_equ_box_record", 154 | ["`id`","`uid`","`x`","`y`","`quality`","`type`","`typeId`","`num`", 155 | "`time`"]}, 156 | {"mate_equ_use",["`id`","`uid`","`tableId`","`useType`","`time`"]}, 157 | {"mate_fight_attr", 158 | ["`id`","`mateId`","`maxHp`","`normalAtt`","`magicAtt`","`normalDef`", 159 | "`magicDef`","`maxRage`","`rageAdd`","`agile`","`crit`","`block`", 160 | "`blockDmg`","`hit`","`critDmg`"]}, 161 | {"mate_layer",["`id`","`uid`","`mateId`","`layer`","`lv`"]}, 162 | {"mate_record",["`uid`","`mateId`","`handle`","`time`","`typeId`"]}, 163 | {"mate_recruit", 164 | ["`id`","`uid`","`time1`","`time2`","`time3`","`num`","`dayNum`"]}, 165 | {"mate_title", 166 | ["`id`","`uid`","`type`","`lv`","`exp`","`totalExp`","`state`","`time`"]}, 167 | {"mate_title_bag",["`id`","`uid`","`maxNum`"]}, 168 | {"mate_title_groove", 169 | ["`id`","`uid`","`mateId`","`groove1`","`groove2`","`groove3`","`groove4`", 170 | "`groove5`","`groove6`","`groove7`","`groove8`"]}, 171 | {"mate_title_use",["`id`","`uid`","`type`","`lv`","`useType`","`time`"]}, 172 | {"mate_type",["`id`","`uid`","`typeList`"]}, 173 | {"mate_will",["`id`","`uid`","`quality`","`num`","`time`"]}, 174 | {"mate_will_use",["`id`","`uid`","`quality`","`num`","`time`"]}, 175 | {"mine", 176 | ["`id`","`uid`","`hostUid`","`guardUid`","`first`","`levyTime`","`gold`", 177 | "`lostLevyTime`","`attTime`"]}, 178 | {"mine_reward",["`id`","`uid`","`gold`","`state`"]}, 179 | {"month_card", 180 | ["`uid`","`currentCard`","`startTime`","`getTimeList`","`cardMoney`"]}, 181 | {"new_year_prize",["`uid`","`num`"]}, 182 | {"online_prize",["`id`","`uid`","`prize`","`accPrize`","`timePrize`"]}, 183 | {"pharmacy",["`id`","`uid`","`drug`"]}, 184 | {"practice_rank",["`rank`","`uid`","`value`"]}, 185 | {"queue", 186 | ["`id`","`uid`","`building_1`","`lock_1`","`isOpen_1`","`buildingStart_1`", 187 | "`building_2`","`lock_2`","`isOpen_2`","`buildingStart_3`","`building_3`", 188 | "`lock_3`","`isOpen_3`","`buildingStart_2`","`skill_1`","`skillIsOpen_1`", 189 | "`skillStart_1`"]}, 190 | {"realm",["`id`","`uid`","`mainLv`","`minorLv`"]}, 191 | {"recharge_prize", 192 | ["`id`","`uid`","`num`","`time`","`day_1`","`day_2`","`day_3`","`day_4`", 193 | "`day_5`"]}, 194 | {"recharger_record", 195 | ["`id`","`uid`","`originalMoney`","`orderMoney`","`platformId`","`payId`", 196 | "`time`"]}, 197 | {"reg",["`id`","`uid`","`regX`","`regY`"]}, 198 | {"rmb_cost", 199 | ["`id`","`uid`","`costId`","`num`","`rmbNum`","`time`","`itemId`","`num1`", 200 | "`lvl`"]}, 201 | {"role_list",["`id`","`uid`","`roleId`","`lost`"]}, 202 | {"seller",["`id`","`uid`","`itemList`"]}, 203 | {"server_info", 204 | ["`name`","`ip`","`port`","`maxOnline`","`maxTime`","`startTime`", 205 | "`serverState`","`serverDec`","`maxPlayer`","`serverName`", 206 | "`serverDefault`"]}, 207 | {"server_state", 208 | ["`date`","`platformId`","`rmb`","`max`","`maxTime`","`min`","`minTime`", 209 | "`allOnline`","`hour_0`","`hour_1`","`hour_2`","`hour_3`","`hour_4`", 210 | "`hour_5`","`hour_6`","`hour_7`","`hour_8`","`hour_9`","`hour_10`", 211 | "`hour_11`","`hour_12`","`hour_13`","`hour_14`","`hour_15`","`hour_16`", 212 | "`hour_17`","`hour_18`","`hour_19`","`hour_20`","`hour_21`","`hour_22`", 213 | "`hour_23`","`payUser`","`allRmb`","`newPayUser`","`payUserInfo`", 214 | "`newUser`","`one`","`three`","`seven`","`onlineTime`","`m10`","`m30`", 215 | "`h1`","`h2`","`h3`","`h5`","`thanH5`","`lv`"]}, 216 | {"set_skill", 217 | ["`id`","`uid`","`skill_1`","`skill_2`","`skill_3`","`skill_4`","`skill_5`", 218 | "`skill_6`","`by_1`","`by_2`","`by_3`","`magic_1`","`magic_2`", 219 | "`magic_3`"]}, 220 | {"skill", 221 | ["`id`","`uid`","`tableId`","`skillLv`","`styleLv_1`","`styleLv_2`", 222 | "`styleLv_3`","`styleLv_4`","`styleLv_5`","`styleLv_6`","`studyNum`", 223 | "`addRate`"]}, 224 | {"skill_by",["`id`","`uid`","`tableId`","`lv`"]}, 225 | {"skill_magic",["`id`","`uid`","`tableId`","`lv`"]}, 226 | {"stest",["`test`"]}, 227 | {"str_info", 228 | ["`id`","`class`","`a`","`b`","`c`","`d`","`e`","`f`","`g`","`uid`"]}, 229 | {"strength_rank",["`rank`","`uid`","`value`"]}, 230 | {"sys_notic",["`id`","`beginTime`","`difTime`","`num`","`txt`"]}, 231 | {"target",["`id`","`uid`","`tableId`","`state`","`num`","`drop`"]}, 232 | {"task",["`id`","`uid`","`tableId`","`state`","`num_1`","`num_2`","`num_3`"]}, 233 | {"team_rank", 234 | ["`id`","`uid`","`rank`","`num`","`lostTime`","`lostAttTime`", 235 | "`nextRewardTime`","`isReward`","`rewardRank`","`buyNum`","`exercise`"]}, 236 | {"team_share", 237 | ["`id`","`uid`","`toUid`","`gold`","`exp`","`learn`","`year`","`month`", 238 | "`day`","`getNum`"]}, 239 | {"ticket",["`id`","`uid`","`ticket`","`type`","`time`","`isget`"]}, 240 | {"ticket_win",["`id`","`type`","`ticket`","`time`"]}, 241 | {"trace_info",["`id`","`traceInfo`","`time`"]}, 242 | {"uid_pass",["`uid`"]}, 243 | {"user_pack", 244 | ["`id`","`uid`","`packId`","`type`","`data`","`time`","`runTime`","`guid`"]}, 245 | {"vip", 246 | ["`id`","`uid`","`vipExp`","`isGiftGet`","`vipLv`","`getPrizeList`", 247 | "`vipRechargePrize`"]}, 248 | {"xw_global",["`teamRankRewardTime`","`regNum`"]}]. --------------------------------------------------------------------------------