
## 4、01_java_ruoyi_cloud_architecture.mdc
```mdc
---
description: 若依RuoYi-Vue-Cloud微服务工程分层、模块分包、Nacos/Feign/Gateway规范（无BPM模块）
globs: ["**/*.java","**/pom.xml","**/application.yml","**/bootstrap.yml"]
alwaysApply: false
---
# 冲突优先级声明
达梦数据库、Java编码禁令优先级高于本文件；本文件规范优先级高于通用全栈协作规则。

# 若依微服务工程架构规范（RuoYi-Vue-Cloud）
## 一、标准模块拆分（移除ruoyi-bpm流程模块）
1. `ruoyi-gateway` 网关模块：路由转发、鉴权、跨域、限流、请求日志；
2. `ruoyi-system` 系统基础模块：用户、部门、角色、菜单、字典、操作日志；
3. `ruoyi-business-api` 业务公共API模块：Feign远程调用DTO、接口定义（仅接口、DTO，无业务实现）；
4. `ruoyi-business-server` 业务实现服务模块：所有业务CRUD、ServiceImpl、Mapper、DO；
5. `ruoyi-common` 通用工具模块：常量、工具类、异常、枚举、全局返回体；
6. `ruoyi-admin` 管理后台前端；`ruoyi-app` UniApp移动端前端。

## 二、包结构标准（business-server业务模块）
com.ruoyi.business.{业务模块名}
├── controller        业务控制器（统一继承 BaseController，区分后台 / APP 接口）
├── domain             数据库实体 DO（达梦表映射实体，替换旧 dal/dataobject）
├── domain/vo          各类vo
├── mapper             Mapper 接口（MyBatis-Plus 接口）
├── service
│   ├── impl           ServiceImpl 业务实现类
│   └── 业务 Service 接口
├── convert                    对象转换 Convert 类
├── enums                       业务枚举、错误码常量
├── util                        业务工具类
ruoyi-modules/ruoyi-busi/src/main/resources
├── mapper/busi        Mapper.xml SQL 映射文件
├── application-dev.yml 开发环境配置
├── bootstrap.yml      启动配置

## 三、微服务核心组件规范
### 1. Nacos配置中心
1. 所有环境配置（数据库连接、Redis、Feign超时、线程池）存入Nacos；
2. bootstrap.yml仅配置Nacos地址、命名空间、集群；application.yml仅少量本地默认值；
3. 区分开发、测试、生产Nacos命名空间，生产配置加密存储（国产加密算法）；
4. 达梦数据库连接池配置统一在Nacos，适配达梦驱动参数。

### 2. Feign远程调用（跨模块）
1. 跨服务调用仅允许通过 \`ruoyi-business-api\` 定义Feign接口；
2. API模块仅存放接口、DTO数据传输对象，无任何业务实现代码；
3. Server模块之间禁止直接依赖，只能依赖对应API模块；
4. Feign调用异常统一捕获，使用若依全局异常处理，返回标准化CommonResult；
5. Feign超时、重试策略在Nacos统一配置，适配微服务分布式场景。

### 3. Gateway网关
1. 所有接口请求统一经过网关，不允许服务直连访问；
2. 网关统一处理Sa-Token鉴权、跨域、接口限流、请求参数脱敏；
3. 路由规则区分admin后台、app移动端、内部服务接口；
4. 网关日志记录请求来源、耗时、操作人，满足信创等保审计要求。

### 4. Sa-Token 微服务鉴权
1. 管理后台、APP端使用两套独立Token体系，权限隔离；
2. 接口必须添加 \`@PreAuthorize("@ss.hasPermission('模块:业务:操作')")\` 权限校验；
3. APP移动端仅开放查询、提交保存等基础权限，禁止后台管理类权限；
4. 分布式会话存储Redis，适配多实例微服务集群。

## 四、微服务部署&信创适配
1. 所有服务打包为jar镜像，支持鲲鹏/飞腾国产CPU容器化部署；
2. 中间件国产化：Nacos国产适配版、东方通/TongWeb替代Tomcat；
3. Redis使用国产分布式缓存，禁用海外Redis企业版；
4. 服务日志输出适配国产日志采集工具，日志脱敏敏感信息；
5. 容器镜像不依赖海外Docker镜像源，全部本地化信创镜像。

## 五、模块依赖禁止事项
❌ 禁止server模块互相直接依赖；跨模块仅依赖xxx-api；
❌ 禁止将业务实现代码写入api模块；
❌ 禁止硬编码环境地址、数据库连接，全部Nacos配置；
❌ 禁止Feign接口传DO数据库实体，统一使用隔离DTO；
❌ 禁止APP端Controller开放后台管理权限接口；
❌ 禁止微服务多实例本地缓存存储状态，分布式状态统一Redis；
❌ 禁止引入Flowable、BPM流程相关依赖包。