基础路径:
/admin
鉴权:请求头携带管理员 JWT(admin.jwt中间件)
统一响应:
{
"code": 0,
"timestamp": 1785900000,
"msg": "OK",
"data": {}
}
code !== 0 时 msg 为错误信息,data 可能为空。
onlineSummary)前端两个 Tab 对应两个接口(后端无 tab 参数,由前端 Tab 切换调用不同 URL)。
| 前端 Tab | 建议 tab 值(前端自用) | 接口 |
|---|---|---|
| 在线用户 | online |
GET /admin/online/users |
| 新用户汇总 | newUser |
GET /admin/online/newUserSummary |
URL
GET /admin/online/users
说明
当前在线会员列表。在线判定满足其一即可:
user_session(expire_time > 当前 unix 时间)last_active_time 为有效 unix 时间戳,且在最近 30 分钟 内排除虚拟游客(from = 2)。
关联该用户最近一次成功登录日志,填充 IP、位置、登录网站、平台、浏览器、系统、登入时间。
请求参数(Query)
| 参数 | 类型 | 必填 | 默认 | 说明 |
|---|---|---|---|---|
page |
int | 否 | 1 |
页码,≥1 |
limit |
int | 否 | 15 |
每页条数,1~200 |
member_id |
string | 否 | - | 会员 ID(匹配 member_id 或 user_id) |
first_name |
string | 否 | - | 会员昵称,模糊匹配 |
login_ip |
string | 否 | - | IP,模糊匹配最近登录 IP |
platform |
string | 否 | - | 平台:PC / Android / iOS / WeChat;空或「全部」表示不限 |
请求示例
GET /admin/online/users?page=1&limit=15&member_id=&first_name=&login_ip=&platform=
返回 data
| 字段 | 类型 | 说明 |
|---|---|---|
total |
int | 总条数 |
data |
array | 列表 |
data[] 列表项
| 字段 | 类型 | 前端列名 | 说明 |
|---|---|---|---|
member_id |
string | 会员ID | 优先 member_id,否则 user_id |
first_name |
string | 会员昵称 | |
available_balance |
number | 账户余额 | 主钱包可用余额 |
login_ip |
string | IP地址 | 最近一次成功登录 IP |
location |
string | 位置 | 登录时写入的国家/地区(country) |
login_domain |
string | 登录网站 | 登录时 Referer/Origin 主机 |
platform |
string | 平台 | PC / Android / iOS / WeChat |
browser |
string | 浏览器 | |
os |
string | 操作系统 | |
login_time |
string | 登入时间 | Y-m-d H:i:s,最近一次成功登录时间 |
last_active_time |
string | (扩展) | 最后活跃时间 Y-m-d H:i:s |
返回示例
{
"code": 0,
"timestamp": 1785900000,
"msg": "OK",
"data": {
"total": 2,
"data": [
{
"member_id": "10001",
"first_name": "test01",
"available_balance": 1250.5,
"login_ip": "1.2.3.4",
"location": "中国 广东 深圳",
"login_domain": "www.example.com",
"platform": "PC",
"browser": "Chrome(120.0.0)",
"os": "Windows 10/11",
"login_time": "2026-08-05 10:20:30",
"last_active_time": "2026-08-05 10:20:30"
}
]
}
}
URL
GET /admin/online/newUserSummary
说明
按「注册日」汇总新用户指标。区间内集合查询,按天返回。
业务口径
| 指标 | 规则 |
|---|---|
| H5 / APP 注册 | 按 register_domain:包名风格(如 com.xxx.yyy)计 APP,否则 H5 |
| H5/APP 首存次数 | 该日新注册用户中,历史首次正充值发生在注册当日的人数 |
| 活跃会员 | 该日新注册,且注册当日下注合计 ≥ ¥50 的人数 |
| 有效会员 | 该日新注册,且注册当日存款合计 ≥ ¥50 的人数 |
| 存款总额 | 该日新注册用户在注册当日的充值合计 |
| 下注总数 | 该日新注册用户在注册当日的投注合计(绝对值) |
| 公司盈利 | 该日新注册用户当日:投注额 − 派奖(中奖) |
请求参数(Query)
| 参数 | 类型 | 必填 | 默认 | 说明 |
|---|---|---|---|---|
start_time |
string | 否 | 结束日往前 6 天 | 开始日期 Y-m-d |
end_time |
string | 否 | 今天 | 结束日期 Y-m-d,≥ start_time |
请求示例
GET /admin/online/newUserSummary?start_time=2026-08-01&end_time=2026-08-05
返回 data
| 字段 | 类型 | 说明 |
|---|---|---|
start_time |
string | 实际查询开始日 |
end_time |
string | 实际查询结束日 |
rules |
object | 规则文案 |
rules.active_member |
string | 活跃会员说明 |
rules.valid_member |
string | 有效会员说明 |
data |
array | 按天列表(含区间内无数据的日期,值为 0) |
data[] 列表项
| 字段 | 类型 | 前端列名 | 说明 |
|---|---|---|---|
date |
string | 时间 | 日期 Y-m-d |
h5_register |
int | H5注册 | |
app_register |
int | APP注册 | |
h5_first_deposit |
int | H5首存次数 | |
app_first_deposit |
int | APP首存次数 | |
active_member |
int | 活跃会员 | |
deposit_total |
number | 存款总额 | |
bet_total |
number | 下注总数 | |
company_profit |
number | 公司盈利 | 投注 − 派奖 |
valid_member |
int | 有效会员 |
返回示例
{
"code": 0,
"data": {
"start_time": "2026-08-01",
"end_time": "2026-08-05",
"rules": {
"active_member": "新注册会员当日下注>=¥50",
"valid_member": "新注册会员当日存款>=¥50"
},
"data": [
{
"date": "2026-08-01",
"h5_register": 45,
"app_register": 32,
"h5_first_deposit": 28,
"app_first_deposit": 20,
"active_member": 35,
"deposit_total": 28500,
"bet_total": 156000,
"company_profit": 8200,
"valid_member": 30
}
]
}
}
registerDomain)前端两个 Tab 对应两个接口(后端无 tab 参数)。
| 前端 Tab | 建议 tab 值(前端自用) | 接口 |
|---|---|---|
| 走势图 | trend |
GET /admin/user/registerTrend |
| 域名统计 | domain |
GET /admin/user/registerDomain |
URL
GET /admin/user/registerTrend
说明
type=today:按小时统计指定日(默认今天)注册量type=all:按天统计区间内注册量两条序列:
from != 2from = 2(游客等)请求参数(Query)
| 参数 | 类型 | 必填 | 默认 | 说明 |
|---|---|---|---|---|
type |
string | 否 | today |
today:按小时;all:按天 |
start_time |
string | 否 | 今天 | Y-m-d。today 时表示统计哪一天;all 时为区间起点 |
end_time |
string | 否 | 今天 | Y-m-d,仅 type=all 时有效,须 ≥ start_time |
请求示例
# 今日(按小时)
GET /admin/user/registerTrend?type=today
# 指定日按小时
GET /admin/user/registerTrend?type=today&start_time=2026-08-04
# 区间按天
GET /admin/user/registerTrend?type=all&start_time=2026-08-01&end_time=2026-08-05
返回 data(type=today)
| 字段 | 类型 | 说明 |
|---|---|---|
type |
string | today |
date |
string | 统计日 |
times |
string[] | 时间轴,00:00~23:00 共 24 点 |
member |
int[] | 与 times 对齐的正式会员新增 |
virtual |
int[] | 与 times 对齐的虚拟会员新增 |
member_total |
int | 当日正式会员合计 |
virtual_total |
int | 当日虚拟会员合计 |
返回 data(type=all)
| 字段 | 类型 | 说明 |
|---|---|---|
type |
string | all |
start_time |
string | 区间开始 |
end_time |
string | 区间结束 |
times |
string[] | 日期轴 Y-m-d |
member |
int[] | 正式会员每日新增 |
virtual |
int[] | 虚拟会员每日新增 |
member_total |
int | 区间正式会员合计 |
virtual_total |
int | 区间虚拟会员合计 |
返回示例(今日)
{
"code": 0,
"data": {
"type": "today",
"date": "2026-08-05",
"times": ["00:00", "01:00", "02:00"],
"member": [3, 1, 0],
"virtual": [0, 0, 1],
"member_total": 120,
"virtual_total": 30
}
}
前端图表:
timesmembervirtualURL
GET /admin/user/registerDomain
说明
按注册时写入的 register_domain(Referer/Origin 主机)聚合注册人数(不是登录人数)。
空域名归为「未知」。
请求参数(Query)
| 参数 | 类型 | 必填 | 默认 | 说明 |
|---|---|---|---|---|
start_time |
string | 否 | - | 注册开始日 Y-m-d 00:00:00 |
end_time |
string | 否 | - | 注册结束日 Y-m-d 23:59:59 |
page |
int | 否 | 1 |
页码 |
limit |
int | 否 | 50 |
每页条数,1~200 |
请求示例
GET /admin/user/registerDomain?start_time=2026-07-06&end_time=2026-08-04&page=1&limit=50
返回 data
| 字段 | 类型 | 说明 |
|---|---|---|
total |
int | 域名分组总数 |
data |
array | 当前页列表,按注册人数降序 |
data[] 列表项
| 字段 | 类型 | 前端列名 | 说明 |
|---|---|---|---|
register_url |
string | 注册网址 | 域名主机;空为「未知」 |
register_count |
int | 注册人数 | 该域名下注册用户数 |
返回示例
{
"code": 0,
"data": {
"total": 6,
"data": [
{ "register_url": "www.example.com", "register_count": 156 },
{ "register_url": "com.example.app", "register_count": 89 },
{ "register_url": "未知", "register_count": 12 }
]
}
}
onlineSummary| tab(前端) | 文案 | Method | Path |
|---|---|---|---|
online |
在线用户 | GET | /admin/online/users |
newUser |
新用户汇总 | GET | /admin/online/newUserSummary |
registerDomain| tab(前端) | 文案 | Method | Path |
|---|---|---|---|
trend |
走势图 | GET | /admin/user/registerTrend |
domain |
域名统计 | GET | /admin/user/registerDomain |
说明:
tab仅建议前端路由/状态使用,后端接口不接收、也不校验tab参数。
| 数据 | 来源 | 说明 |
|---|---|---|
| 登录 IP / 浏览器 / 系统 / 平台 / 登录网站 / 位置 | 登录时写入 user_login |
需 melbet 登录日志逻辑已发布;历史数据可能为空 |
| 注册域名 | 注册时写入 users.register_domain |
来自 Referer/Origin;历史用户多为「未知」 |
| 在线状态 | user_session + last_active_time |
以有效 session 为主,30 分钟活跃为辅 |
| 首存 / 下注 / 存款 | balance_logs |
依赖 change_type 文案匹配(充值/投注/中奖等) |
| 菜单 | 前端 uri | 按钮/接口权限 uri |
|---|---|---|
| 在线汇总 | onlineSummary |
admin/online/users、admin/online/newUserSummary |
| 注册/域名统计 | registerDomain |
admin/user/registerTrend、admin/user/registerDomain |