92 lines
2.8 KiB
Markdown
92 lines
2.8 KiB
Markdown
# 房间座位数配置
|
||
|
||
本文定义房间创建和 App 修改房间资料时的座位数规则,以及后台“房间配置”的边界。
|
||
|
||
## 当前规则
|
||
|
||
- 固定候选座位数为 `10/15/20/25/30`。
|
||
- 后台只配置启用项和默认值,不允许新增候选数字。
|
||
- 默认配置为:启用 `10/15/20/25/30`,默认 `15`。
|
||
- 不使用 Redis 缓存。创建房间和修改房间资料是低频路径,`room-service` 每次直接读取 MySQL `room_seat_configs`,后台保存后立即生效。
|
||
|
||
## 数据表
|
||
|
||
`room_seat_configs` 是 App 级低频配置表:
|
||
|
||
| 字段 | 说明 |
|
||
| --- | --- |
|
||
| `app_code` | App 隔离键,当前默认 `lalu` |
|
||
| `allowed_seat_counts` | JSON 数组字符串,例如 `[10,15,20,25,30]` |
|
||
| `default_seat_count` | 创建房间不传 `seat_count` 或传 `0` 时使用 |
|
||
| `created_at_ms` / `updated_at_ms` | UTC epoch milliseconds |
|
||
|
||
`rooms.seat_count` 和 `room_list_entries.seat_count` 保存房间当前座位数;Room Cell 快照里的 `mic_seats` 是房间内麦位权威状态。
|
||
|
||
## 创建房间
|
||
|
||
`POST /api/v1/rooms/create` 的 `seat_count` 可省略:
|
||
|
||
- 不传或传 `0`:使用后台默认座位数,当前为 `15`。
|
||
- 传正数:必须命中后台启用座位数。
|
||
- 传负数或未启用数字:返回 `invalid_argument`。
|
||
|
||
创建成功会初始化对应数量的空麦位,并写入 `rooms`、snapshot、command log、outbox 和 `room_list_entries`。
|
||
|
||
## 修改房间资料
|
||
|
||
App 修改房间资料走:
|
||
|
||
```http
|
||
POST /api/v1/rooms/profile/update
|
||
```
|
||
|
||
请求:
|
||
|
||
```json
|
||
{
|
||
"room_id": "lalu_xxx",
|
||
"command_id": "cmd_profile_xxx",
|
||
"room_name": "房间标题",
|
||
"room_avatar": "https://cdn.example.com/room.png",
|
||
"room_description": "简介",
|
||
"seat_count": 20
|
||
}
|
||
```
|
||
|
||
规则:
|
||
|
||
- 只有当前在房间内的房主可以执行。
|
||
- `room_name`、`room_avatar`、`room_description`、`seat_count` 都是可选字段;只提交需要修改的字段。
|
||
- `seat_count` 必须是已启用正数,不能用 `0` 表示默认。
|
||
- 扩大座位数时追加连续空麦位。
|
||
- 缩小座位数时,高编号将被删除的麦位必须全部空闲、未锁、无发流会话;否则返回 `conflict`。
|
||
- 成功后返回 `result`、`room`、`seats`、`server_time_ms`,客户端可立即刷新房间信息和麦位列表。
|
||
- 成功命令写 `RoomProfileUpdated` outbox,并向 IM 发布 `room_profile_updated` 房间系统事件。
|
||
|
||
## 后台配置
|
||
|
||
后台“房间管理 / 房间配置”使用:
|
||
|
||
```http
|
||
GET /api/v1/admin/rooms/config
|
||
PUT /api/v1/admin/rooms/config
|
||
```
|
||
|
||
响应 DTO:
|
||
|
||
```json
|
||
{
|
||
"candidateSeatCounts": [10, 15, 20, 25, 30],
|
||
"allowedSeatCounts": [10, 15, 20, 25, 30],
|
||
"defaultSeatCount": 15,
|
||
"updatedAtMs": 1778000000000
|
||
}
|
||
```
|
||
|
||
权限:
|
||
|
||
| 权限码 | 说明 |
|
||
| --- | --- |
|
||
| `room-config:view` | 查看房间配置页面和接口 |
|
||
| `room-config:update` | 保存房间配置 |
|