1.优化充值跳转链接的问题

2.优化后台渠道管理页面的显示样式
This commit is contained in:
2026-05-30 14:37:46 +08:00
parent 15b9313c07
commit 1cdd597879
19 changed files with 1096 additions and 180 deletions

View File

@@ -138,7 +138,7 @@
### 3.3 注意
`channel` 不承担子代理树结构;子代理层级与邀请码归属下沉到 `admin`。渠道列表**只读范围**:超管、所属角色组均未绑定 `channel_id`、或拥有 `channel/viewAllChannels` 时可查看全平台渠道;否则仅绑定渠道或本人 `admin.channel_id`。详见 `docs/渠道管理后台说明.md`
`channel` 不承担子代理树结构;子代理层级与邀请码归属下沉到 `admin`。渠道列表范围:超管不限;绑定 `channel_id` → 仅对应渠道;均未绑定且拥有渠道模块基础权限(`channel/index``edit` 等)→ 全平台可读可写。详见 `docs/渠道管理后台说明.md`
---

View File

@@ -24,11 +24,11 @@ List filters: **All / With balance / No balance / Enabled only / Disabled only**
`AdminChannelScopeService` applies to list and stats:
**Bound channel wins** (only those channels) if `admin.channel_id` > 0 and/or any role group has `channel_id` — even with `viewAllChannels`.
**Bound channel** (read + write): `admin.channel_id` and/or any role group `channel_id` → only those channels.
**Global read** only when: super admin, **or** no channel binding on account and all groups **and** `viewAllChannels`.
**All channels** (read + write): super admin, **or** no channel binding **and** any channel module permission (`channel/index`, `channel/edit`, etc.).
**Write** (add/edit/delete/manual settle DB) stays on **writable** channels only; `viewAllChannels` does not expand write scope.
**No access**: unbound and no channel module permissions → empty list.
---
@@ -36,12 +36,11 @@ List filters: **All / With balance / No balance / Enabled only / Disabled only**
| Node | Label | Behavior |
|------|-------|----------|
| `channel/viewAllChannels` | View all channels | Global read scope |
| `channel/viewDividendRecords` | Paid dividend records | Top card + dialog |
| `channel/viewDirectBetRecords` | Direct bet records | Direct bet column click |
| `channel/viewSettlementBetRecords` | Settlement-scope bets | Row action |
| `channel/manualSettle` | Manual settle | Preview + submit (readable channel) |
| `channel/batchSettlePending` | Batch settle | **Super admin only** |
| `channel/batchSettlePending` | Batch settle | Writable enabled channels in scope |
Re-login after role changes to refresh `authNode`.

View File

@@ -50,7 +50,7 @@ If a sub-agent has further downline, the same rules apply on **their received am
| Channel commission params | `/admin/channel` | `agent_mode`, turnover/affiliate rates, etc.; see [channel-admin-guide.md](./channel-admin-guide.md) |
| Agent tree & share rates | `/admin/auth/admin` | Tree list; parent agent, share rate, channel |
| Channel filter | Admin list common search | Super admin can filter by channel |
| Channel list read scope | `/admin/channel` | Super admin / unbound groups / `viewAllChannels` → all channels read-only |
| Channel list scope | `/admin/channel` | Super admin / unbound + channel module perms → all channels; bound → bound channels only |
| Visibility | Admin list | Nonsuper admin sees **self + all downline** only |
| Settlement | `/admin/channel` manual / cron | Super admin **or** `channel/manualSettle`; batch still super admin only |

View File

@@ -50,7 +50,7 @@
| 渠道分红参数 | `/admin/channel` | `agent_mode`、返水/联营比例、结算周期等;详见 [渠道管理后台说明.md](./渠道管理后台说明.md) |
| 代理树与分红比例 | `/admin/auth/admin` | 树形列表;配置上级代理、分红比例、渠道归属 |
| 渠道筛选 | 管理员列表公共搜索 | 超管可按渠道筛选 |
| 渠道列表可见范围 | `/admin/channel` | 账号或角色组绑定渠道 → 仅该渠道;未绑定且 `viewAllChannels` → 全平台;超管不限 |
| 渠道列表可见范围 | `/admin/channel` | 绑定渠道 → 仅该渠道;未绑定且有渠道模块权限 → 全平台;超管不限 |
| 数据可见范围 | 管理员列表 | 非超管仅见 **本人 + 全部下级**,不见其他代理线 |
| 结算执行 | `/admin/channel` 手动结算 / 定时任务 | **超管**或 `channel/manualSettle`(渠道可读);批量结算仍仅超管;结算即发放至 `admin_wallet` |

View File

