refactor(project): 重构权限常量定义并移除需求进度聚合功能
- 将产品和项目查询权限码统一提取到常量类中 - 移除需求进度聚合计算的相关实现代码 - 更新权限验证注解使用新的常量定义 - 清理相关的单元测试代码 - 更新错误码注释说明
This commit is contained in:
@@ -84,6 +84,15 @@
|
||||
|
||||
判定口诀:**URL 里有 `{projectId}` / `{productId}` 等对象 ID → 对象域;没有 → 全域**。
|
||||
|
||||
### 站内信通知事件(project 域统一入口)
|
||||
|
||||
业务动作要发站内信时,统一走 `framework/notify` 的 `NotifySendEvent`(`publishEvent(NotifySendEvent.of(userIds, templateCode, params))`),由全局唯一的 `NotifySendEventListener`(`@TransactionalEventListener(AFTER_COMMIT)`)做去重 / 兜底 / 调 `NotifyMessageSendApi`;不要绕过事件直接在业务 Service 里注入发送 API。
|
||||
|
||||
红线:
|
||||
|
||||
- **`NotifySendEvent` 只能在 `@Transactional` 的业务方法里 publish**。`@TransactionalEventListener` 的语义是"只在有事务的上下文里 publish 才会被消费"——在无事务方法里 publish,通知会**静默不发、不报错**。新业务接入通知前先确认触发点方法有事务;确实无事务的场景不要"顺手 publish",要么补事务,要么找用户确认方案。
|
||||
- 模板场景码登记进 `NotifyTemplateCodeConstants`,并保证 `system_notify_template` 已配同 code 模板(模板缺失时监听器只 `log.warn`,该场景通知发不出但不影响业务)。
|
||||
|
||||
## 接口语义(HTTP 动词)
|
||||
|
||||
本仓库 update 类接口默认按 RESTful 标准用 HTTP 动词区分语义,前后端必须按下表对齐,避免"前端没传字段"和"前端想清空"在后端无法区分的歧义。
|
||||
|
||||
Reference in New Issue
Block a user