Files
TakeoutSaaS.AdminApi/docs/permissions/announcement-permissions.md
MSuMshk 857f776447 feat: 实现完整的多租户公告管理系统
核心功能:
- 公告状态机(草稿/已发布/已撤销)支持发布、撤销和重新发布
- 发布者范围区分平台级和租户级公告
- 目标受众定向推送(全部租户/指定角色/指定用户)
- 平台管理、租户管理和应用端查询API
- 已读/未读管理和未读统计

技术实现:
- CQRS+DDD架构,清晰的领域边界和事件驱动
- 查询性能优化:数据库端排序和限制,估算策略减少内存占用
- 并发控制:修复RowVersion配置(IsRowVersion→IsConcurrencyToken)
- 完整的FluentValidation验证器和输入保护

测试验证:
- 36个测试全部通过(27单元+9集成)
- 性能测试达标(1000条数据<5秒)
- 代码质量评级A(优秀)

文档:
- 完整的ADR、API文档和迁移指南
- 交付报告和技术债务记录
2025-12-20 19:57:09 +08:00

50 lines
1.9 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 公告权限清单
> 最后更新日期2025-12-20
本文档列出公告管理新增权限,并说明默认授权对象与角色映射。
## 权限列表
| 权限码 | 用途 | 作用域 | 默认授权对象 |
| --- | --- | --- | --- |
| `platform-announcement:create` | 创建/查询/更新平台公告 | 平台 | 平台超级管理员角色(由迁移脚本授予) |
| `platform-announcement:publish` | 发布平台公告 | 平台 | 平台超级管理员角色(由迁移脚本授予) |
| `platform-announcement:revoke` | 撤销平台公告 | 平台 | 平台超级管理员角色(由迁移脚本授予) |
| `tenant-announcement:publish` | 发布租户公告 | 租户 | 超级管理员角色(由迁移脚本授予),租户自定义角色需手动授权 |
| `tenant-announcement:revoke` | 撤销租户公告 | 租户 | 超级管理员角色(由迁移脚本授予),租户自定义角色需手动授权 |
> 说明:租户公告的 `create/read/update/delete` 权限为既有权限,本次新增主要是发布与撤销。
## 角色映射(默认迁移)
迁移 `20251220183000_GrantAnnouncementPermissionsToSuperAdmin` 会为以下角色分配上述权限:
- `super-admin`
- `SUPER_ADMIN`
- `PlatformAdmin`
- `platform-admin`
```mermaid
flowchart LR
Role[平台超级管理员角色] --> P1[platform-announcement:create]
Role --> P2[platform-announcement:publish]
Role --> P3[platform-announcement:revoke]
Role --> P4[tenant-announcement:publish]
Role --> P5[tenant-announcement:revoke]
```
## 授权示例
如需为租户角色授予权限,可通过管理端或 SQL
```sql
INSERT INTO role_permissions ("TenantId", "RoleId", "PermissionId")
SELECT 100000000000000001, 900000000000000001, p."Id"
FROM permissions p
WHERE p."TenantId" = 100000000000000001
AND p."Code" IN ('tenant-announcement:publish', 'tenant-announcement:revoke');
```
> 建议在权限变更后刷新相关缓存或重新登录以生效。