6.7 KiB
6.7 KiB
渠道管理后台说明
1. 文档目的
说明 渠道管理(/admin/channel)页面的统计卡片、列表数据范围、操作按钮权限、下注记录弹窗与相关接口,便于运营配置权限与开发联调。
分红计算与代理树拆分口径见 分红说明文档.md。
2. 页面入口与统计卡片
| 卡片 | 说明 |
|---|---|
| 渠道总数 | 当前账号可读范围内渠道数量 |
| 启用渠道 | status = 1 的渠道数 |
| 待分红渠道 | carryover_balance > 0 的渠道数 |
| 待分红总额 | 上述渠道 carryover_balance 合计 |
| 已分红金额 | 可读范围内渠道下,已发放佣金(agent_commission_record.status = 1)合计;可点击打开已分红记录弹窗(需 viewDividendRecords 权限) |
列表上方筛选:全部 / 有分红余额 / 无分红余额 / 仅启用 / 仅停用(前端 search 条件,不改变数据范围规则)。
3. 数据可见范围(只读)
由 app/common/service/AdminChannelScopeService.php 统一判定,列表与统计均遵守:
| 条件(满足任一即全平台渠道可读) | 说明 |
|---|---|
| 超管 | 权限含 * |
角色组均未绑定 channel_id |
该管理员所属角色组 admin_group.channel_id 均为空 |
| 拥有「查看所有渠道」 | 按钮权限 channel/viewAllChannels |
否则仅可读:
- 角色组绑定的
channel_id集合,或 - 本人
admin.channel_id(若 > 0),或 - 无绑定且无账号渠道时返回空列表。
写操作(新增/编辑/删除渠道、手动结算写库)仍限制在可写渠道:角色组绑定渠道 + 账号 channel_id,不因「查看所有渠道」而扩大写范围。
其它菜单(用户、充值/提现订单、游玩记录、控制台等)在只读全平台时同样可不按 admin_id 收窄,逻辑与 Backend::hasGlobalReadScope() 一致。
4. 列表字段与操作
4.1 常用列
- 渠道标识、名称、代理模式、联营负结转、契约编号、结算周期等
- 直属投注额:该渠道下
game_play_record投注合计;可点击打开直属下注记录弹窗(需viewDirectBetRecords) - 操作列:查看总投注金额、手动结算、编辑、删除(后两者受写权限约束)
4.2 操作按钮权限
| 按钮权限节点 | 名称 | 行为 |
|---|---|---|
channel/index |
查看 | 列表与详情 |
channel/viewAllChannels |
查看所有渠道 | 扩大只读范围至全平台渠道 |
channel/viewDividendRecords |
查看已分红记录 | 顶部「已分红金额」卡片与弹窗 |
channel/viewDirectBetRecords |
查看直属投注记录 | 「直属投注额」列点击 |
channel/viewSettlementBetRecords |
查看总投注金额 | 操作列;分红口径已结算注单 |
channel/manualSettle |
手动结算 | 操作列;预览并提交渠道结算(见 §5) |
channel/batchSettlePending |
一键批量结算 | 仅超管可见;结算全部待结算渠道 |
channel/add / edit / del |
增删改 | 须对目标渠道具备写权限 |
角色组在 权限管理 → 角色组 中勾选对应按钮;保存后管理员需重新登录以刷新前端 authNode。
5. 手动结算
- 接口:
GET /admin/channel/manualSettlePreview?id={channelId}、POST /admin/channel/manualSettle - 权限:超管,或拥有
channel/manualSettle且目标渠道在可读范围内 - 逻辑:与超管结算相同,调用
ChannelSettlementService::settleBySuperAdmin,结算即按代理树发放至admin_wallet - 周期:上次结算结束时间 ~ 当前时间;金额来自期内 已结算 游玩记录(
game_play_record.status = 2) - 批量:
POST /admin/channel/batchSettlePending仍仅超管
6. 下注记录弹窗
两种入口共用同一套 UI 与筛选(接口不同):
| 入口 | 接口 | 数据范围 |
|---|---|---|
| 直属投注额 | GET /admin/channel/directBetRecordList |
该渠道全部游玩记录 |
| 查看总投注金额 | GET /admin/channel/settlementBetRecordList |
该渠道 已结算 记录(status = 2,参与分红口径) |
6.1 顶部统计(Card)
- 总笔数、总投注额、总中奖额(随筛选条件重算)
6.2 列表列
游戏期号、玩家名、渠道、选号、中奖号码、中奖状态(已中奖 / 未中奖 / 待开奖)、投注金额、玩家中奖金额(含 jackpot_extra_amount)。
6.3 筛选参数(GET)
| 参数 | 说明 |
|---|---|
channel_id |
必填 |
page / limit |
分页,默认 1 / 20,最大 200 |
period_no |
期号模糊(pr.period_no 或 game_record.period_no) |
user_keyword |
玩家名或手机号模糊 |
result_number |
开奖号码精确匹配 |
pick_number |
选号模糊(匹配 pick_numbers JSON 文本) |
win_hit |
won / lost / pending(与列表中奖状态一致) |
6.4 移动端适配
- 弹窗宽度约 92% 视口,内容区可纵向滚动(勿使用
ba-operate-dialog固定高度) - 统计 Card 一行三列;筛选项纵向铺满;表格区域可横向滑动
7. 已分红记录弹窗
- 接口:
GET /admin/channel/dividendRecordList - 权限:
channel/viewDividendRecords - 字段:结算单号、渠道名、代理账号、分红金额、结算周期、发放时间等
8. 相关接口一览
| 方法 | 路径 | 说明 |
|---|---|---|
| GET | /admin/channel/index |
渠道列表 |
| GET | /admin/channel/settleStats |
顶部统计卡片 |
| GET | /admin/channel/directBetRecordList |
直属下注记录 |
| GET | /admin/channel/settlementBetRecordList |
分红口径下注记录 |
| GET | /admin/channel/dividendRecordList |
已分红记录 |
| GET | /admin/channel/manualSettlePreview |
手动结算预览 |
| POST | /admin/channel/manualSettle |
提交手动结算 |
| POST | /admin/channel/batchSettlePending |
超管批量结算 |
9. 相关代码
| 模块 | 路径 |
|---|---|
| 渠道控制器 | app/admin/controller/Channel.php |
| 数据范围 | app/common/service/AdminChannelScopeService.php |
| 渠道结算 | app/common/service/ChannelSettlementService.php |
| 前端页面 | web/src/views/backend/channel/index.vue |
| 权限迁移 | database/migrations/20260530120000_*、20260530130000_* |
10. 变更记录
| 日期 | 说明 |
|---|---|
| 2026-05-30 | 新增:查看所有渠道、下注/分红查看按钮;下注记录弹窗列与筛选;移动端弹窗适配 |
| 2026-05-30 | 手动结算:拥有 channel/manualSettle 且渠道可读即可操作(不再仅限超管展示按钮) |