feat: 租户账单公告通知接口

This commit is contained in:
2025-12-03 21:08:28 +08:00
parent 075906266a
commit 9fe7d9606d
47 changed files with 1522 additions and 4 deletions

View File

@@ -12,8 +12,8 @@
- 已交付:新增模板目录 `RoleTemplateProvider``src/Application/TakeoutSaaS.Application/Identity/Templates`),提供四个预置角色与权限定义;应用层新增模板列表/详情查询、复制与租户批量初始化命令Handlers 位于 `src/Application/TakeoutSaaS.Application/Identity/Handlers`)。管理端 `RolesController` 暴露模板列表、详情、按模板复制、批量初始化端点(`src/Api/TakeoutSaaS.AdminApi/Controllers/RolesController.cs`),复制时自动补齐缺失权限并保留租户自定义授权。
- [x] 配额与套餐TenantPackage CRUD、订阅/续费/配额校验(门店/账号/短信/配送单量),超额返回 409 并记录 TenantQuotaUsage。
- 已交付:新增套餐仓储与命令/查询/DTO`src/Application/TakeoutSaaS.Application/App/Tenants`Admin 端新增 `TenantPackagesController` 提供套餐列表/详情/创建/更新/删除接口。新增配额校验命令与租户接口 `/api/admin/v1/tenants/{id}/quotas/check`,基于当前订阅套餐限额校验并占用配额,超额抛出 409 并写入 `TenantQuotaUsage`。仓储注册于 `AddAppInfrastructure`
- [ ] 租户运营面板:欠费/到期告警、账单列表、公告通知接口,支持已读状态并在 Admin UI 展示。
- 当前:`SystemParametersController` 仅负责普通参数 CRUD`src/Api/TakeoutSaaS.AdminApi/Controllers/SystemParametersController.cs:15-104`),未包含租户账单、公告或通知接口
- [x] 租户运营面板:欠费/到期告警、账单列表、公告通知接口,支持已读状态并在 Admin UI 展示。
- 已交付:新增账单/公告/通知实体与仓储Admin 端提供 `/tenants/{id}/billings`(列表/详情/创建/标记支付)、`/announcements`(列表/详情/创建/更新/删除/已读)、`/notifications`(列表/已读)端点;权限码补充 `tenant-bill:*``tenant-announcement:*``tenant-notification:*`,种子模板更新;配额/订阅告警可通过通知表承载
- [ ] 门店管理Store/StoreBusinessHour/StoreDeliveryZone/StoreHoliday CRUD 完整,含 GeoJSON 配送范围及能力开关。
- [ ] 桌码管理:批量生成桌码、绑定区域/容量、导出二维码 ZIPPOST /api/admin/stores/{id}/tables 可下载)。
- [ ] 员工排班:创建员工、绑定门店角色、维护 StoreEmployeeShift可查询未来 7 日排班。

View File

@@ -8,14 +8,14 @@
- **鉴权**JWT + RBAC`[Authorize]` + `PermissionAuthorize`),必须带租户头 `X-Tenant-Id/Code`
- **路由前缀**`api/admin/v{version}/...`
- **DTO/约束**:仅管理字段,禁止返回 C 端敏感信息long -> string严禁实体直接返回。
- **现有控制器**`AuthController``DeliveriesController``DictionaryController``FilesController``MerchantsController``OrdersController``PaymentsController``PermissionsController``RolesController``StoresController``SystemParametersController``TenantPackagesController``TenantsController``UserPermissionsController``HealthController`
- **现有控制器**`AuthController``DeliveriesController``DictionaryController``FilesController``MerchantsController``OrdersController``PaymentsController``PermissionsController``RolesController``StoresController``SystemParametersController``TenantPackagesController``TenantsController``TenantBillingsController``TenantAnnouncementsController``TenantNotificationsController``UserPermissionsController``HealthController`
- **自检清单**
1. 是否需要权限/租户过滤?未加则补 `[Authorize]` + 租户解析。
2. 是否调用了应用层 CQRS而非在 Controller 写业务?
3. DTO 是否按管理口径,未暴露用户端字段?
4. 是否使用参数化/AsNoTracking/投影,避免 N+1
5. 路由和 Swagger 示例是否含租户/权限说明?
- **自检记录**RolesController 新增模板列表/详情/复制/初始化端点,均已套用 `[Authorize]` + `PermissionAuthorize`、仅调用 CQRS/DTO依赖租户头隔离。TenantPackagesController 与 TenantsController(配额校验) 均使用权限码、DTO 映射,配额校验要求携带租户头防越权。
- **自检记录**RolesController 新增模板列表/详情/复制/初始化端点,均已套用 `[Authorize]` + `PermissionAuthorize`、仅调用 CQRS/DTO依赖租户头隔离。TenantPackagesController 与 TenantsController(配额校验) 均使用权限码、DTO 映射,配额校验要求携带租户头防越权。新增租户账单/公告/通知控制器,全部采用 CQRS、权限校验与租户参数列表分页、未暴露实体。
## 2. UserApiC 端用户)
- **面向对象**App/H5 普通用户。