refactor(modules): rename modules and externalize config / 重命名模块并外置配置

Rename Maven modules and directories to seewis-* while preserving Java package paths. Allow Nacos and Logstash settings from environment variables or Maven -D overrides, and include the existing agent documentation updates.
This commit is contained in:
2026-09-01 15:04:46 +08:00
parent 816cba997a
commit 93d3e71e0b
1097 changed files with 729 additions and 725 deletions
+4 -4
View File
@@ -1,6 +1,6 @@
---
name: backend-cloud
description: Cloud 后端专家。用于当前 RuoYi-Cloud-Plus 项目中的 Dubbo 远程调用、ruoyi-api 契约、服务拆分、Gateway/Auth、Nacos、Seata 分布式事务、服务间数据权限透传和 mock/stub 降级。
description: Cloud 后端专家。用于当前 RuoYi-Cloud-Plus 项目中的 Dubbo 远程调用、seewis-api 契约、服务拆分、Gateway/Auth、Nacos、Seata 分布式事务、服务间数据权限透传和 mock/stub 降级。
---
你负责 Cloud 架构相关的增量修改。
@@ -9,21 +9,21 @@ description: Cloud 后端专家。用于当前 RuoYi-Cloud-Plus 项目中的 Dub
1. 先读 `.codex/skills/ruoyi-plus-ai-coding/references/cloud.md`。
2. 再读目标远程接口、provider 实现、consumer 调用点、mock/stub 和 pom 依赖。
3. 服务间能力优先通过 `ruoyi-api-*` 的 `RemoteXxxService` 契约暴露,不跨模块直接注入对方 mapper/service/entity。
3. 服务间能力优先通过 `seewis-api-*` 的 `RemoteXxxService` 契约暴露,不跨模块直接注入对方 mapper/service/entity。
4. 修改远程接口签名时同步检查所有 `@DubboReference`、`@DubboService`、mock/stub、转换器和调用点。
5. 跨服务写入检查 `@GlobalTransactional`,弱依赖副作用检查 Dubbo mock/stub 降级。
## Dubbo 规则
- Provider 放在业务模块 `dubbo` 包,命名 `RemoteXxxServiceImpl`,通常使用 `@RequiredArgsConstructor`、`@Service`、`@DubboService`。
- Consumer 使用 `@DubboReference` 注入 `ruoyi-api-*` 中的 `RemoteXxxService`。
- Consumer 使用 `@DubboReference` 注入 `seewis-api-*` 中的 `RemoteXxxService`。
- 可选能力按已有模式使用 `@DubboReference(mock = "true")` 或 `@DubboReference(stub = "true")`。
- 批量查询、翻译、流程候选人、消息推送等场景不要在循环中逐条远程调用。
- 远程 DTO 使用 `RemoteXxxBo`、`RemoteXxxVo`、`RemoteXxx`,不要泄露内部 Entity。
## Gateway / Auth / Nacos
- Auth 相关逻辑优先查 `ruoyi-auth` 和 `ruoyi-gateway`,不要把 token 签发、客户端校验、网关白名单散落到业务模块。
- Auth 相关逻辑优先查 `seewis-auth` 和 `seewis-gateway`,不要把 token 签发、客户端校验、网关白名单散落到业务模块。
- Gateway 的 Sa-Token 校验、客户端 ID 匹配、访问路径/IP 白名单、same-token、`X-Forwarded-Prefix` 透传要保持原有 filter order。
- 配置优先走 Nacos:`application-common.yml` 和 `${spring.application.name}.yml`,不要把环境差异硬编码到代码。
@@ -1,9 +1,9 @@
---
name: backend-common-infrastructure
description: 公共基础模块专家。用于修改 ruoyi-common 下的 mybatis、translation、json enhance、excel、oss、redis、web、encrypt、dubbo、seata 等公共能力,强调 API 兼容、调用点检查和同包风格一致。
description: 公共基础模块专家。用于修改 seewis-common 下的 mybatis、translation、json enhance、excel、oss、redis、web、encrypt、dubbo、seata 等公共能力,强调 API 兼容、调用点检查和同包风格一致。
---
你负责 `ruoyi-common` 公共基础模块的增量修改。
你负责 `seewis-common` 公共基础模块的增量修改。
## 核心原则
+1 -1
View File
@@ -7,7 +7,7 @@ description: 标准后端 CRUD 专家。用于当前项目中的新增单表 CRU
## 核心原则
1. 先参考 `ruoyi-modules/ruoyi-gen/src/main/resources/vm/` 下的模板。
1. 先参考 `seewis-modules/seewis-gen/src/main/resources/vm/` 下的模板。
2. 再参考当前模块内最近似的标准管理模块。
3. 分层保持稳定:
`domain`、`domain.bo`、`domain.vo`、`mapper`、`service`、`service.impl`、`controller`
+3 -3
View File
@@ -9,16 +9,16 @@ description: 后端工程总入口。用于在当前 RuoYi-Cloud-Plus 项目中
1. 如果是新增标准单表 CRUD、从表结构补 entity/bo/vo/mapper/service/controller,优先使用 `backend-crud.md` 的规则。
2. 如果是修改 `system`、`workflow` 等已经很复杂的模块,优先使用 `backend-module-enhancement.md` 的规则。
3. 如果涉及 Cloud 专属能力,例如 Dubbo、`ruoyi-api` 远程契约、Gateway、Nacos、Seata、服务间调用或服务边界,优先使用 `backend-cloud.md` 的规则。
3. 如果涉及 Cloud 专属能力,例如 Dubbo、`seewis-api` 远程契约、Gateway、Nacos、Seata、服务间调用或服务边界,优先使用 `backend-cloud.md` 的规则。
4. 如果重点在 MPJ 联表、`@DataPermission`、复杂查询、数据范围控制,优先使用 `backend-query-permission.md` 的规则。
5. 如果是修改 `ruoyi-common` 公共基础能力,例如 `common-mybatis`、`common-translation`、`common-json`、`common-excel`、`common-oss`、`common-dubbo`、`common-seata`,优先使用 `backend-common-infrastructure.md` 的规则。
5. 如果是修改 `seewis-common` 公共基础能力,例如 `common-mybatis`、`common-translation`、`common-json`、`common-excel`、`common-oss`、`common-dubbo`、`common-seata`,优先使用 `backend-common-infrastructure.md` 的规则。
6. 如果只要求补充或修正 JavaDoc 注释,优先使用 `backend-javadoc.md` 的规则。
7. 如果同时要求同步前端接口或前端页面骨架,保持后端路由与 generator 风格稳定,便于前端 agent 对接。
文档读取顺序:
- 后端 Java、Mapper、Service、Controller、BO、VO、Entity、权限、查询、公共模块或 JavaDoc 任务,先读 `.codex/skills/ruoyi-plus-ai-coding/references/backend.md`。
- Dubbo 远程调用、`ruoyi-api` 契约、服务拆分、Gateway、Nacos、Seata、服务间数据权限透传任务,先读 `.codex/skills/ruoyi-plus-ai-coding/references/cloud.md`。
- Dubbo 远程调用、`seewis-api` 契约、服务拆分、Gateway、Nacos、Seata、服务间数据权限透传任务,先读 `.codex/skills/ruoyi-plus-ai-coding/references/cloud.md`。
- 同步前端 Vue、TypeScript、api、types 或页面骨架时,再读 `.codex/skills/ruoyi-plus-ai-coding/references/frontend.md`。
- 任务边界不清晰或需要标准场景示例时,再读 `.codex/skills/ruoyi-plus-ai-coding/references/examples.md`。
- 只读取当前任务相关的 reference,不一次性展开全部文档。
+1 -1
View File
@@ -32,7 +32,7 @@ description: 后端查询、联表与数据权限专家。用于当前项目中
- MPJ 联表查询沿用别名风格,例如 `QueryBuilder.lambdaJoin("u", SysUser.class)`。
- 带别名字段条件使用 `.eq("u", Entity::getField, value)`、`.orderByAsc("m", SysMenu::getOrderNum)`。
- 数据权限列名要和真实 SQL 别名一致,例如 `d.dept_id`、`u.create_by`。
- `ruoyi-system` 的用户、角色、菜单、部门查询常带角色状态、删除标识、部门权限过滤,修改前先读对应 mapper/service。
- `seewis-system` 的用户、角色、菜单、部门查询常带角色状态、删除标识、部门权限过滤,修改前先读对应 mapper/service。
- 日期范围参数继续从 `bo.getParams()` 获取,避免前端 `addDateRange` 对不上。
- 简单查询默认留在 service wrapper;短小且复用性强的 mapper 默认方法可以保留在 mapper。
+9 -9
View File
@@ -14,8 +14,8 @@ description: 在仓库内按代码生成器模板、项目 reference 文档和
- 新增标准 CRUD 模块。
- 根据新表结构补齐 entity、bo、vo、mapper、service、controller。
- 修改已有模块的查询、校验、导入导出、数据权限、事务逻辑。
- 修改 `ruoyi-common` 公共能力,例如 mybatis 查询构造器、translation、json enhance、excel、oss、redis、web 配置。
- 修改 Cloud 专属能力,例如 `ruoyi-api` 远程契约、Dubbo provider/consumer、Gateway/Auth、Nacos 配置约定、Seata 分布式事务、服务间数据权限透传。
- 修改 `seewis-common` 公共能力,例如 mybatis 查询构造器、translation、json enhance、excel、oss、redis、web 配置。
- 修改 Cloud 专属能力,例如 `seewis-api` 远程契约、Dubbo provider/consumer、Gateway/Auth、Nacos 配置约定、Seata 分布式事务、服务间数据权限透传。
- 补充或修正 JavaDoc 注释,尤其是公共 API、接口、BO/VO/Entity 字段、Mapper 默认方法、Service/Controller 方法。
- 在系统、监控、工作流、demo 等模块内按现有约定扩展业务代码。
- 为后端新增接口同步补前端 `api/types/index.vue` 骨架。
@@ -33,12 +33,12 @@ description: 在仓库内按代码生成器模板、项目 reference 文档和
1. 先判断任务类型,并按“文档读取规则”读取当前任务需要的 reference。
2. 确认目标模块,优先复用同模块中最近似功能的写法。
3. 新增标准 CRUD 代码前,先读取 `ruoyi-modules/ruoyi-gen/src/main/resources/fm/` 下的模板。
3. 新增标准 CRUD 代码前,先读取 `seewis-modules/seewis-gen/src/main/resources/fm/` 下的模板。
4. 命名和分层保持与仓库一致:
`domain` entity、`domain.bo`、`domain.vo`、`mapper`、`service`、`service.impl`、`controller`。
5. 优先在生成器结构上扩展,不要自行发明新的分层。
6. 修改 `ruoyi-system` 这类复杂模块前,先阅读同类现有实现,因为这些模块通常比生成器默认产物多出数据权限、联表、缓存、安全校验等逻辑。
7. 修改 `ruoyi-common` 公共模块前,先阅读同包接口、实现类和调用点,优先保持已有 API 语义与兼容性。
6. 修改 `seewis-system` 这类复杂模块前,先阅读同类现有实现,因为这些模块通常比生成器默认产物多出数据权限、联表、缓存、安全校验等逻辑。
7. 修改 `seewis-common` 公共模块前,先阅读同包接口、实现类和调用点,优先保持已有 API 语义与兼容性。
8. 只补注释或文档时,不运行无关格式化,不重排 import,不改代码逻辑。
## 文档读取规则
@@ -46,7 +46,7 @@ description: 在仓库内按代码生成器模板、项目 reference 文档和
使用本 skill 时,先按任务类型读取适用 reference,不一次性展开所有文档:
- 后端 Java、Mapper、Service、Controller、BO、VO、Entity、权限、查询、公共模块或 JavaDoc 任务,先读 [references/backend.md](references/backend.md)。
- Cloud 专属能力,例如 Dubbo 远程调用、`ruoyi-api` 契约、服务拆分、Gateway、Nacos、Seata 分布式事务、服务间数据权限透传,先读 [references/cloud.md](references/cloud.md)。
- Cloud 专属能力,例如 Dubbo 远程调用、`seewis-api` 契约、服务拆分、Gateway、Nacos、Seata 分布式事务、服务间数据权限透传,先读 [references/cloud.md](references/cloud.md)。
- 前端 Vue、TypeScript、api、types 或页面任务,先读 [references/frontend.md](references/frontend.md)。
- 不确定任务边界、需要标准调用方式或需要对照典型场景时,再读 [references/examples.md](references/examples.md)。
@@ -73,7 +73,7 @@ Java、MyBatis-Plus、BO/VO/entity、controller、mapper、service 的具体规
## Cloud 规则
Dubbo、`ruoyi-api`、Gateway/Auth、Nacos、Seata、服务间数据权限透传的具体规则见 [references/cloud.md](references/cloud.md)。
Dubbo、`seewis-api`、Gateway/Auth、Nacos、Seata、服务间数据权限透传的具体规则见 [references/cloud.md](references/cloud.md)。
## 前端规则
@@ -139,7 +139,7 @@ Vue 3、TypeScript API 文件、生成式列表页、表单状态、字典和日
### 4. 公共基础模块修改
修改 `ruoyi-common` 下的基础能力时,优先保证二进制/API 兼容:不要轻易改公开方法签名、泛型、返回值或异常语义。新增注释和小范围能力时,先查同包现有风格,例如 `common-mybatis` 的链式 wrapper、`common-translation` 的 `TranslationInterface` 实现、`common-json` 的字段处理器。
修改 `seewis-common` 下的基础能力时,优先保证二进制/API 兼容:不要轻易改公开方法签名、泛型、返回值或异常语义。新增注释和小范围能力时,先查同包现有风格,例如 `common-mybatis` 的链式 wrapper、`common-translation` 的 `TranslationInterface` 实现、`common-json` 的字段处理器。
### 5. 注释修正任务
@@ -166,7 +166,7 @@ Vue 3、TypeScript API 文件、生成式列表页、表单状态、字典和日
- 公共 Mapper 链式能力优先沿用 `QueryBuilder.lambda(...)`、`QueryBuilder.lambdaJoin(...)`、`LambdaCrudChainWrapper`、`LambdaQueryBuilder`、`LambdaJoinQueryBuilder`、`LambdaQueryCondition` 的 `IfPresent` / `IfText` / `IfNotEmpty` 风格。
- 翻译能力优先沿用 `TranslationInterface` + `@TranslationType` + `@Translation`,批量翻译实现 `translationBatch`,避免退化成逐条查询。
- JSON 响应增强优先沿用 `JsonFieldProcessor` 的 `collect` / `prepare` / `process` 三阶段模型。
- Cloud 服务间调用优先通过 `ruoyi-api-*` 的 `RemoteXxxService` 契约和 `@DubboReference` / `@DubboService`,不要跨模块直接注入对方 mapper/service。
- Cloud 服务间调用优先通过 `seewis-api-*` 的 `RemoteXxxService` 契约和 `@DubboReference` / `@DubboService`,不要跨模块直接注入对方 mapper/service。
- 涉及跨服务写入、文件上传、消息推送、工作流联动时检查是否需要 `@GlobalTransactional`、Dubbo 降级 `mock/stub`、数据权限上下文透传和 Nacos/Gateway 配置。
- BO 使用 `@AutoMapper(target = Entity.class, reverseConvertGenerate = false)`。
- VO 使用 `@AutoMapper(target = Entity.class)`。
@@ -4,9 +4,9 @@ interface:
default_prompt: >-
使用 $ruoyi-plus-ai-coding 在 RuoYi-Cloud-Plus 仓库中工作。先读取适用的 backend、cloud、frontend reference,再用 jCodeMunch 确认仓库结构、目标模块、相似实现和调用方;以当前模块真实代码优先,其次是公共模块约定和代码生成器模板。项目基线是 Maven 多模块、Java 21、Spring Boot 4.x、Spring Cloud、Nacos、Gateway、Dubbo、MyBatis-Plus、Sa-Token、Redis 和可选 Seata。
模块边界必须遵守:正式的新业务域默认创建在 ruoyi-modules/ruoyi-<domain>,并拥有独立 POM、Spring Boot 启动类、application.yml、Nacos 配置和可独立部署的服务边界;已有 system、resource、workflow、job、gen、ai 领域优先扩展对应服务;ruoyi-common 只放与业务无关的可复用基础能力;ruoyi-demo 只放示例和实验;ruoyi-api 只放跨服务 RemoteXxxService 契约及 DTO/BO/VO。新增业务服务时同步检查 ruoyi-modules/pom.xml、script/config/nacos/ruoyi-<domain>.yml、Gateway 路由和必要的 .run 配置,但不要无理由修改无关模块。
模块边界必须遵守:正式的新业务域默认创建在 seewis-modules/seewis-<domain>,并拥有独立 POM、Spring Boot 启动类、application.yml、Nacos 配置和可独立部署的服务边界;已有 system、resource、workflow、job、gen、ai 领域优先扩展对应服务;seewis-common 只放与业务无关的可复用基础能力;seewis-demo 只放示例和实验;seewis-api 只放跨服务 RemoteXxxService 契约及 DTO/BO/VO。新增业务服务时同步检查 seewis-modules/pom.xml、script/config/nacos/seewis-<domain>.yml、Gateway 路由和必要的 .run 配置,但不要无理由修改无关模块。
后端默认遵循 domain/entity、domain/bo、domain/vo、mapper、service、service.impl、controller、dubbo 分层;标准 CRUD 先对照 ruoyi-gen 模板和同模块实现,复用 BaseMapperPlus、QueryBuilder、PageQuery、PageResult、R、MapstructUtils 及项目已有注解。Controller 不堆业务逻辑,BO/VO/Entity 不混用;权限、日志、防重、校验组、数据权限、事务、缓存、翻译、加密和 Excel 能力按相邻成熟实现补齐。跨服务调用必须通过 ruoyi-api-* 的契约和 @DubboReference/@DubboService,禁止直接注入其他服务的 Mapper 或 Service;只有确有需要时才增加 Stub/Mock、GlobalTransactional 或事件/消息方案。
后端默认遵循 domain/entity、domain/bo、domain/vo、mapper、service、service.impl、controller、dubbo 分层;标准 CRUD 先对照 seewis-gen 模板和同模块实现,复用 BaseMapperPlus、QueryBuilder、PageQuery、PageResult、R、MapstructUtils 及项目已有注解。Controller 不堆业务逻辑,BO/VO/Entity 不混用;权限、日志、防重、校验组、数据权限、事务、缓存、翻译、加密和 Excel 能力按相邻成熟实现补齐。跨服务调用必须通过 seewis-api-* 的契约和 @DubboReference/@DubboService,禁止直接注入其他服务的 Mapper 或 Service;只有确有需要时才增加 Stub/Mock、GlobalTransactional 或事件/消息方案。
Cloud 与安全要求:检查服务名、端口、Nacos 配置导入、Gateway lb:// 路由、StripPrefix、内部服务鉴权、Sa-Token 权限和数据权限边界;白名单保持最小化。不得把密码、Token、JWT/RSA/接口加密私钥或生产连接信息写入代码和示例配置。文件上传、SQL、反序列化、批量写入、远程调用、消息消费和工作流联动必须检查输入校验、超时、幂等、异常、事务和资源释放;不要因模板化而删除安全校验或错误处理。
@@ -2,14 +2,14 @@
## 优先参考的代码来源
- `ruoyi-modules/ruoyi-gen/src/main/resources/fm/java/*.ftl`
- `ruoyi-modules/ruoyi-demo/...`
- `ruoyi-modules/ruoyi-system/...`
- `ruoyi-modules/ruoyi-workflow/...`
- `ruoyi-api/...`
- `ruoyi-auth/...`
- `ruoyi-gateway/...`
- `ruoyi-common/ruoyi-common-mybatis/...`
- `seewis-modules/seewis-gen/src/main/resources/fm/java/*.ftl`
- `seewis-example/seewis-demo/...`
- `seewis-modules/seewis-system/...`
- `seewis-modules/seewis-workflow/...`
- `seewis-api/...`
- `seewis-auth/...`
- `seewis-gateway/...`
- `seewis-common/seewis-common-mybatis/...`
## 决策顺序
@@ -69,7 +69,7 @@
- 复杂模块里 mapper 可能同时继承 `MPJBaseMapper<Entity>` 并使用 `QueryBuilder.lambdaJoin(...)` 构造 MPJ 查询,遇到这种风格要延续,不要换一种写法。
- 只有在 `selectVoList/selectVoPage` 不够用时,才补 XML 或自定义 mapper 方法。
- Mapper 默认方法可以承载短小的 wrapper 查询;涉及复杂业务编排、缓存、事务或跨 mapper 写入时放到 service。
- `ruoyi-system` 的用户、角色、菜单、部门等模块常带数据权限、MPJ 联表、角色状态过滤,修改前先读对应 mapper/service。
- `seewis-system` 的用户、角色、菜单、部门等模块常带数据权限、MPJ 联表、角色状态过滤,修改前先读对应 mapper/service。
### Mapper 建议结构
@@ -175,9 +175,9 @@
## Cloud 服务规则
- 涉及 Dubbo、`ruoyi-api` 远程契约、Gateway、Nacos、Seata 或服务间调用时,同时读取 [cloud.md](cloud.md)。
- 涉及 Dubbo、`seewis-api` 远程契约、Gateway、Nacos、Seata 或服务间调用时,同时读取 [cloud.md](cloud.md)。
- Cloud 服务间调用优先通过 `RemoteXxxService` + `@DubboReference` / `@DubboService`,不要跨模块直接注入其他服务的 mapper/service。
- 远程接口、远程 BO/VO/domain、mock/stub 放在 `ruoyi-api-*`;业务实现放在对应业务模块 `dubbo` 包。
- 远程接口、远程 BO/VO/domain、mock/stub 放在 `seewis-api-*`;业务实现放在对应业务模块 `dubbo` 包。
- 跨服务写入检查 `@GlobalTransactional(rollbackFor = Exception.class)`;弱依赖远程调用检查是否需要 `mock = "true"` 或 `stub = "true"` 降级。
## common-mybatis 规则
@@ -207,7 +207,7 @@
## 工作流模块规则
- `ruoyi-workflow` 通常带 `@ConditionalOnEnable`,新增 workflow bean、controller、service 时检查同包是否需要该条件。
- `seewis-workflow` 通常带 `@ConditionalOnEnable`,新增 workflow bean、controller、service 时检查同包是否需要该条件。
- 流程分类、任务、实例等查询常带分类权限或用户维度过滤,先读同类 mapper/service 再改。
- 工作流的翻译实现可以放在 workflow 模块内,例如流程分类 ID 到名称,仍应遵守 `TranslationInterface` 批量翻译规则。
@@ -265,7 +265,7 @@
- 不要给新的管理接口漏掉权限注解。
- 没有明确必要时,不要从 `BaseMapperPlus` 风格退回手工映射。
- 前端查询页用了日期范围时,不要删掉后端 `params` 相关处理。
- 不要把 `ruoyi-system` 这类复杂逻辑强行简化成生成器式单表 CRUD。
- 不要把 `seewis-system` 这类复杂逻辑强行简化成生成器式单表 CRUD。
## 交付前自检
@@ -2,26 +2,26 @@
## 优先参考的代码来源
- `ruoyi-api/ruoyi-api-*/src/main/java/.../api/Remote*Service.java`
- `ruoyi-api/ruoyi-api-*/src/main/java/.../api/domain/**`
- `ruoyi-modules/*/src/main/java/.../dubbo/Remote*ServiceImpl.java`
- `ruoyi-auth/src/main/java/...`
- `ruoyi-gateway/src/main/java/.../filter/**`
- `ruoyi-common/ruoyi-common-dubbo/**`
- `ruoyi-common/ruoyi-common-seata/**`
- `seewis-api/seewis-api-*/src/main/java/.../api/Remote*Service.java`
- `seewis-api/seewis-api-*/src/main/java/.../api/domain/**`
- `seewis-modules/*/src/main/java/.../dubbo/Remote*ServiceImpl.java`
- `seewis-auth/src/main/java/...`
- `seewis-gateway/src/main/java/.../filter/**`
- `seewis-common/seewis-common-dubbo/**`
- `seewis-common/seewis-common-seata/**`
- `script/config/nacos/*.yml`
## 服务边界
- 当前项目是 Cloud 拆分结构,服务间能力优先通过 `ruoyi-api-*` 暴露契约,不要跨模块直接注入对方 mapper、service 或 entity。
- `ruoyi-api-*` 只放远程接口、远程 BO/VO/domain、model、event、mock、stub 等契约对象;不要放业务实现、mapper、controller 或依赖具体业务模块。
- 当前项目是 Cloud 拆分结构,服务间能力优先通过 `seewis-api-*` 暴露契约,不要跨模块直接注入对方 mapper、service 或 entity。
- `seewis-api-*` 只放远程接口、远程 BO/VO/domain、model、event、mock、stub 等契约对象;不要放业务实现、mapper、controller 或依赖具体业务模块。
- 远程接口命名沿用 `RemoteXxxService`,提供方实现命名沿用 `RemoteXxxServiceImpl` 并放在业务模块的 `dubbo` 包。
- 远程对象命名沿用 `RemoteXxxBo`、`RemoteXxxVo`、`RemoteXxx`,避免直接把内部 Entity 或内部管理端 VO 暴露成跨服务契约。
- 修改远程接口签名时必须同时检查所有 `@DubboReference` 调用点、`@DubboService` 实现、mock/stub、MapStruct 转换器和编译影响。
## Dubbo Provider
- 提供方类通常同时标注 `@RequiredArgsConstructor`、`@Service`、`@DubboService`,并实现 `ruoyi-api-*` 中的 `RemoteXxxService`。
- 提供方类通常同时标注 `@RequiredArgsConstructor`、`@Service`、`@DubboService`,并实现 `seewis-api-*` 中的 `RemoteXxxService`。
- Provider 内部复用本模块 service/mapper,不绕过本模块已有权限、缓存、校验、事务和转换规则。
- 返回远程 VO/BO 时优先使用已有 convert 接口或 `MapstructUtils.convert(...)`,不要手写重复字段拷贝。
- 批量查询接口遇到空集合时优先返回 `List.of()`、`Map.of()` 或空字符串,避免无意义远程调用和 SQL。
@@ -29,16 +29,16 @@
## Dubbo Consumer
- 消费方注入远程服务使用 `@DubboReference`,字段类型使用 `ruoyi-api-*` 的 `RemoteXxxService`。
- 可选或弱依赖调用按已有写法使用 `@DubboReference(mock = "true")` 或 `@DubboReference(stub = "true")`,并在 `ruoyi-api-*` 中提供 `RemoteXxxServiceMock` / `RemoteXxxServiceStub`。
- 消费方注入远程服务使用 `@DubboReference`,字段类型使用 `seewis-api-*` 的 `RemoteXxxService`。
- 可选或弱依赖调用按已有写法使用 `@DubboReference(mock = "true")` 或 `@DubboReference(stub = "true")`,并在 `seewis-api-*` 中提供 `RemoteXxxServiceMock` / `RemoteXxxServiceStub`。
- mock 用于服务调用异常后的降级返回,例如返回 `null`、`List.of()`、`StringUtils.EMPTY`;stub 用于本地包裹远程调用并吞掉非关键异常,例如消息推送未开启。
- 列表、翻译、流程候选人、消息推送等场景优先调用批量远程接口,避免在循环中逐条 Dubbo 调用。
- 远程调用失败是否抛出异常要按业务语义决定:登录、权限、注册等关键路径应失败;通知、推送、OSS URL 翻译等弱依赖可降级。
## 应用与依赖
- 需要 Dubbo provider 或 consumer 的应用启动类保持 `@EnableDubbo`,模块 pom 检查是否依赖 `ruoyi-common-dubbo`。
- 跨服务写入需要分布式事务时检查是否依赖 `ruoyi-common-seata`,并使用 `@GlobalTransactional(rollbackFor = Exception.class)`;单服务本地写入继续使用 `@Transactional`。
- 需要 Dubbo provider 或 consumer 的应用启动类保持 `@EnableDubbo`,模块 pom 检查是否依赖 `seewis-common-dubbo`。
- 跨服务写入需要分布式事务时检查是否依赖 `seewis-common-seata`,并使用 `@GlobalTransactional(rollbackFor = Exception.class)`;单服务本地写入继续使用 `@Transactional`。
- `common-dubbo.yml` 是内置配置,注册中心走 Nacos,元数据中心走 Redis;不要直接改内置配置做业务定制,业务环境差异优先通过 Nacos 同名配置覆盖。
- 各应用 `application.yml` 通常导入 `optional:nacos:application-common.yml` 和 `optional:nacos:${spring.application.name}.yml`,新增应用或配置时保持这个结构。
@@ -51,7 +51,7 @@
## Gateway 与 Auth
- 认证中心位于 `ruoyi-auth`,网关位于 `ruoyi-gateway`;不要把 token 签发、客户端校验、网关白名单逻辑散落到普通业务模块。
- 认证中心位于 `seewis-auth`,网关位于 `seewis-gateway`;不要把 token 签发、客户端校验、网关白名单逻辑散落到普通业务模块。
- Gateway 的 `AuthFilter` 负责 Sa-Token 登录校验、客户端 ID 匹配、客户端访问路径/IP 白名单和 actuator Basic Auth。
- `ForwardAuthFilter` 负责透传 `X-Forwarded-Prefix` 和内部 same-token;新增网关过滤逻辑时注意 filter order 和 actuator 排除。
- 网关白名单、路由、鉴权、Nacos metadata 等配置优先放 Nacos 配置文件或已有 properties,不硬编码到业务 controller。
@@ -65,8 +65,8 @@
## 自检
- 是否误把内部 Entity/VO 暴露到 `ruoyi-api-*`。
- 是否误把内部 Entity/VO 暴露到 `seewis-api-*`。
- 是否同步修改了远程接口、provider、consumer、mock/stub、转换器和 pom 依赖。
- 是否避免了循环中的逐条 Dubbo 调用。
- 是否检查了 `@EnableDubbo`、`ruoyi-common-dubbo`、`ruoyi-common-seata`、Nacos 配置和 Gateway 白名单。
- 是否检查了 `@EnableDubbo`、`seewis-common-dubbo`、`seewis-common-seata`、Nacos 配置和 Gateway 白名单。
- 是否保留数据权限上下文透传、缓存失效、事务边界和异常语义。
@@ -2,8 +2,8 @@
## 优先参考的代码来源
- `ruoyi-modules/ruoyi-gen/src/main/resources/fm/vue/*.ftl`
- `ruoyi-modules/ruoyi-gen/src/main/resources/fm/react/*.ftl`
- `seewis-modules/seewis-gen/src/main/resources/fm/vue/*.ftl`
- `seewis-modules/seewis-gen/src/main/resources/fm/react/*.ftl`
- 前端工程中与目标模块最接近的现有页面
当前 boot4 仓库通常只含后端与 generator 前端模板;如果前端工程不在当前 root,先以 generator 模板约定为准,再对照用户提供的前端目录或相邻仓库。
-12
View File
@@ -1,12 +0,0 @@
<component name="ProjectRunConfigurationManager">
<configuration default="false" name="ruoyi-ai" type="docker-deploy" factoryName="dockerfile" server-name="Docker">
<deployment type="dockerfile">
<settings>
<option name="imageTag" value="ruoyi/ruoyi-ai:6.0.0" />
<option name="buildOnly" value="true" />
<option name="sourceFilePath" value="ruoyi-modules/ruoyi-ai/Dockerfile" />
</settings>
</deployment>
<method v="2" />
</configuration>
</component>
-12
View File
@@ -1,12 +0,0 @@
<component name="ProjectRunConfigurationManager">
<configuration default="false" name="ruoyi-gateway" type="docker-deploy" factoryName="dockerfile" server-name="Docker">
<deployment type="dockerfile">
<settings>
<option name="imageTag" value="ruoyi/ruoyi-gateway:6.0.0" />
<option name="buildOnly" value="true" />
<option name="sourceFilePath" value="ruoyi-gateway/Dockerfile" />
</settings>
</deployment>
<method v="2" />
</configuration>
</component>
-12
View File
@@ -1,12 +0,0 @@
<component name="ProjectRunConfigurationManager">
<configuration default="false" name="ruoyi-gen" type="docker-deploy" factoryName="dockerfile" server-name="Docker">
<deployment type="dockerfile">
<settings>
<option name="imageTag" value="ruoyi/ruoyi-gen:6.0.0" />
<option name="buildOnly" value="true" />
<option name="sourceFilePath" value="ruoyi-modules/ruoyi-gen/Dockerfile" />
</settings>
</deployment>
<method v="2" />
</configuration>
</component>
-12
View File
@@ -1,12 +0,0 @@
<component name="ProjectRunConfigurationManager">
<configuration default="false" name="ruoyi-seata-server" type="docker-deploy" factoryName="dockerfile" server-name="Docker">
<deployment type="dockerfile">
<settings>
<option name="imageTag" value="ruoyi/ruoyi-seata-server:6.0.0" />
<option name="buildOnly" value="true" />
<option name="sourceFilePath" value="ruoyi-visual/ruoyi-seata-server/Dockerfile" />
</settings>
</deployment>
<method v="2" />
</configuration>
</component>
-12
View File
@@ -1,12 +0,0 @@
<component name="ProjectRunConfigurationManager">
<configuration default="false" name="ruoyi-snailai-server" type="docker-deploy" factoryName="dockerfile" server-name="Docker">
<deployment type="dockerfile">
<settings>
<option name="imageTag" value="ruoyi/ruoyi-snailai-server:6.0.0" />
<option name="buildOnly" value="true" />
<option name="sourceFilePath" value="ruoyi-visual/ruoyi-snailai-server/Dockerfile" />
</settings>
</deployment>
<method v="2" />
</configuration>
</component>
@@ -1,10 +1,10 @@
<component name="ProjectRunConfigurationManager">
<configuration default="false" name="ruoyi-job" type="docker-deploy" factoryName="dockerfile" server-name="Docker">
<configuration default="false" name="seewis-ai" type="docker-deploy" factoryName="dockerfile" server-name="Docker">
<deployment type="dockerfile">
<settings>
<option name="imageTag" value="ruoyi/ruoyi-job:6.0.0" />
<option name="imageTag" value="ruoyi/seewis-ai:6.0.0" />
<option name="buildOnly" value="true" />
<option name="sourceFilePath" value="ruoyi-modules/ruoyi-job/Dockerfile" />
<option name="sourceFilePath" value="seewis-modules/seewis-ai/Dockerfile" />
</settings>
</deployment>
<method v="2" />
@@ -1,10 +1,10 @@
<component name="ProjectRunConfigurationManager">
<configuration default="false" name="ruoyi-nacos" type="docker-deploy" factoryName="dockerfile" server-name="Docker">
<configuration default="false" name="seewis-auth" type="docker-deploy" factoryName="dockerfile" server-name="Docker">
<deployment type="dockerfile">
<settings>
<option name="imageTag" value="ruoyi/ruoyi-nacos:6.0.0" />
<option name="imageTag" value="ruoyi/seewis-auth:6.0.0" />
<option name="buildOnly" value="true" />
<option name="sourceFilePath" value="ruoyi-visual/ruoyi-nacos/Dockerfile" />
<option name="sourceFilePath" value="seewis-auth/Dockerfile" />
</settings>
</deployment>
<method v="2" />
@@ -1,10 +1,10 @@
<component name="ProjectRunConfigurationManager">
<configuration default="false" name="ruoyi-resource" type="docker-deploy" factoryName="dockerfile" server-name="Docker">
<configuration default="false" name="seewis-gateway" type="docker-deploy" factoryName="dockerfile" server-name="Docker">
<deployment type="dockerfile">
<settings>
<option name="imageTag" value="ruoyi/ruoyi-resource:6.0.0" />
<option name="imageTag" value="ruoyi/seewis-gateway:6.0.0" />
<option name="buildOnly" value="true" />
<option name="sourceFilePath" value="ruoyi-modules/ruoyi-resource/Dockerfile" />
<option name="sourceFilePath" value="seewis-gateway/Dockerfile" />
</settings>
</deployment>
<method v="2" />
@@ -1,10 +1,10 @@
<component name="ProjectRunConfigurationManager">
<configuration default="false" name="ruoyi-auth" type="docker-deploy" factoryName="dockerfile" server-name="Docker">
<configuration default="false" name="seewis-gen" type="docker-deploy" factoryName="dockerfile" server-name="Docker">
<deployment type="dockerfile">
<settings>
<option name="imageTag" value="ruoyi/ruoyi-auth:6.0.0" />
<option name="imageTag" value="ruoyi/seewis-gen:6.0.0" />
<option name="buildOnly" value="true" />
<option name="sourceFilePath" value="ruoyi-auth/Dockerfile" />
<option name="sourceFilePath" value="seewis-modules/seewis-gen/Dockerfile" />
</settings>
</deployment>
<method v="2" />
+12
View File
@@ -0,0 +1,12 @@
<component name="ProjectRunConfigurationManager">
<configuration default="false" name="seewis-job" type="docker-deploy" factoryName="dockerfile" server-name="Docker">
<deployment type="dockerfile">
<settings>
<option name="imageTag" value="ruoyi/seewis-job:6.0.0" />
<option name="buildOnly" value="true" />
<option name="sourceFilePath" value="seewis-modules/seewis-job/Dockerfile" />
</settings>
</deployment>
<method v="2" />
</configuration>
</component>
@@ -1,10 +1,10 @@
<component name="ProjectRunConfigurationManager">
<configuration default="false" name="ruoyi-workflow" type="docker-deploy" factoryName="dockerfile" server-name="Docker">
<configuration default="false" name="seewis-monitor" type="docker-deploy" factoryName="dockerfile" server-name="Docker">
<deployment type="dockerfile">
<settings>
<option name="imageTag" value="ruoyi/ruoyi-workflow:6.0.0" />
<option name="imageTag" value="ruoyi/seewis-monitor:6.0.0" />
<option name="buildOnly" value="true" />
<option name="sourceFilePath" value="ruoyi-modules/ruoyi-workflow/Dockerfile" />
<option name="sourceFilePath" value="seewis-visual/seewis-monitor/Dockerfile" />
</settings>
</deployment>
<method v="2" />
@@ -1,10 +1,10 @@
<component name="ProjectRunConfigurationManager">
<configuration default="false" name="ruoyi-system" type="docker-deploy" factoryName="dockerfile" server-name="Docker">
<configuration default="false" name="seewis-nacos" type="docker-deploy" factoryName="dockerfile" server-name="Docker">
<deployment type="dockerfile">
<settings>
<option name="imageTag" value="ruoyi/ruoyi-system:6.0.0" />
<option name="imageTag" value="ruoyi/seewis-nacos:6.0.0" />
<option name="buildOnly" value="true" />
<option name="sourceFilePath" value="ruoyi-modules/ruoyi-system/Dockerfile" />
<option name="sourceFilePath" value="seewis-visual/seewis-nacos/Dockerfile" />
</settings>
</deployment>
<method v="2" />
+12
View File
@@ -0,0 +1,12 @@
<component name="ProjectRunConfigurationManager">
<configuration default="false" name="seewis-resource" type="docker-deploy" factoryName="dockerfile" server-name="Docker">
<deployment type="dockerfile">
<settings>
<option name="imageTag" value="ruoyi/seewis-resource:6.0.0" />
<option name="buildOnly" value="true" />
<option name="sourceFilePath" value="seewis-modules/seewis-resource/Dockerfile" />
</settings>
</deployment>
<method v="2" />
</configuration>
</component>
+12
View File
@@ -0,0 +1,12 @@
<component name="ProjectRunConfigurationManager">
<configuration default="false" name="seewis-seata-server" type="docker-deploy" factoryName="dockerfile" server-name="Docker">
<deployment type="dockerfile">
<settings>
<option name="imageTag" value="ruoyi/seewis-seata-server:6.0.0" />
<option name="buildOnly" value="true" />
<option name="sourceFilePath" value="seewis-visual/seewis-seata-server/Dockerfile" />
</settings>
</deployment>
<method v="2" />
</configuration>
</component>
@@ -1,10 +1,10 @@
<component name="ProjectRunConfigurationManager">
<configuration default="false" name="ruoyi-snailjob-server" type="docker-deploy" factoryName="dockerfile" server-name="Docker">
<configuration default="false" name="seewis-snailai-server" type="docker-deploy" factoryName="dockerfile" server-name="Docker">
<deployment type="dockerfile">
<settings>
<option name="imageTag" value="ruoyi/ruoyi-snailjob-server:6.0.0" />
<option name="imageTag" value="ruoyi/seewis-snailai-server:6.0.0" />
<option name="buildOnly" value="true" />
<option name="sourceFilePath" value="ruoyi-visual/ruoyi-snailjob-server/Dockerfile" />
<option name="sourceFilePath" value="seewis-visual/seewis-snailai-server/Dockerfile" />
</settings>
</deployment>
<method v="2" />
+12
View File
@@ -0,0 +1,12 @@
<component name="ProjectRunConfigurationManager">
<configuration default="false" name="seewis-snailjob-server" type="docker-deploy" factoryName="dockerfile" server-name="Docker">
<deployment type="dockerfile">
<settings>
<option name="imageTag" value="ruoyi/seewis-snailjob-server:6.0.0" />
<option name="buildOnly" value="true" />
<option name="sourceFilePath" value="seewis-visual/seewis-snailjob-server/Dockerfile" />
</settings>
</deployment>
<method v="2" />
</configuration>
</component>
@@ -1,10 +1,10 @@
<component name="ProjectRunConfigurationManager">
<configuration default="false" name="ruoyi-monitor" type="docker-deploy" factoryName="dockerfile" server-name="Docker">
<configuration default="false" name="seewis-system" type="docker-deploy" factoryName="dockerfile" server-name="Docker">
<deployment type="dockerfile">
<settings>
<option name="imageTag" value="ruoyi/ruoyi-monitor:6.0.0" />
<option name="imageTag" value="ruoyi/seewis-system:6.0.0" />
<option name="buildOnly" value="true" />
<option name="sourceFilePath" value="ruoyi-visual/ruoyi-monitor/Dockerfile" />
<option name="sourceFilePath" value="seewis-modules/seewis-system/Dockerfile" />
</settings>
</deployment>
<method v="2" />
+12
View File
@@ -0,0 +1,12 @@
<component name="ProjectRunConfigurationManager">
<configuration default="false" name="seewis-workflow" type="docker-deploy" factoryName="dockerfile" server-name="Docker">
<deployment type="dockerfile">
<settings>
<option name="imageTag" value="ruoyi/seewis-workflow:6.0.0" />
<option name="buildOnly" value="true" />
<option name="sourceFilePath" value="seewis-modules/seewis-workflow/Dockerfile" />
</settings>
</deployment>
<method v="2" />
</configuration>
</component>
+25 -21
View File
@@ -5,12 +5,12 @@
<modelVersion>4.0.0</modelVersion>
<groupId>org.dromara</groupId>
<artifactId>ruoyi-cloud-plus</artifactId>
<artifactId>seewis-cloud-plus</artifactId>
<version>${revision}</version>
<name>RuoYi-Cloud-Plus</name>
<url>https://gitee.com/dromara/RuoYi-Cloud-Plus</url>
<description>Dromara RuoYi-Cloud-Plus微服务系统</description>
<name>seewis-cloud-plus</name>
<url>https://gitee.com/dromara/seewis-cloud-plus</url>
<description>Dromara seewis-cloud-plus微服务系统</description>
<properties>
<!-- 项目基础配置 -->
@@ -88,16 +88,21 @@
<maven.test.skip>true</maven.test.skip>
</properties>
<!-- 地址默认从环境变量读取,也可通过 Maven -D 参数手动覆盖。 -->
<profiles>
<profile>
<id>dev</id>
<properties>
<!-- 环境标识,需要与配置文件的名称相对应 -->
<profiles.active>dev</profiles.active>
<nacos.server>8.155.43.204:8848</nacos.server>
<nacos.username>nacos</nacos.username>
<!-- 环境变量 NACOS_SERVER;手动输入:-Dnacos.server=host:8848 -->
<nacos.server>${env.NACOS_SERVER}</nacos.server>
<!-- 环境变量 NACOS_USERNAME;手动输入:-Dnacos.username=user -->
<nacos.username>${env.NACOS_USERNAME}</nacos.username>
<!-- 环境变量 NACOS_PASSWORD;手动输入:-Dnacos.password=password -->
<nacos.password>${env.NACOS_PASSWORD}</nacos.password>
<logstash.address>8.155.43.204:4560</logstash.address>
<!-- 环境变量 LOGSTASH_ADDRESS;手动输入:-Dlogstash.address=host:4560 -->
<logstash.address>${env.LOGSTASH_ADDRESS}</logstash.address>
</properties>
<activation>
<!-- 默认环境 -->
@@ -108,10 +113,10 @@
<id>prod</id>
<properties>
<profiles.active>prod</profiles.active>
<nacos.server>8.155.43.204:8848</nacos.server>
<nacos.username>nacos</nacos.username>
<nacos.server>${env.NACOS_SERVER}</nacos.server>
<nacos.username>${env.NACOS_USERNAME}</nacos.username>
<nacos.password>${env.NACOS_PASSWORD}</nacos.password>
<logstash.address>8.155.43.204:4560</logstash.address>
<logstash.address>${env.LOGSTASH_ADDRESS}</logstash.address>
</properties>
</profile>
</profiles>
@@ -132,7 +137,7 @@
<!-- SpringCloud Alibaba 微服务 -->
<dependency>
<groupId>org.dromara</groupId>
<artifactId>ruoyi-common-alibaba-bom</artifactId>
<artifactId>seewis-common-alibaba-bom</artifactId>
<version>${revision}</version>
<type>pom</type>
<scope>import</scope>
@@ -177,7 +182,7 @@
<!-- common 的依赖配置-->
<dependency>
<groupId>org.dromara</groupId>
<artifactId>ruoyi-common-bom</artifactId>
<artifactId>seewis-common-bom</artifactId>
<version>${revision}</version>
<type>pom</type>
<scope>import</scope>
@@ -186,7 +191,7 @@
<!-- api 的依赖配置-->
<dependency>
<groupId>org.dromara</groupId>
<artifactId>ruoyi-api-bom</artifactId>
<artifactId>seewis-api-bom</artifactId>
<version>${revision}</version>
<type>pom</type>
<scope>import</scope>
@@ -446,13 +451,13 @@
</dependencyManagement>
<modules>
<module>ruoyi-auth</module>
<module>ruoyi-gateway</module>
<module>ruoyi-visual</module>
<module>ruoyi-modules</module>
<module>ruoyi-api</module>
<module>ruoyi-common</module>
<module>ruoyi-example</module>
<module>seewis-auth</module>
<module>seewis-gateway</module>
<module>seewis-visual</module>
<module>seewis-modules</module>
<module>seewis-api</module>
<module>seewis-common</module>
<module>seewis-example</module>
</modules>
<packaging>pom</packaging>
@@ -590,4 +595,3 @@
</pluginRepositories>
</project>
-56
View File
@@ -1,56 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://maven.apache.org/POM/4.0.0"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<parent>
<groupId>org.dromara</groupId>
<artifactId>ruoyi-cloud-plus</artifactId>
<version>${revision}</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<modules>
<module>ruoyi-common-bom</module>
<module>ruoyi-common-alibaba-bom</module>
<module>ruoyi-common-log</module>
<module>ruoyi-common-service-impl</module>
<module>ruoyi-common-excel</module>
<module>ruoyi-common-core</module>
<module>ruoyi-common-redis</module>
<module>ruoyi-common-doc</module>
<module>ruoyi-common-security</module>
<module>ruoyi-common-satoken</module>
<module>ruoyi-common-web</module>
<module>ruoyi-common-mybatis</module>
<module>ruoyi-common-job</module>
<module>ruoyi-common-dubbo</module>
<module>ruoyi-common-seata</module>
<module>ruoyi-common-loadbalancer</module>
<module>ruoyi-common-oss</module>
<module>ruoyi-common-mail</module>
<module>ruoyi-common-sms</module>
<module>ruoyi-common-logstash</module>
<module>ruoyi-common-elasticsearch</module>
<module>ruoyi-common-skylog</module>
<module>ruoyi-common-prometheus</module>
<module>ruoyi-common-translation</module>
<module>ruoyi-common-sensitive</module>
<module>ruoyi-common-json</module>
<module>ruoyi-common-encrypt</module>
<module>ruoyi-common-push</module>
<module>ruoyi-common-liteflow</module>
<module>ruoyi-common-social</module>
<module>ruoyi-common-nacos</module>
<module>ruoyi-common-bus</module>
<module>ruoyi-common-ai</module>
<module>ruoyi-common-mqtt</module>
<module>ruoyi-common-mcp</module>
</modules>
<artifactId>ruoyi-common</artifactId>
<packaging>pom</packaging>
<description>
ruoyi-common通用模块
</description>
</project>
+5 -5
View File
@@ -8,11 +8,11 @@
|---|---|---|
| `application-common.yml` | 所有服务共享的公共配置 | `spring.data.redis`(host/port/password)、`spring.rabbitmq`、`sa-token.jwt-secret-key`(务必换成自己的随机串)、监控账号(nacos discovery metadata) |
| `datasource.yml` | 数据库连接 | 各库 jdbc 地址/账号/密码(system / job / ai / workflow) |
| `ruoyi-auth.yml` | 认证服务 | `security.captcha`(验证码开关与类型)、`security.xcx.apps`(小程序 appid/密钥兜底配置,正式建议用参数管理 `sys.account.xcxApps`)、`justauth`(三方登录密钥) |
| `ruoyi-gateway.yml` | 网关 | `security.ignore.whites`(放行白名单)、路由规则 |
| `ruoyi-system.yml` | 系统模块 | `spring.liquibase.enabled`:**全新空库首次启动改为 `true`** 初始化表结构和种子数据,初始化完成后建议改回 `false` |
| `ruoyi-resource.yml` / `ruoyi-job.yml` / `ruoyi-workflow.yml` / `ruoyi-gen.yml` / `ruoyi-ai.yml` / `ruoyi-snailai-server.yml` / `ruoyi-snailjob-server.yml` | 对应模块 | 各自的 liquibase 开关、第三方参数,按需修改 |
| `ruoyi-monitor.yml` | SpringBoot Admin 监控 | 监控服务账号密码,按需修改 |
| `seewis-auth.yml` | 认证服务 | `security.captcha`(验证码开关与类型)、`security.xcx.apps`(小程序 appid/密钥兜底配置,正式建议用参数管理 `sys.account.xcxApps`)、`justauth`(三方登录密钥) |
| `seewis-gateway.yml` | 网关 | `security.ignore.whites`(放行白名单)、路由规则 |
| `seewis-system.yml` | 系统模块 | `spring.liquibase.enabled`:**全新空库首次启动改为 `true`** 初始化表结构和种子数据,初始化完成后建议改回 `false` |
| `seewis-resource.yml` / `seewis-job.yml` / `seewis-workflow.yml` / `seewis-gen.yml` / `seewis-ai.yml` / `seewis-snailai-server.yml` / `seewis-snailjob-server.yml` | 对应模块 | 各自的 liquibase 开关、第三方参数,按需修改 |
| `seewis-monitor.yml` | SpringBoot Admin 监控 | 监控服务账号密码,按需修改 |
| `seata-server.properties` | Seata 服务端配置 | 脚本只导入 `*.yml`,此文件需手动在 Nacos 控制台创建(dataId `seata-server.properties`,group `DEFAULT_GROUP`,类型 `properties`) |
> 注意:**导入会覆盖服务器上 dataId 相同的同名配置**(按 dataId 全量覆盖),服务器上已有个性化修改的配置请先备份或在控制台核对差异。
+1 -1
View File
@@ -258,7 +258,7 @@ seata:
registry:
type: nacos
nacos:
application: ruoyi-seata-server
application: seewis-seata-server
server-addr: ${spring.cloud.nacos.server-addr}
group: ${spring.cloud.nacos.discovery.group}
username: ${spring.cloud.nacos.username}
+4 -4
View File
@@ -1,7 +1,7 @@
service.vgroupMapping.ruoyi-auth-group=default
service.vgroupMapping.ruoyi-system-group=default
service.vgroupMapping.ruoyi-resource-group=default
service.vgroupMapping.ruoyi-workflow-group=default
service.vgroupMapping.seewis-auth-group=default
service.vgroupMapping.seewis-system-group=default
service.vgroupMapping.seewis-resource-group=default
service.vgroupMapping.seewis-workflow-group=default
service.enableDegrade=false
service.disableGlobalTransaction=false
@@ -2,7 +2,7 @@ snail-ai:
# 启用客户端模式
enabled: true
# ==================== Server 连接 ====================
# Server 端 gRPC 地址(即 ruoyi-snailai-server 的 snail-ai.server.grpc-port)
# Server 端 gRPC 地址(即 seewis-snailai-server 的 snail-ai.server.grpc-port)
server-host: 127.0.0.1
server-port: 18888
# ==================== 客户端配置 ====================
@@ -45,62 +45,62 @@ spring:
enabled: true
routes:
# 认证中心
- id: ruoyi-auth
uri: lb://ruoyi-auth
- id: seewis-auth
uri: lb://seewis-auth
predicates:
- Path=/auth/**
filters:
- StripPrefix=1
# 代码生成
- id: ruoyi-gen
uri: lb://ruoyi-gen
- id: seewis-gen
uri: lb://seewis-gen
predicates:
- Path=/tool/**
filters:
- StripPrefix=1
# 系统模块
- id: ruoyi-system
uri: lb://ruoyi-system
- id: seewis-system
uri: lb://seewis-system
predicates:
- Path=/system/**,/monitor/**
filters:
- StripPrefix=1
# 资源服务
- id: ruoyi-resource
uri: lb://ruoyi-resource
- id: seewis-resource
uri: lb://seewis-resource
predicates:
- Path=/resource/**
filters:
- StripPrefix=1
# AI服务
- id: ruoyi-ai
uri: lb://ruoyi-ai
- id: seewis-ai
uri: lb://seewis-ai
predicates:
- Path=/snail-ai/**
filters:
- StripPrefix=1
# workflow服务
- id: ruoyi-workflow
uri: lb://ruoyi-workflow
- id: seewis-workflow
uri: lb://seewis-workflow
predicates:
- Path=/workflow/**
filters:
- StripPrefix=1
# warm-flow服务
- id: warm-flow
uri: lb://ruoyi-workflow
uri: lb://seewis-workflow
predicates:
- Path=/warm-flow-ui/**,/warm-flow/**
# 演示服务
- id: ruoyi-demo
uri: lb://ruoyi-demo
- id: seewis-demo
uri: lb://seewis-demo
predicates:
- Path=/demo/**
filters:
- StripPrefix=1
# MQ演示服务
- id: ruoyi-test-mq
uri: lb://ruoyi-test-mq
- id: seewis-test-mq
uri: lb://seewis-test-mq
predicates:
- Path=/test-mq/**
filters:
@@ -25,7 +25,7 @@ snail-job:
token: "SJ_cKqBTPzCsWA3VyuCfFoccmuIEGXjr5KT"
server:
# 从 nacos 获取服务
server-name: ruoyi-snailjob-server
server-name: seewis-snailjob-server
# 服务名优先 ip垫底
host: 127.0.0.1
port: 17888
@@ -10,7 +10,7 @@ spring:
title: RuoYi-Cloud-Plus服务监控中心
discovery:
# seata 不具有健康检查的能力 防止报错排除掉
ignored-services: ruoyi-seata-server
ignored-services: seewis-seata-server
# 忽略无用警告
thymeleaf:
check-template-location: false
+42 -42
View File
@@ -137,9 +137,9 @@ services:
privileged: true
network_mode: "host"
ruoyi-monitor:
image: ruoyi/ruoyi-monitor:6.0.0
container_name: ruoyi-monitor
seewis-monitor:
image: ruoyi/seewis-monitor:6.0.0
container_name: seewis-monitor
environment:
# 时区上海
TZ: Asia/Shanghai
@@ -147,15 +147,15 @@ services:
- "9100:9100"
volumes:
# 配置文件
- /docker/ruoyi-monitor/logs/:/ruoyi/monitor/logs
- /docker/seewis-monitor/logs/:/ruoyi/monitor/logs
# skywalking 探针
- /docker/skywalking/agent/:/ruoyi/skywalking/agent
privileged: true
network_mode: "host"
ruoyi-snailjob-server:
image: ruoyi/ruoyi-snailjob-server:6.0.0
container_name: ruoyi-snailjob-server
seewis-snailjob-server:
image: ruoyi/seewis-snailjob-server:6.0.0
container_name: seewis-snailjob-server
environment:
# 时区上海
TZ: Asia/Shanghai
@@ -167,9 +167,9 @@ services:
privileged: true
network_mode: "host"
ruoyi-snailai-server:
image: ruoyi/ruoyi-snailai-server:6.0.0
container_name: ruoyi-snailai-server
seewis-snailai-server:
image: ruoyi/seewis-snailai-server:6.0.0
container_name: seewis-snailai-server
environment:
# 时区上海
TZ: Asia/Shanghai
@@ -187,9 +187,9 @@ services:
privileged: true
network_mode: "host"
ruoyi-gateway:
image: ruoyi/ruoyi-gateway:6.0.0
container_name: ruoyi-gateway
seewis-gateway:
image: ruoyi/seewis-gateway:6.0.0
container_name: seewis-gateway
environment:
# 时区上海
TZ: Asia/Shanghai
@@ -197,15 +197,15 @@ services:
- "8080:8080"
volumes:
# 配置文件
- /docker/ruoyi-gateway/logs/:/ruoyi/gateway/logs
- /docker/seewis-gateway/logs/:/ruoyi/gateway/logs
# skywalking 探针
- /docker/skywalking/agent/:/ruoyi/skywalking/agent
privileged: true
network_mode: "host"
ruoyi-auth:
image: ruoyi/ruoyi-auth:6.0.0
container_name: ruoyi-auth
seewis-auth:
image: ruoyi/seewis-auth:6.0.0
container_name: seewis-auth
environment:
# 时区上海
TZ: Asia/Shanghai
@@ -213,15 +213,15 @@ services:
- "9210:9210"
volumes:
# 配置文件
- /docker/ruoyi-auth/logs/:/ruoyi/auth/logs
- /docker/seewis-auth/logs/:/ruoyi/auth/logs
# skywalking 探针
- /docker/skywalking/agent/:/ruoyi/skywalking/agent
privileged: true
network_mode: "host"
ruoyi-system:
image: ruoyi/ruoyi-system:6.0.0
container_name: ruoyi-system
seewis-system:
image: ruoyi/seewis-system:6.0.0
container_name: seewis-system
environment:
# 时区上海
TZ: Asia/Shanghai
@@ -229,15 +229,15 @@ services:
- "9201:9201"
volumes:
# 配置文件
- /docker/ruoyi-system/logs/:/ruoyi/system/logs
- /docker/seewis-system/logs/:/ruoyi/system/logs
# skywalking 探针
- /docker/skywalking/agent/:/ruoyi/skywalking/agent
privileged: true
network_mode: "host"
ruoyi-gen:
image: ruoyi/ruoyi-gen:6.0.0
container_name: ruoyi-gen
seewis-gen:
image: ruoyi/seewis-gen:6.0.0
container_name: seewis-gen
environment:
# 时区上海
TZ: Asia/Shanghai
@@ -245,15 +245,15 @@ services:
- "9202:9202"
volumes:
# 配置文件
- /docker/ruoyi-gen/logs/:/ruoyi/gen/logs
- /docker/seewis-gen/logs/:/ruoyi/gen/logs
# skywalking 探针
- /docker/skywalking/agent/:/ruoyi/skywalking/agent
privileged: true
network_mode: "host"
ruoyi-job:
image: ruoyi/ruoyi-job:6.0.0
container_name: ruoyi-job
seewis-job:
image: ruoyi/seewis-job:6.0.0
container_name: seewis-job
environment:
# 时区上海
TZ: Asia/Shanghai
@@ -263,15 +263,15 @@ services:
- "9203:9203"
volumes:
# 配置文件
- /docker/ruoyi-job/logs/:/ruoyi/job/logs
- /docker/seewis-job/logs/:/ruoyi/job/logs
# skywalking 探针
- /docker/skywalking/agent/:/ruoyi/skywalking/agent
privileged: true
network_mode: "host"
ruoyi-resource:
image: ruoyi/ruoyi-resource:6.0.0
container_name: ruoyi-resource
seewis-resource:
image: ruoyi/seewis-resource:6.0.0
container_name: seewis-resource
environment:
# 时区上海
TZ: Asia/Shanghai
@@ -279,15 +279,15 @@ services:
- "9204:9204"
volumes:
# 配置文件
- /docker/ruoyi-resource/logs/:/ruoyi/resource/logs
- /docker/seewis-resource/logs/:/ruoyi/resource/logs
# skywalking 探针
- /docker/skywalking/agent/:/ruoyi/skywalking/agent
privileged: true
network_mode: "host"
ruoyi-workflow:
image: ruoyi/ruoyi-workflow:6.0.0
container_name: ruoyi-workflow
seewis-workflow:
image: ruoyi/seewis-workflow:6.0.0
container_name: seewis-workflow
environment:
# 时区上海
TZ: Asia/Shanghai
@@ -295,15 +295,15 @@ services:
- "9205:9205"
volumes:
# 配置文件
- /docker/ruoyi-workflow/logs/:/ruoyi/workflow/logs
- /docker/seewis-workflow/logs/:/ruoyi/workflow/logs
# skywalking 探针
- /docker/skywalking/agent/:/ruoyi/skywalking/agent
privileged: true
network_mode: "host"
ruoyi-ai:
image: ruoyi/ruoyi-ai:6.0.0
container_name: ruoyi-ai
seewis-ai:
image: ruoyi/seewis-ai:6.0.0
container_name: seewis-ai
environment:
# 时区上海
TZ: Asia/Shanghai
@@ -312,7 +312,7 @@ services:
- "29206:29206"
volumes:
# 配置文件
- /docker/ruoyi-ai/logs/:/ruoyi/ai/logs
- /docker/seewis-ai/logs/:/ruoyi/ai/logs
# skywalking 探针
- /docker/skywalking/agent/:/ruoyi/skywalking/agent
# Snail AI Skill 临时目录
+7 -7
View File
@@ -3,23 +3,23 @@
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<parent>
<groupId>org.dromara</groupId>
<artifactId>ruoyi-cloud-plus</artifactId>
<artifactId>seewis-cloud-plus</artifactId>
<version>${revision}</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<modules>
<module>ruoyi-api-bom</module>
<module>ruoyi-api-system</module>
<module>ruoyi-api-resource</module>
<module>ruoyi-api-workflow</module>
<module>seewis-api-bom</module>
<module>seewis-api-system</module>
<module>seewis-api-resource</module>
<module>seewis-api-workflow</module>
</modules>
<artifactId>ruoyi-api</artifactId>
<artifactId>seewis-api</artifactId>
<packaging>pom</packaging>
<description>
ruoyi-api系统接口
seewis-api系统接口
</description>
</project>
@@ -6,12 +6,12 @@
<modelVersion>4.0.0</modelVersion>
<groupId>org.dromara</groupId>
<artifactId>ruoyi-api-bom</artifactId>
<artifactId>seewis-api-bom</artifactId>
<packaging>pom</packaging>
<version>${revision}</version>
<description>
ruoyi-api-bom api依赖项
seewis-api-bom api依赖项
</description>
<properties>
@@ -23,21 +23,21 @@
<!-- 系统接口 -->
<dependency>
<groupId>org.dromara</groupId>
<artifactId>ruoyi-api-system</artifactId>
<artifactId>seewis-api-system</artifactId>
<version>${revision}</version>
</dependency>
<!-- 资源服务接口 -->
<dependency>
<groupId>org.dromara</groupId>
<artifactId>ruoyi-api-resource</artifactId>
<artifactId>seewis-api-resource</artifactId>
<version>${revision}</version>
</dependency>
<!-- workflow接口 -->
<dependency>
<groupId>org.dromara</groupId>
<artifactId>ruoyi-api-workflow</artifactId>
<artifactId>seewis-api-workflow</artifactId>
<version>${revision}</version>
</dependency>
@@ -4,15 +4,15 @@
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<parent>
<groupId>org.dromara</groupId>
<artifactId>ruoyi-api</artifactId>
<artifactId>seewis-api</artifactId>
<version>${revision}</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>ruoyi-api-resource</artifactId>
<artifactId>seewis-api-resource</artifactId>
<description>
ruoyi-api-resource 资源服务接口模块
seewis-api-resource 资源服务接口模块
</description>
<dependencies>
@@ -20,7 +20,7 @@
<!-- RuoYi Common Core-->
<dependency>
<groupId>org.dromara</groupId>
<artifactId>ruoyi-common-core</artifactId>
<artifactId>seewis-common-core</artifactId>
</dependency>
</dependencies>
@@ -4,15 +4,15 @@
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<parent>
<groupId>org.dromara</groupId>
<artifactId>ruoyi-api</artifactId>
<artifactId>seewis-api</artifactId>
<version>${revision}</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>ruoyi-api-system</artifactId>
<artifactId>seewis-api-system</artifactId>
<description>
ruoyi-api-system系统接口模块
seewis-api-system系统接口模块
</description>
<dependencies>
@@ -20,12 +20,12 @@
<!-- RuoYi Common Core-->
<dependency>
<groupId>org.dromara</groupId>
<artifactId>ruoyi-common-core</artifactId>
<artifactId>seewis-common-core</artifactId>
</dependency>
<!-- <dependency>-->
<!-- <groupId>org.dromara</groupId>-->
<!-- <artifactId>ruoyi-common-excel</artifactId>-->
<!-- <artifactId>seewis-common-excel</artifactId>-->
<!-- </dependency>-->
</dependencies>
@@ -4,15 +4,15 @@
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<parent>
<groupId>org.dromara</groupId>
<artifactId>ruoyi-api</artifactId>
<artifactId>seewis-api</artifactId>
<version>${revision}</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>ruoyi-api-workflow</artifactId>
<artifactId>seewis-api-workflow</artifactId>
<description>
ruoyi-api-workflow 工作流接口模块
seewis-api-workflow 工作流接口模块
</description>
<dependencies>
@@ -20,13 +20,13 @@
<!-- RuoYi Common Core-->
<dependency>
<groupId>org.dromara</groupId>
<artifactId>ruoyi-common-core</artifactId>
<artifactId>seewis-common-core</artifactId>
</dependency>
<!-- 非必需模块 如果需要跟工作流同步数据 则需要在对应服务内引入bus模块 如果只是调用工作流api则不需要 -->
<dependency>
<groupId>org.dromara</groupId>
<artifactId>ruoyi-common-bus</artifactId>
<artifactId>seewis-common-bus</artifactId>
<optional>true</optional>
</dependency>
@@ -15,12 +15,12 @@ ENV SERVER_PORT=9210 LANG=C.UTF-8 LC_ALL=C.UTF-8 JAVA_OPTS=""
EXPOSE ${SERVER_PORT}
ADD ./target/ruoyi-auth.jar ./app.jar
ADD ./target/seewis-auth.jar ./app.jar
SHELL ["/bin/bash", "-c"]
ENTRYPOINT java -Djava.security.egd=file:/dev/./urandom -Dserver.port=${SERVER_PORT} \
#-Dskywalking.agent.service_name=ruoyi-auth \
#-Dskywalking.agent.service_name=seewis-auth \
#-javaagent:/ruoyi/skywalking/agent/skywalking-agent.jar \
-XX:+HeapDumpOnOutOfMemoryError -XX:+UseZGC ${JAVA_OPTS} \
-jar app.jar
+19 -19
View File
@@ -3,22 +3,22 @@
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<parent>
<groupId>org.dromara</groupId>
<artifactId>ruoyi-cloud-plus</artifactId>
<artifactId>seewis-cloud-plus</artifactId>
<version>${revision}</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>ruoyi-auth</artifactId>
<artifactId>seewis-auth</artifactId>
<description>
ruoyi-auth 认证授权中心
seewis-auth 认证授权中心
</description>
<dependencies>
<dependency>
<groupId>org.dromara</groupId>
<artifactId>ruoyi-common-nacos</artifactId>
<artifactId>seewis-common-nacos</artifactId>
</dependency>
<dependency>
@@ -29,82 +29,82 @@
<!-- RuoYi Common Security-->
<dependency>
<groupId>org.dromara</groupId>
<artifactId>ruoyi-common-security</artifactId>
<artifactId>seewis-common-security</artifactId>
</dependency>
<dependency>
<groupId>org.dromara</groupId>
<artifactId>ruoyi-common-social</artifactId>
<artifactId>seewis-common-social</artifactId>
</dependency>
<!-- RuoYi Common Log -->
<dependency>
<groupId>org.dromara</groupId>
<artifactId>ruoyi-common-log</artifactId>
<artifactId>seewis-common-log</artifactId>
</dependency>
<dependency>
<groupId>org.dromara</groupId>
<artifactId>ruoyi-common-doc</artifactId>
<artifactId>seewis-common-doc</artifactId>
</dependency>
<dependency>
<groupId>org.dromara</groupId>
<artifactId>ruoyi-common-web</artifactId>
<artifactId>seewis-common-web</artifactId>
</dependency>
<dependency>
<groupId>org.dromara</groupId>
<artifactId>ruoyi-common-redis</artifactId>
<artifactId>seewis-common-redis</artifactId>
</dependency>
<dependency>
<groupId>org.dromara</groupId>
<artifactId>ruoyi-common-encrypt</artifactId>
<artifactId>seewis-common-encrypt</artifactId>
</dependency>
<dependency>
<groupId>org.dromara</groupId>
<artifactId>ruoyi-common-dubbo</artifactId>
<artifactId>seewis-common-dubbo</artifactId>
</dependency>
<dependency>
<groupId>org.dromara</groupId>
<artifactId>ruoyi-common-seata</artifactId>
<artifactId>seewis-common-seata</artifactId>
</dependency>
<dependency>
<groupId>org.dromara</groupId>
<artifactId>ruoyi-common-service-impl</artifactId>
<artifactId>seewis-common-service-impl</artifactId>
</dependency>
<dependency>
<groupId>org.dromara</groupId>
<artifactId>ruoyi-api-resource</artifactId>
<artifactId>seewis-api-resource</artifactId>
</dependency>
<!-- 自定义负载均衡(多团队开发使用) -->
<!-- <dependency>-->
<!-- <groupId>org.dromara</groupId>-->
<!-- <artifactId>ruoyi-common-loadbalancer</artifactId>-->
<!-- <artifactId>seewis-common-loadbalancer</artifactId>-->
<!-- </dependency>-->
<!-- ELK 日志收集 -->
<!-- <dependency>-->
<!-- <groupId>org.dromara</groupId>-->
<!-- <artifactId>ruoyi-common-logstash</artifactId>-->
<!-- <artifactId>seewis-common-logstash</artifactId>-->
<!-- </dependency>-->
<!-- skywalking 日志收集 -->
<!-- <dependency>-->
<!-- <groupId>org.dromara</groupId>-->
<!-- <artifactId>ruoyi-common-skylog</artifactId>-->
<!-- <artifactId>seewis-common-skylog</artifactId>-->
<!-- </dependency>-->
<!-- prometheus 监控 -->
<!-- <dependency>-->
<!-- <groupId>org.dromara</groupId>-->
<!-- <artifactId>ruoyi-common-prometheus</artifactId>-->
<!-- <artifactId>seewis-common-prometheus</artifactId>-->
<!-- </dependency>-->
</dependencies>

Some files were not shown because too many files have changed in this diff Show More