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
1.7 KiB
本模块是一个独立的 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 等通用库,不引入任何业务领域概念。