修复 Redis 断连重连并更新中介导入文案

This commit is contained in:
wkc
2026-04-22 09:46:36 +08:00
parent 624b51292f
commit fc6af5234d
13 changed files with 392 additions and 8 deletions

View File

@@ -0,0 +1,34 @@
# 实体库删除关联校验后端实施计划
## 目标
在实体库管理删除接口中增加删除前校验,确保待删除实体与中介、员工、信贷客户不存在关联关系;一旦存在任一关联,当前删除操作直接失败并返回明确提示。
## 涉及文件
- `ccdi-info-collection/src/main/java/com/ruoyi/info/collection/service/impl/CcdiEnterpriseBaseInfoServiceImpl.java`
- `ccdi-info-collection/src/test/java/com/ruoyi/info/collection/service/CcdiEnterpriseBaseInfoServiceImplTest.java`
## 实施步骤
1.`CcdiEnterpriseBaseInfoServiceImpl` 的批量删除入口增加逐条删除前校验。
2. 使用现有三张关系表进行计数判断:
`ccdi_staff_enterprise_relation`
`ccdi_cust_enterprise_relation`
`ccdi_intermediary_enterprise_relation`
3. 若任一关系存在,拼装“员工/信贷客户/中介”中文提示并抛出运行时异常,阻断整批删除。
4. 保持所有待删实体均通过校验后,再执行原有批量删除。
5. 补充服务层单元测试,覆盖无关联可删除、单一关联拦截、多关联拦截三类场景。
## 验证命令
```bash
mvn -pl ccdi-info-collection -am -Dsurefire.failIfNoSpecifiedTests=false -Dtest=CcdiEnterpriseBaseInfoServiceImplTest test
```
## 完成标准
- 实体库删除前会校验员工、信贷客户、中介三类关联
- 存在关联时接口返回明确失败原因,不执行删除
- 无关联时保留原有批量删除行为
- 定向单元测试通过

View File

@@ -0,0 +1,53 @@
# Redis 断连自动重连修复实施计划
## 1. 背景
后端当前通过 Spring Boot 自动配置的 Lettuce `RedisConnectionFactory` 提供 Redis 连接。现场反馈 Redis 短暂断连或重启后,后端不会恢复可用连接,后续 Redis 访问持续失败。
## 2. 问题定位
- 项目未自定义 `LettuceConnectionFactory`,使用的是 Spring Boot 默认装配。
- 默认共享连接在未开启连接校验时,存在继续复用失效连接的风险。
- 当前 `ruoyi-framework` 仅配置了 `RedisTemplate` 序列化,未对 Lettuce 连接工厂做任何重连相关定制。
## 3. 实施方案
### 3.1 最短路径修复
`ruoyi-framework` 的 Redis 配置中增加一个 `BeanPostProcessor`,对 Spring Boot 自动创建的 `LettuceConnectionFactory` 统一开启 `validateConnection`
### 3.2 预期效果
- Redis 恢复可用后,连接工厂在获取共享连接时会先校验连接有效性。
- 避免继续复用已经失效的 Lettuce 共享连接。
- 不调整现有 `RedisTemplate`、业务缓存调用方式和 YAML 配置结构。
## 4. 代码改动点
- `ruoyi-framework/src/main/java/com/ruoyi/framework/config/RedisConfig.java`
- 增加 Lettuce 连接工厂后处理器。
- 在 Bean 初始化阶段统一开启 `validateConnection`
- `ruoyi-framework/src/test/java/com/ruoyi/framework/config/RedisConfigTest.java`
- 新增回归测试,校验 Lettuce 连接工厂会被强制打开连接校验。
- `ruoyi-framework/pom.xml`
- 增加 `spring-boot-starter-test` 测试依赖。
## 5. 验证计划
执行以下命令验证:
```bash
mvn -pl ruoyi-framework -am test -Dtest=RedisConfigTest -Dsurefire.failIfNoSpecifiedTests=false
```
验证通过标准:
- `RedisConfigTest` 通过。
- `ruoyi-framework` 模块构建成功。
- 不影响 `ruoyi-common``ruoyi-system` 作为依赖模块的测试阶段执行。
## 6. 影响范围
- 影响模块:`ruoyi-framework`
- 影响对象:所有通过 Spring 容器注入并复用 `RedisConnectionFactory` / `RedisTemplate` 的后端 Redis 调用
- 不涉及数据库结构、前端页面、接口入参与返回结构变更