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.
 
 
 
 
 
 

1.7 KiB

本模块是一个独立的 Maven JAR 子模块(artifactId: crm-base),被所有上层业务模块依赖,内部按职责划分为若干子包:

  • domain/entity:通过 BaseEntity(@MappedSuperclass + MyBatis-Plus + JPA 注解双标注)定义所有实体的主键、审计字段与逻辑删除约定;OwnedEntity 扩展归属字段。
  • domain/dtodomain/paramdomain/result:统一的 DTO/Param 基类与 Result/PageResult 响应封装,配合 ResultCodeEnum 规范错误码。
  • servicemapperIBaseService<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 承载每请求的数据可见性范围,配合 DataVisibilityDataScopeLevelVisibilityScopeDataOwnership 等不可变值对象,由过滤器在请求入口装入、结束时清理。
  • adviceGlobalExceptionHandlerAdvice 统一将各类 Spring/业务异常映射为 Result.fail(...),HTTP 状态码除框架级错误外一律 200。
  • utils:PageConverter、BeanCopyUtils、ExcelUtil、TreeUtils 等无状态工具类。 依赖方向单向向下:业务模块 → crm-base;本模块仅依赖 Spring Boot Starter、MyBatis-Plus、Spring Security Core、Hutool、Guava、EasyExcel 等通用库,不引入任何业务领域概念。