You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
|
|
|
|
# 基础包(crm-base)
|
|
|
|
|
|
|
|
|
|
通用能力与非业务域原语。不装 controller、不建业务表,只提供基础设施:异常体系、响应封装、分页、雪花 ID、MyBatis-Plus 扩展、数据权限词汇、安全上下文工具。跨模块 seam 也放在这里。
|
|
|
|
|
|
|
|
|
|
## Language
|
|
|
|
|
|
|
|
|
|
**批量执行器**:
|
|
|
|
|
`BatchRunner`——跨模块非原子批量操作的统一编排协议(ADR-0028),与 `BatchResult<F>`(结果骨架)同居 `domain.result` 组成批量协议家族。静态 `run(ids, op, bizFail, unknownFail)`:空判短路 → 逐条委派单条操作(调用方传 self 代理方法引用保每条独立事务,ADR-0023 D1)→ 业务异常经 `bizFail(id, e)` 翻译收集 → 未知异常 log + `unknownFail(id, e)` 兜底且不中断后续 → 组装 BatchResult。失败项类型 F 经函数参数注入(各域失败项类提供 `bizOf`/`unknownOf` 翻译工厂,如 crm-lead 的 `LeadBatchFailItem`),本类无业务枚举依赖,保持 crm-base 非业务纯净(ADR-0023 D2/D5)。
|
|
|
|
|
_Avoid_: 批量服务、BatchService、批量框架(要点是「编排协议的静态执行器 + 翻译知识在域」)
|
|
|
|
|
|
|
|
|
|
**权限种子器**:
|
|
|
|
|
一个 seam interface,让任意业务模块声明式地将自己的权限点(button 节点)种子化到权限资源树(`sys_menu` 物理表),而不需要知道该表的物理 schema。调用方通过 `PermissionModuleDescriptor` 声明目录名、菜单名、按钮列表、目标角色编码;实现方(在 crm-auth 中)拥有 `sys_menu` 的全部字段知识,负责 find-or-create 幂等写入与角色绑定。替代了此前的影子实体方案——crm-dict 曾创建 `SysMenuSeed` 等重复实体类直接映射 `sys_menu` 表,导致 schema 泄漏。
|
|
|
|
|
_Avoid_: 权限初始化器、权限注入器、权限注册器
|
|
|
|
|
|
|
|
|
|
**权限模块描述符**:
|
|
|
|
|
权限种子化的声明单元。一个描述符 = 一个目录 + 一个菜单 + 一组按钮 + 目标角色编码列表。目录幂等——同一目录名被多次 `seedModule` 只创建一次。调用方不暴露 `sys_menu` 的任何字段名、枚举值或默认值;`denyBehavior`、`status`、`visible` 等 schema 默认值由种子器实现方硬编码。
|
|
|
|
|
_Avoid_: 权限配置、种子描述文件
|
|
|
|
|
|
|
|
|
|
**按钮种子**:
|
|
|
|
|
权限模块描述符中一条按钮权限点的最小声明:名称、权限码、接口 URL、排序。不包含 `denyBehavior`/`status`/`visible`——这些是 `sys_menu` 的 schema 细节,由种子器实现方统一硬编码。需要不同值的管理员在启动后通过资源管理 API 修改。
|
|
|
|
|
_Avoid_: 按钮配置、权限点定义
|