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.
9 lines
1.7 KiB
9 lines
1.7 KiB
|
1 month ago
|
本模块是一个独立的 Maven JAR 子模块(artifactId: crm-base),被所有上层业务模块依赖,内部按职责划分为若干子包:
|
||
|
|
- `domain/entity`:通过 `BaseEntity`(@MappedSuperclass + MyBatis-Plus + JPA 注解双标注)定义所有实体的主键、审计字段与逻辑删除约定;`OwnedEntity` 扩展归属字段。
|
||
|
|
- `domain/dto`、`domain/param`、`domain/result`:统一的 DTO/Param 基类与 Result/PageResult 响应封装,配合 `ResultCodeEnum` 规范错误码。
|
||
|
|
- `service` 与 `mapper`:`IBaseService<T>` 继承 MyBatis-Plus 的 `IService` 并扩展 saveDTO/updateDTO/getByIdOrThrow/batchUpsert 等默认方法;`BaseServiceImpl` 实现分批 upsert;`CrmBaseMapper` 作为所有业务 Mapper 的统一基类。
|
||
|
|
- `config`:集中装配 MyBatis-Plus 拦截器(分页、防全表更新)、SQL 注入器(CrmSqlInjector 注入 batchUpsert)、MetaObjectFillHandler(自动填充审计与归属字段)、SnowflakeIdWorker(分布式 ID)、Redis/Jackson/Knife4j/Cors 等横切配置。
|
||
|
|
- `security`:基于 ThreadLocal 的 `DataVisibilityContext` 承载每请求的数据可见性范围,配合 `DataVisibility`、`DataScopeLevel`、`VisibilityScope`、`DataOwnership` 等不可变值对象,由过滤器在请求入口装入、结束时清理。
|
||
|
|
- `advice`:`GlobalExceptionHandlerAdvice` 统一将各类 Spring/业务异常映射为 `Result.fail(...)`,HTTP 状态码除框架级错误外一律 200。
|
||
|
|
- `utils`:PageConverter、BeanCopyUtils、ExcelUtil、TreeUtils 等无状态工具类。
|
||
|
|
依赖方向单向向下:业务模块 → crm-base;本模块仅依赖 Spring Boot Starter、MyBatis-Plus、Spring Security Core、Hutool、Guava、EasyExcel 等通用库,不引入任何业务领域概念。
|