睿核科技 (rui) — 项目实施规范
本文档基于对当前 rui-framework 项目的全面分析,整理项目结构、业务流、现有规范、推荐修改项及缺少的专业结构,供后续项目实施参考。
一、项目概述
| 项目属性 |
值 |
| 项目名称 |
rui-framework |
| 项目类型 |
Spring Cloud 微服务架构(通用平台框架) |
| 组织方式 |
Monorepo(backend + 可扩展前端) |
| JDK |
21 |
| Spring Boot |
4.0.3 |
| Spring Cloud |
2025.1.1 |
| Alibaba Cloud |
2025.1.0.0 |
| MyBatis Plus |
3.5.16 |
| 包管理 |
Maven + flatten-maven-plugin |
| 配置中心 |
Nacos |
| 注册中心 |
Nacos |
二、项目架构图
三、模块结构与端口分配
3.1 核心框架层
| 模块 |
类型 |
端口 |
职责 |
| rui-dependencies |
BOM |
- |
全局依赖版本管理(Spring Boot/Cloud/Alibaba) |
| rui-parent |
Parent POM |
- |
统一插件配置(Lombok、flatten、Spring Boot Maven) |
3.2 通用基础层(rui-common)
| 子模块 |
职责 |
是否已创建 |
| rui-common-core |
核心工具类(Result、BaseEntity、TenantContextHolder) |
✅ |
| rui-common-mybatis |
MyBatis Plus + Druid + 多租户拦截器 |
✅ |
| rui-common-security |
资源服务器配置、JWT、@Inner 注解、安全切面 |
✅ |
| rui-common-oauth2 |
OAuth2 授权服务器、多种认证 Provider |
✅ |
| rui-common-web |
BaseController、QueryBuilder、全局异常处理、OpenAPI |
✅ |
| rui-common-feign |
Feign 增强(自动注入租户头、自定义 Registrar) |
✅ |
| rui-common-mq |
MQ 抽象接口 |
✅ |
| rui-common-mq-redis |
Redis 实现 MQ |
✅ |
| rui-common-mq-rabbitmq |
RabbitMQ 实现 MQ |
✅ |
| rui-common-authenticator |
TOTP 动态码认证 |
✅ |
3.3 业务服务层(rui-service)
| 服务名 |
端口 |
状态 |
职责 |
| rui-gateway |
9300 |
✅ 已创建 |
网关(路由、灰度发布、负载均衡、日志) |
| rui-auth |
9301 |
✅ 已创建 |
认证授权中心(薄壳,核心逻辑在 rui-common-oauth2) |
| rui-service-system |
9302 |
✅ 已创建 |
系统基础服务(租户、客户端、角色/菜单/字典) |
| rui-service-user |
9303 |
✅ 已创建 |
用户中心服务(用户详情、等级体系、登录凭证) |
| rui-service-msg |
9304 |
⏳ 预留 |
消息通知服务(SMS/邮件/站内信/App推送) |
| rui-service-file |
9305 |
⏳ 预留 |
文件存储服务(OSS/本地存储) |
| rui-service-order |
9306 |
⏳ 预留 |
订单服务 |
| rui-service-pay |
9307 |
⏳ 预留 |
支付服务(支付通道、回调、对账) |
| rui-service-search |
9308 |
⏳ 预留 |
搜索服务(Elasticsearch 封装) |
| rui-service-cache |
9309 |
⏳ 预留 |
缓存服务(Redis 分布式锁等封装) |
| rui-service-log |
9310 |
⏳ 预留 |
日志收集服务(ELK 集成) |
| rui-service-monitor |
9311 |
⏳ 预留 |
监控告警服务(Micrometer/Prometheus) |
四、核心业务流
4.1 认证授权流程(OAuth2)
支持的认证方式:
password — 用户名密码
sms — 短信验证码
weixin — 微信登录
alipay — 支付宝登录
client_credentials — 客户端凭证
refresh_token — 刷新令牌
4.2 资源访问流程
4.3 内部服务调用流程(Feign)
五、现有规范清单
5.1 编码规范
| # |
规范项 |
要求 |
是否加入规则 |
| 1 |
文档语言 |
所有文档、注释必须使用中文 |
✅ 已规则化(AGENTS.md) |
| 2 |
标识符 |
类名/方法名/变量名使用英文 |
✅ 已规则化 |
| 3 |
JDK |
21(强制) |
✅ 已规则化 |
| 4 |
Lombok |
强制使用,禁止手写 getter/setter/builder |
✅ 已规则化 |
| 5 |
实体类 |
必须继承 BaseEntity,加 @EqualsAndHashCode(callSuper = true) |
✅ 已规则化 |
| 6 |
Service 注入 |
构造器注入(private final + 构造器) |
✅ 已规则化 |
| 7 |
类名前缀 |
不加 Rui 前缀,除非与框架类冲突 |
✅ 已规则化 |
| 8 |
版本管理 |
统一使用 ${revision} + flatten-maven-plugin |
✅ 已规则化 |
| 9 |
代码注释 |
所有代码注释使用中文 |
❌ 建议加入规则 |
5.2 Feign 规范
| # |
规范项 |
要求 |
是否加入规则 |
| 1 |
contextId |
必须使用,隔离 Bean 命名空间 |
✅ 已规则化 |
| 2 |
服务名 |
value = "${feign.providers.xxx:默认名}" 外部化 |
✅ 已规则化 |
| 3 |
返回值 |
Inner API 统一返回 Result |
✅ 已规则化 |
| 4 |
注册方式 |
META-INF/spring.factories 注册 CloudFeignAutoConfiguration |
✅ 已规则化 |
| 5 |
调用头 |
@Headers("INTERNAL_REQUEST: INTERNAL") 自动注入 |
✅ 已规则化 |
| 6 |
解包方式 |
Remote 服务层解包并转换 |
✅ 已规则化 |
| 7 |
降级处理 |
禁止使用 fallback/fallbackFactory,Remote 层 try-catch |
✅ 已规则化 |
5.3 URL 路由规范
| # |
规范项 |
要求 |
是否加入规则 |
| 1 |
格式 |
/{模块}/{目录层级...}/{功能}/{方法} |
✅ 已规则化 |
| 2 |
模块位置 |
模块标识在最前(方便网关路由) |
✅ 已规则化 |
| 3 |
内部标识 |
内部接口统一使用 /inner |
✅ 已规则化 |
| 4 |
网关配置 |
网关只需配置 /{模块}/** |
✅ 已规则化 |
5.4 Controller 分类规范
| 控制器命名 |
路径前缀 |
认证要求 |
用途 |
是否加入规则 |
| XxxController |
/{模块}/{功能}/** |
需认证 |
常规业务接口 |
✅ 已规则化 |
| XxxEntryController |
/{模块}/entry/** |
免认证 |
对外入口(注册、登录前) |
✅ 已规则化 |
| XxxNotifyController |
/{模块}/notify/** |
免认证 |
第三方回调(支付、Webhook) |
✅ 已规则化 |
| XxxInnerController |
/{模块}/inner/** |
@Inner 控制 |
内部 Feign 调用 |
✅ 已规则化 |
5.5 数据库规范
| # |
规范项 |
要求 |
是否加入规则 |
| 1 |
实体基类 |
继承 BaseEntity(含 id, createTime, updateTime, tenantId, deleted) |
✅ 已实现 |
| 2 |
多租户 |
使用 MyBatis Plus 多租户拦截器(TenantLineInnerInterceptor) |
✅ 已实现 |
| 3 |
逻辑删除 |
使用 @TableLogic 注解,字段名 deleted |
✅ 已实现 |
| 4 |
自动填充 |
使用 MetaObjectHandler 自动填充创建/更新时间 |
✅ 已实现 |
| 5 |
表命名 |
统一前缀 rui_{模块}_{表名}(如 rui_user_credential) |
⚠️ 建议规则化 |
| 6 |
字段命名 |
下划线命名,主键 id,租户 tenant_id |
⚠️ 建议规则化 |
| 7 |
SQL 防注入 |
启用 BlockAttackInnerInterceptor(防全表更新/删除) |
✅ 已实现 |
5.6 Git 规范
| # |
规范项 |
要求 |
是否加入规则 |
| 1 |
自动提交 |
每次修改后自动 git commit,不推送 |
✅ 已规则化 |
| 2 |
推送时机 |
由用户提示或累积多次提交后统一推送 |
✅ 已规则化 |
| 3 |
忽略目录 |
app/、config/ 加入 .gitignore |
✅ 已规则化 |
| 4 |
提交信息 |
使用中文描述,格式:type(scope): 描述 |
❌ 建议加入规则 |
| 5 |
分支策略 |
main 为主分支,功能分支开发 |
❌ 建议加入规则 |
5.7 Maven 规范
5.8 配置中心规范(Nacos)
| # |
规范项 |
要求 |
是否加入规则 |
| 1 |
配置拆分 |
每个服务独立 Data ID(rui-{服务名}.yaml) |
✅ 已实现 |
| 2 |
共享配置 |
rui-common.yaml 存放全局配置 |
✅ 已实现 |
| 3 |
数据库配置 |
rui-data.yaml 存放 MySQL/Druid/MyBatis 配置 |
✅ 已实现 |
| 4 |
端口配置 |
每个服务配置在各自 Nacos 配置文件中 |
✅ 已实现 |
| 5 |
灰度配置 |
在 rui-gateway.yaml 中配置 grayscale.rules |
✅ 已实现 |
| 6 |
配置推送 |
使用 push-nacos-config.sh 统一推送 |
✅ 已实现 |
六、推荐修改项
6.1 高优先级(建议立即修改)
| # |
修改项 |
当前问题 |
修改建议 |
| 1 |
rui-auth 过于单薄 |
仅 2 个 Java 文件(启动类 + 配置类) |
将 AuthServerConfig 下沉到 rui-common-oauth2,或补充 Token 管理、Session 管理等接口 |
| 2 |
rui-service-system 不完整 |
仅 4 个文件,无完整 Controller/Service/Mapper |
尽快补齐租户管理、菜单/角色/字典的 CRUD 接口 |
| 3 |
Mapper XML 缺失 |
全局未找到 .xml Mapper 文件 |
确认是否全注解 SQL(当前 JdbcTemplate 直接写 SQL),建议补充 MyBatis Plus 的 Mapper 接口 |
| 4 |
rui-dependencies 中声明了未存在的模块 |
rui-common-mq-mqtt 在 BOM 中声明但目录不存在 |
删除该声明或创建对应模块 |
| 5 |
自动配置注册方式不统一 |
部分模块使用 spring.factories,部分未注册 |
统一使用 META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports |
| 6 |
BaseController 字段反射注入 |
bindCurrentUser 使用反射调用 setter |
改用 MetaObjectHandler 统一处理,或使用构造器注入 |
| 7 |
文档术语不统一 |
docs/spring-rui 代码分析报告.md 提到 R,实际代码使用 Result |
统一术语,删除或更新旧文档 |
6.2 中优先级(近期完善)
| # |
修改项 |
当前问题 |
修改建议 |
| 1 |
单元测试缺失 |
未见到 src/test/java 目录 |
补充 JUnit 5 + Mockito 测试框架,编写基础单元测试 |
| 2 |
日志追踪缺失 |
无 TraceID 链路追踪 |
引入 MDC + TraceID 过滤器,实现请求全链路追踪 |
| 3 |
QueryBuilder 区间查询弱 |
putBetween 仅支持字符串拼接 |
支持日期/数字区间查询,前端传递 JSON 格式查询条件 |
| 4 |
MybatisProperties 利用率低 |
已定义配置但 TenantHandler 仍部分硬编码 |
完全配置驱动,租户字段名、逻辑删除字段名均可配置 |
| 5 |
灰度负载均衡缺少降级计数 |
灰度实例不可用时直接回退稳定实例 |
增加灰度实例健康检查,记录降级次数和比例 |
| 6 |
app/ 目录验证 |
.gitignored,当前为空 |
按 docs/业务应用模块创建规则.md 创建示例模块(如 rui-payment),验证规范可行性 |
6.3 低优先级(按需实施)
| # |
修改项 |
当前问题 |
修改建议 |
| 1 |
分布式链路追踪 |
无 SkyWalking / Micrometer Tracing |
引入 Micrometer Tracing + Brave 实现链路追踪 |
| 2 |
监控告警模块 |
Nacos 有配置占位,backend 无代码 |
集成 Micrometer + Prometheus,或接入 Sentinel Dashboard |
| 3 |
工具类补齐 |
部分通用工具可能缺失 |
移植 SpringUtil、JsonUtil、IdWorker 等工具类到 rui-common-core |
| 4 |
缓存抽象层 |
Redis 使用直接,无统一缓存接口 |
在 rui-common-core 中定义 CacheManager 接口,支持多级缓存 |
| 5 |
限流降级 |
缺少统一限流策略 |
在网关层集成 Sentinel,或基于 Redis 实现分布式限流 |
七、缺少的专业结构
7.1 必须补充的结构
| 结构 |
缺失模块 |
重要性 |
实施建议 |
| 完整的 rui-service-system |
rui-service-system |
🔴 高 |
补充 SystemTenant、SystemMenu、SystemRole、SystemDict、SystemConfig 的 Entity、Mapper、Service、Controller |
| Mapper 接口层 |
rui-service-user、rui-service-system |
🔴 高 |
为所有 Entity 创建 Mapper 接口,继承 BaseMapper,使用 @Mapper 注解 |
| 单元测试目录 |
所有模块 |
🔴 高 |
创建 src/test/java 和 src/test/resources,编写至少一个示例测试类 |
| 自动配置注册 |
rui-common-* 模块 |
🟡 中 |
每个模块创建 META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports |
| 业务应用示例模块 |
app/ 目录 |
🟡 中 |
创建 rui-payment-api/common/core/provider/task 示例,验证业务模块创建规则 |
7.2 建议补充的结构
| 结构 |
说明 |
重要性 |
实施建议 |
| API 文档自动生成 |
OpenAPI/SpringDoc 已集成,但未统一配置 |
🟡 中 |
统一配置 API 文档标题、版本、鉴权方式,生成在线文档 |
| 数据库变更管理 |
缺少 Flyway/Liquibase |
🟡 中 |
引入 Flyway 管理数据库版本,脚本放在 src/main/resources/db/migration/ |
| 代码质量检查 |
缺少 Checkstyle/SpotBugs |
🟢 低 |
配置 Checkstyle 规则,集成到 Maven 构建流程 |
| Docker 支持 |
缺少 Dockerfile / docker-compose |
🟢 低 |
为每个服务创建 Dockerfile,提供 docker-compose.yml 本地开发环境 |
| Kubernetes 配置 |
缺少 K8s YAML |
🟢 低 |
提供基础的 Deployment、Service、ConfigMap 模板 |
| SonarQube 集成 |
缺少代码质量扫描 |
🟢 低 |
配置 SonarQube 扫描,设置质量门禁 |
八、新规范建议(需加入 AGENTS.md)
8.1 建议立即加入的规则
8.2 建议后续加入的规则
九、Nacos 配置清单(已推送)
| Data ID |
服务 |
端口 |
状态 |
| rui-common.yaml |
全局共享 |
- |
✅ |
| rui-data.yaml |
DB 模块共享 |
- |
✅ |
| rui-gateway.yaml |
网关 |
9300 |
✅ |
| rui-auth.yaml |
认证中心 |
9301 |
✅ |
| rui-service-system.yaml |
系统服务 |
9302 |
✅ |
| rui-service-user.yaml |
用户服务 |
9303 |
✅ |
| rui-service-msg.yaml |
消息服务 |
9304 |
⏳ 预留 |
| rui-service-file.yaml |
文件服务 |
9305 |
⏳ 预留 |
| rui-service-order.yaml |
订单服务 |
9306 |
⏳ 预留 |
| rui-service-pay.yaml |
支付服务 |
9307 |
⏳ 预留 |
| rui-service-search.yaml |
搜索服务 |
9308 |
⏳ 预留 |
| rui-service-cache.yaml |
缓存服务 |
9309 |
⏳ 预留 |
| rui-service-log.yaml |
日志服务 |
9310 |
⏳ 预留 |
| rui-service-monitor.yaml |
监控服务 |
9311 |
⏳ 预留 |
十、后续实施路线图
Phase 1:基础完善(1-2 周)
- ✅ 补齐 rui-service-system 的完整 CRUD
- ✅ 为所有 Entity 补充 Mapper 接口
- ✅ 统一自动配置注册方式
- ✅ 补充单元测试基类和示例
- ✅ 创建 app/ 目录示例模块
Phase 2:功能增强(2-4 周)
- 引入日志链路追踪(TraceID)
- 完善 QueryBuilder 区间查询
- 补充 API 文档自动生成配置
- 引入 Flyway 数据库版本管理
- 完善灰度发布的降级策略
Phase 3:生产就绪(4-6 周)
- 引入分布式链路追踪(SkyWalking/Micrometer)
- 完善监控告警模块
- 配置 Docker 和 docker-compose
- 集成 SonarQube 代码质量检查
- 编写完整的运维部署文档
文档版本: v1.0
创建日期: 2026-05-28
适用范围: rui-framework 项目及后续同类项目
维护方式: 随项目实施迭代更新