@@ -33,17 +33,17 @@
上述情况合并去重后作为可读渠道 ID 列表。
**全平台只读**仅当同时满足):
**全平台渠道范围**读、写一致,须同时满足):
| 条件 | 说明 |
|------|------|
| 超管 | 权限含 `*` |
| 未绑定任何渠道 | 账号 `channel_id` 为空且所有角色组 `channel_id` 为空 |
| 且拥有「查看所有渠道」 | 按钮权限 `channel/viewAllChannels` |
| 且拥有渠道模块基础权限 | 如 `channel/index``channel/edit` 等(含渠道菜单或任一 `channel/*` 按钮) |
未绑定渠道且无 `viewAllChannels` 时,渠道列表为空。
未绑定渠道且无上述渠道权限时,渠道列表为空。
**写操作**新增/编辑/删除渠道、手动结算写库)仍限制在**可写渠道**:角色组绑定渠道 + 账号 `channel_id`**不**因「查看所有渠道」而扩大写范围
**读、写范围一致**:绑定渠道 → 仅绑定渠道;未绑定且有渠道模块权限 → 全部渠道(含新增/编辑/删除/手动结算写库)。
其它菜单(用户、充值/提现订单、游玩记录、控制台等)在只读全平台时同样可不按 `admin_id` 收窄,逻辑与 `Backend::hasGlobalReadScope()` 一致。
@@ -62,12 +62,11 @@
| 按钮权限节点 | 名称 | 行为 |
|--------------|------|------|
| `channel/index` | 查看 | 列表与详情 |
| `channel/viewAllChannels` | 查看所有渠道 | 扩大**只读**范围至全平台渠道 |
| `channel/viewDividendRecords` | 查看已分红记录 | 顶部「已分红金额」卡片与弹窗 |
| `channel/viewDirectBetRecords` | 查看直属投注记录 | 「直属投注额」列点击 |
| `channel/viewSettlementBetRecords` | 查看总投注金额 | 操作列;分红口径已结算注单 |
| `channel/manualSettle` | 手动结算 | 操作列;预览并提交渠道结算(见 §5 |
| `channel/batchSettlePending` | 一键批量结算 | **仅超管**可见;结算全部待结算渠道 |
| `channel/batchSettlePending` | 一键批量结算 | 批量结算当前账号**可写范围**内启用渠道 |
| `channel/add` / `edit` / `del` | 增删改 | 须对目标渠道具备写权限 |
角色组在 **权限管理 → 角色组** 中勾选对应按钮;保存后管理员需**重新登录**以刷新前端 `authNode`
@@ -80,7 +79,9 @@
- **权限**:超管,或拥有 `channel/manualSettle` 且目标渠道在**可读范围**内
- **逻辑**:与超管结算相同,调用 `ChannelSettlementService::settleBySuperAdmin`,结算即按代理树发放至 `admin_wallet`
- **周期**:上次结算结束时间 ~ 当前时间;金额来自期内 **已结算** 游玩记录(`game_play_record.status = 2`
- **批量**`POST /admin/channel/batchSettlePending` 仍**仅超管**
- **手续费**:渠道字段 `settlement_handling_fee` 为默认**手续费比例(%)**;计算公式:手续费金额 = 费前佣金 × 比例 / 100预览弹窗可按代理修改比例提交时 `commission_split[].handling_fee_rate` 回传;实发 = 费前佣金 手续费金额,记录表 `handling_fee` 存扣除金额
- **分配预览**:按代理树先序展示,列含层级缩进、**结算基数**(上级分给该代理的金额)、分配比例、费前佣金、手续费、实发佣金
- **批量**`POST /admin/channel/batchSettlePending``channel/batchSettlePending`;仅结算当前账号可写范围内启用渠道
---
@@ -139,7 +140,7 @@
| GET | `/admin/channel/dividendRecordList` | 已分红记录 |
| GET | `/admin/channel/manualSettlePreview` | 手动结算预览 |
| POST | `/admin/channel/manualSettle` | 提交手动结算 |
| POST | `/admin/channel/batchSettlePending` | 超管批量结算 |
| POST | `/admin/channel/batchSettlePending` | 批量结算(可写渠道范围) |
---
@@ -162,3 +163,4 @@
| 2026-05-30 | 新增:查看所有渠道、下注/分红查看按钮;下注记录弹窗列与筛选;移动端弹窗适配 |
| 2026-05-30 | 手动结算:拥有 `channel/manualSettle` 且渠道可读即可操作(不再仅限超管展示按钮) |
| 2026-05-30 | 修复:账号已设 `channel_id` 时不再因角色组未绑渠道而误判为全平台可见 |
| 2026-05-30 | 移除 `channel/viewAllChannels`;未绑定渠道且拥有渠道模块基础权限时读写全平台渠道 |