修复 Redis 断连重连并更新中介导入文案
This commit is contained in:
@@ -4,7 +4,10 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import com.ruoyi.common.utils.SecurityUtils;
|
||||
import com.ruoyi.common.utils.StringUtils;
|
||||
import com.ruoyi.info.collection.domain.CcdiCustEnterpriseRelation;
|
||||
import com.ruoyi.info.collection.domain.CcdiEnterpriseBaseInfo;
|
||||
import com.ruoyi.info.collection.domain.CcdiIntermediaryEnterpriseRelation;
|
||||
import com.ruoyi.info.collection.domain.CcdiStaffEnterpriseRelation;
|
||||
import com.ruoyi.info.collection.domain.dto.CcdiEnterpriseBaseInfoAddDTO;
|
||||
import com.ruoyi.info.collection.domain.dto.CcdiEnterpriseBaseInfoEditDTO;
|
||||
import com.ruoyi.info.collection.domain.dto.CcdiEnterpriseBaseInfoQueryDTO;
|
||||
@@ -14,6 +17,9 @@ import com.ruoyi.info.collection.enums.DataSource;
|
||||
import com.ruoyi.info.collection.enums.EnterpriseRiskLevel;
|
||||
import com.ruoyi.info.collection.enums.EnterpriseSource;
|
||||
import com.ruoyi.info.collection.mapper.CcdiEnterpriseBaseInfoMapper;
|
||||
import com.ruoyi.info.collection.mapper.CcdiCustEnterpriseRelationMapper;
|
||||
import com.ruoyi.info.collection.mapper.CcdiIntermediaryEnterpriseRelationMapper;
|
||||
import com.ruoyi.info.collection.mapper.CcdiStaffEnterpriseRelationMapper;
|
||||
import com.ruoyi.info.collection.service.ICcdiEnterpriseBaseInfoImportService;
|
||||
import com.ruoyi.info.collection.service.ICcdiEnterpriseBaseInfoService;
|
||||
import jakarta.annotation.Resource;
|
||||
@@ -25,6 +31,7 @@ import org.springframework.transaction.annotation.Transactional;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.StringJoiner;
|
||||
import java.util.UUID;
|
||||
import java.util.concurrent.TimeUnit;
|
||||
|
||||
@@ -40,6 +47,15 @@ public class CcdiEnterpriseBaseInfoServiceImpl implements ICcdiEnterpriseBaseInf
|
||||
@Resource
|
||||
private CcdiEnterpriseBaseInfoMapper enterpriseBaseInfoMapper;
|
||||
|
||||
@Resource
|
||||
private CcdiStaffEnterpriseRelationMapper staffEnterpriseRelationMapper;
|
||||
|
||||
@Resource
|
||||
private CcdiCustEnterpriseRelationMapper custEnterpriseRelationMapper;
|
||||
|
||||
@Resource
|
||||
private CcdiIntermediaryEnterpriseRelationMapper intermediaryEnterpriseRelationMapper;
|
||||
|
||||
@Resource
|
||||
private ICcdiEnterpriseBaseInfoImportService enterpriseBaseInfoImportService;
|
||||
|
||||
@@ -96,6 +112,9 @@ public class CcdiEnterpriseBaseInfoServiceImpl implements ICcdiEnterpriseBaseInf
|
||||
if (socialCreditCodes == null || socialCreditCodes.length == 0) {
|
||||
return 0;
|
||||
}
|
||||
for (String socialCreditCode : socialCreditCodes) {
|
||||
validateDeleteRelations(socialCreditCode);
|
||||
}
|
||||
return enterpriseBaseInfoMapper.deleteBatchIds(List.of(socialCreditCodes));
|
||||
}
|
||||
|
||||
@@ -179,4 +198,23 @@ public class CcdiEnterpriseBaseInfoServiceImpl implements ICcdiEnterpriseBaseInf
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
private void validateDeleteRelations(String socialCreditCode) {
|
||||
StringJoiner relationTypes = new StringJoiner("、");
|
||||
if (staffEnterpriseRelationMapper.selectCount(new LambdaQueryWrapper<CcdiStaffEnterpriseRelation>()
|
||||
.eq(CcdiStaffEnterpriseRelation::getSocialCreditCode, socialCreditCode)) > 0) {
|
||||
relationTypes.add("员工");
|
||||
}
|
||||
if (custEnterpriseRelationMapper.selectCount(new LambdaQueryWrapper<CcdiCustEnterpriseRelation>()
|
||||
.eq(CcdiCustEnterpriseRelation::getSocialCreditCode, socialCreditCode)) > 0) {
|
||||
relationTypes.add("信贷客户");
|
||||
}
|
||||
if (intermediaryEnterpriseRelationMapper.selectCount(new LambdaQueryWrapper<CcdiIntermediaryEnterpriseRelation>()
|
||||
.eq(CcdiIntermediaryEnterpriseRelation::getSocialCreditCode, socialCreditCode)) > 0) {
|
||||
relationTypes.add("中介");
|
||||
}
|
||||
if (relationTypes.length() > 0) {
|
||||
throw new RuntimeException("统一社会信用代码[" + socialCreditCode + "]已关联" + relationTypes + ",删除失败");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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
|
||||
```
|
||||
|
||||
## 完成标准
|
||||
|
||||
- 实体库删除前会校验员工、信贷客户、中介三类关联
|
||||
- 存在关联时接口返回明确失败原因,不执行删除
|
||||
- 无关联时保留原有批量删除行为
|
||||
- 定向单元测试通过
|
||||
53
docs/plans/backend/2026-04-21-redis断连自动重连修复实施计划.md
Normal file
53
docs/plans/backend/2026-04-21-redis断连自动重连修复实施计划.md
Normal 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 调用
|
||||
- 不涉及数据库结构、前端页面、接口入参与返回结构变更
|
||||
@@ -0,0 +1,75 @@
|
||||
# 实体库管理导入浏览器测试记录
|
||||
|
||||
## 测试目标
|
||||
|
||||
- 在真实页面中下载“实体库管理”导入模板
|
||||
- 基于下载模板生成覆盖全部后端显式校验分支的测试数据
|
||||
- 通过页面上传测试文件并核对导入结果、失败记录与列表落库情况
|
||||
|
||||
## 测试环境
|
||||
|
||||
- 测试日期:2026-04-21
|
||||
- 前端地址:`http://127.0.0.1:8080`
|
||||
- 后端地址:`http://127.0.0.1:62318`
|
||||
- 登录账号:`admin`
|
||||
- 登录方式:浏览器页面登录
|
||||
|
||||
## 测试文件
|
||||
|
||||
- 页面下载模板:`/Users/wkc/Desktop/ccdi/ccdi/.playwright-cli/实体库管理模板-1776753846277.xlsx`
|
||||
- 生成测试文件:`/Users/wkc/Desktop/ccdi/ccdi/output/spreadsheet/enterprise-base-info-import-browser-test.xlsx`
|
||||
|
||||
## 测试步骤
|
||||
|
||||
1. 登录系统后进入“信息维护 -> 实体库管理”页面。
|
||||
2. 打开导入弹窗并点击“下载模板”。
|
||||
3. 基于下载模板填写 11 条测试数据。
|
||||
4. 在导入弹窗上传测试文件并点击“确定”。
|
||||
5. 等待异步导入完成。
|
||||
6. 核对列表新增数据、失败记录条数与失败原因。
|
||||
|
||||
## 测试数据覆盖范围
|
||||
|
||||
- 成功导入完整数据 1 条
|
||||
- 成功导入最简数据 1 条
|
||||
- 与库内已存在统一社会信用代码重复 1 条
|
||||
- 文件内统一社会信用代码重复 1 条
|
||||
- 企业名称为空 1 条
|
||||
- 统一社会信用代码为空 1 条
|
||||
- 统一社会信用代码格式错误 1 条
|
||||
- 经营状态为空 1 条
|
||||
- 风险等级非法 1 条
|
||||
- 企业来源非法 1 条
|
||||
- 数据来源非法 1 条
|
||||
|
||||
## 页面验证结果
|
||||
|
||||
- 模板下载成功。
|
||||
- 上传请求成功发送到 `/dev-api/ccdi/enterpriseBaseInfo/importData`。
|
||||
- 导入任务状态写入浏览器本地存储:
|
||||
- `status=PARTIAL_SUCCESS`
|
||||
- `totalCount=11`
|
||||
- `successCount=2`
|
||||
- `failureCount=9`
|
||||
- 列表总数由 `2001` 增加到 `2003`,与成功导入 2 条一致。
|
||||
- 新增记录已出现在列表顶部:
|
||||
- `浏览器测试实体企业A / 992604210000000001`
|
||||
- `浏览器测试实体企业B / 992604210000000002`
|
||||
- “查看导入失败记录”弹窗成功展示 9 条失败数据。
|
||||
|
||||
## 失败原因核对
|
||||
|
||||
- `111333432959145585`:统一社会信用代码已存在
|
||||
- `992604210000000002`:统一社会信用代码在导入文件中重复
|
||||
- `992604210000000003`:企业名称不能为空
|
||||
- 空统一社会信用代码:统一社会信用代码不能为空
|
||||
- `ABC123`:统一社会信用代码格式不正确
|
||||
- `992604210000000004`:经营状态不能为空
|
||||
- `992604210000000005`:风险等级不在允许范围内
|
||||
- `992604210000000006`:企业来源不在允许范围内
|
||||
- `992604210000000007`:数据来源不在允许范围内
|
||||
|
||||
## 结论
|
||||
|
||||
- 实体库管理导入功能在真实浏览器场景下可正常完成模板下载、文件上传、异步导入、成功入库和失败记录展示。
|
||||
- 本次基于页面和后端实际行为验证,后端当前显式校验分支均已命中且返回结果符合预期。
|
||||
@@ -0,0 +1,22 @@
|
||||
# 实体库删除关联校验实施记录
|
||||
|
||||
## 基本信息
|
||||
|
||||
- 日期:2026-04-21
|
||||
- 范围:实体库管理后端删除校验
|
||||
- 关联计划:`docs/plans/backend/2026-04-21-enterprise-delete-relation-check-backend-implementation.md`
|
||||
|
||||
## 实施内容
|
||||
|
||||
- 在 `CcdiEnterpriseBaseInfoServiceImpl` 的 `deleteEnterpriseBaseInfoByIds` 中增加删除前校验逻辑。
|
||||
- 删除前分别查询员工实体关联、信贷客户实体关联、中介关联机构三张关系表,只要任一表存在当前统一社会信用代码的关联记录,即终止删除。
|
||||
- 失败提示按实际命中的关联类型拼装中文文案,例如“已关联员工”“已关联员工、信贷客户、中介”,便于页面直接回显原因。
|
||||
- 保持“先全部校验、后统一删除”的处理方式,避免批量删除时出现部分删除成功、部分失败的不一致情况。
|
||||
- 补充 `CcdiEnterpriseBaseInfoServiceImplTest`,覆盖删除成功、员工关联拦截、多关联拦截场景。
|
||||
|
||||
## 验证结果
|
||||
|
||||
- 执行命令:
|
||||
`mvn -pl ccdi-info-collection -am -Dsurefire.failIfNoSpecifiedTests=false -Dtest=CcdiEnterpriseBaseInfoServiceImplTest test`
|
||||
- 结果:PASS
|
||||
- 备注:Maven 构建过程中仍存在项目原有 `ccdi-lsfx` 重复依赖声明 warning,本次改动未触碰该问题,不影响本次测试通过。
|
||||
@@ -0,0 +1,76 @@
|
||||
# 中介库管理导入功能浏览器测试实施记录
|
||||
|
||||
## 本次操作
|
||||
|
||||
- 使用真实浏览器进入 `中介库管理` 页面。
|
||||
- 分别下载两类导入模板:
|
||||
- 中介和亲属信息导入模板
|
||||
- 中介实体关联关系导入模板
|
||||
- 基于下载模板生成浏览器回传测试文件,并在页面上传验证。
|
||||
|
||||
## 测试文件
|
||||
|
||||
- `output/spreadsheet/intermediary_person_import_browser_phase1.xlsx`
|
||||
- `output/spreadsheet/intermediary_person_import_browser_phase2_existing_db_cases.xlsx`
|
||||
- `output/spreadsheet/intermediary_enterprise_relation_import_browser_phase1.xlsx`
|
||||
- `output/spreadsheet/intermediary_enterprise_relation_import_browser_phase2_db_duplicate.xlsx`
|
||||
|
||||
## 验证结果
|
||||
|
||||
### 中介和亲属信息导入
|
||||
|
||||
- 第一轮导入结果:总数 `13`,成功 `4`,失败 `9`
|
||||
- 第二轮导入结果:总数 `2`,成功 `0`,失败 `2`
|
||||
- 成功数据已在页面列表可见:
|
||||
- `自动化中介本人A`
|
||||
- `自动化中介A配偶`
|
||||
- `文件内重复本人1`
|
||||
- `文件内重复亲属1`
|
||||
- 页面失败记录已确认命中:
|
||||
- 本人行关联字段错误
|
||||
- 亲属缺少关联本人
|
||||
- 姓名为空
|
||||
- 人员子类型为空
|
||||
- 证件号非法
|
||||
- 文件内本人重复
|
||||
- 关联本人不存在
|
||||
- 文件内亲属重复
|
||||
- 库内本人重复
|
||||
- 库内亲属重复
|
||||
|
||||
### 中介实体关联关系导入
|
||||
|
||||
- 第一轮导入结果:总数 `11`,成功 `3`,失败 `8`
|
||||
- 第二轮导入结果:总数 `1`,成功 `0`,失败 `1`
|
||||
- 成功数据已在页面列表可见:
|
||||
- `成都市资产企业 / 自动化中介本人A / 董事`
|
||||
- `上海市资产企业 / 自动化中介本人A / 监事`
|
||||
- `杭州市不动产合伙企业 / 自动化中介本人A / 法人`
|
||||
- 页面失败记录已确认命中:
|
||||
- 中介本人为空
|
||||
- 中介本人证件号非法
|
||||
- 中介本人不存在
|
||||
- 统一社会信用代码为空
|
||||
- 统一社会信用代码不存在
|
||||
- 关联人职务超长
|
||||
- 备注超长
|
||||
- 文件内关系重复
|
||||
- 库内关系重复
|
||||
|
||||
## 影响范围
|
||||
|
||||
- 页面:`ruoyi-ui/src/views/ccdiIntermediary/`
|
||||
- 后端接口:
|
||||
- `/ccdi/intermediary/importPersonTemplate`
|
||||
- `/ccdi/intermediary/importPersonData`
|
||||
- `/ccdi/intermediary/importPersonStatus/{taskId}`
|
||||
- `/ccdi/intermediary/importPersonFailures/{taskId}`
|
||||
- `/ccdi/intermediary/importEnterpriseRelationTemplate`
|
||||
- `/ccdi/intermediary/importEnterpriseRelationData`
|
||||
- `/ccdi/intermediary/importEnterpriseRelationStatus/{taskId}`
|
||||
- `/ccdi/intermediary/importEnterpriseRelationFailures/{taskId}`
|
||||
|
||||
## 说明
|
||||
|
||||
- `docs/tests/records/2026-04-21-intermediary-import-browser-test-record.md` 也已生成更完整测试记录,但该目录受当前仓库 `.gitignore` 规则影响,不进入版本管理。
|
||||
- 测试结束后,已关闭本次启动的前端开发进程和 Playwright 浏览器;后端沿用原有 `62318` 进程,未做重启或停止。
|
||||
@@ -0,0 +1,19 @@
|
||||
# 中介导入文案调整实施记录
|
||||
|
||||
## 基本信息
|
||||
|
||||
- 日期:2026-04-21
|
||||
- 范围:中介库前端导入入口文案调整
|
||||
|
||||
## 修改内容
|
||||
|
||||
- 将页面主按钮文案从“导入中介信息”改为“导入中介和亲属信息”。
|
||||
- 将失败记录入口和失败记录弹窗标题同步改为“中介和亲属信息”表述。
|
||||
- 将导入弹窗下载模板名称同步改为“中介和亲属信息导入模板”。
|
||||
- 同步更新前端静态测试断言,确保页面文案与测试基线一致。
|
||||
|
||||
## 验证结果
|
||||
|
||||
- 已执行:
|
||||
`source ~/.nvm/nvm.sh && cd ruoyi-ui && nvm use 14.21.3 >/dev/null && node tests/unit/intermediary-import-toolbar.test.js && node tests/unit/intermediary-import-dialog.test.js && node tests/unit/intermediary-import-state.test.js && node tests/unit/intermediary-person-edit-ui.test.js`
|
||||
- 结果:PASS
|
||||
41
docs/reports/implementation/2026-04-21-redis断连自动重连修复实施记录.md
Normal file
41
docs/reports/implementation/2026-04-21-redis断连自动重连修复实施记录.md
Normal file
@@ -0,0 +1,41 @@
|
||||
# Redis 断连自动重连修复实施记录
|
||||
|
||||
## 1. 本次修改内容
|
||||
|
||||
- 在 `ruoyi-framework` 的 Redis 配置中新增 Lettuce 连接工厂后处理器。
|
||||
- 对 Spring Boot 自动装配的 `LettuceConnectionFactory` 统一开启 `validateConnection`。
|
||||
- 新增回归测试,校验连接工厂初始化时已开启连接校验。
|
||||
- 为 `ruoyi-framework` 补充测试依赖。
|
||||
|
||||
## 2. 修改原因
|
||||
|
||||
后端 Redis 连接在发生断连后,存在持续复用失效连接的风险,导致 Redis 恢复后应用侧仍无法正常访问缓存。此次修复通过在连接工厂层开启连接校验,缩短恢复路径,避免业务代码层面持续拿到不可用连接。
|
||||
|
||||
## 3. 实际变更文件
|
||||
|
||||
- `ruoyi-framework/src/main/java/com/ruoyi/framework/config/RedisConfig.java`
|
||||
- `ruoyi-framework/src/test/java/com/ruoyi/framework/config/RedisConfigTest.java`
|
||||
- `ruoyi-framework/pom.xml`
|
||||
|
||||
## 4. 验证结果
|
||||
|
||||
已执行:
|
||||
|
||||
```bash
|
||||
mvn -pl ruoyi-framework -am test -Dtest=RedisConfigTest -Dsurefire.failIfNoSpecifiedTests=false
|
||||
```
|
||||
|
||||
执行结果:
|
||||
|
||||
- `BUILD SUCCESS`
|
||||
- `RedisConfigTest` 通过
|
||||
|
||||
## 5. 影响范围
|
||||
|
||||
- 后端 Redis 连接恢复行为
|
||||
- 所有依赖 `RedisTemplate` 与 `RedisCache` 的缓存、登录态、验证码、限流等功能
|
||||
|
||||
## 6. 备注
|
||||
|
||||
- 本次未改动 Redis 地址、密码、库索引、连接池大小等运行参数。
|
||||
- 本次未引入新的 Redis 客户端,仍保持现有 Spring Data Redis + Lettuce 方案。
|
||||
@@ -59,6 +59,13 @@
|
||||
<artifactId>ruoyi-system</artifactId>
|
||||
</dependency>
|
||||
|
||||
<!-- 测试依赖 -->
|
||||
<dependency>
|
||||
<groupId>org.springframework.boot</groupId>
|
||||
<artifactId>spring-boot-starter-test</artifactId>
|
||||
<scope>test</scope>
|
||||
</dependency>
|
||||
|
||||
</dependencies>
|
||||
|
||||
</project>
|
||||
@@ -2,9 +2,11 @@ package com.ruoyi.framework.config;
|
||||
|
||||
import org.springframework.cache.annotation.CachingConfigurerSupport;
|
||||
import org.springframework.cache.annotation.EnableCaching;
|
||||
import org.springframework.beans.factory.config.BeanPostProcessor;
|
||||
import org.springframework.context.annotation.Bean;
|
||||
import org.springframework.context.annotation.Configuration;
|
||||
import org.springframework.data.redis.connection.RedisConnectionFactory;
|
||||
import org.springframework.data.redis.connection.lettuce.LettuceConnectionFactory;
|
||||
import org.springframework.data.redis.core.RedisTemplate;
|
||||
import org.springframework.data.redis.core.script.DefaultRedisScript;
|
||||
import org.springframework.data.redis.serializer.StringRedisSerializer;
|
||||
@@ -19,6 +21,23 @@ import org.springframework.data.redis.serializer.StringRedisSerializer;
|
||||
@EnableCaching
|
||||
public class RedisConfig extends CachingConfigurerSupport
|
||||
{
|
||||
@Bean
|
||||
public static BeanPostProcessor lettuceConnectionFactoryBeanPostProcessor()
|
||||
{
|
||||
return new BeanPostProcessor()
|
||||
{
|
||||
@Override
|
||||
public Object postProcessBeforeInitialization(Object bean, String beanName)
|
||||
{
|
||||
if (bean instanceof LettuceConnectionFactory lettuceConnectionFactory)
|
||||
{
|
||||
lettuceConnectionFactory.setValidateConnection(true);
|
||||
}
|
||||
return bean;
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
@Bean
|
||||
@SuppressWarnings(value = { "unchecked", "rawtypes" })
|
||||
public RedisTemplate<Object, Object> redisTemplate(RedisConnectionFactory connectionFactory)
|
||||
|
||||
@@ -137,7 +137,7 @@ export default {
|
||||
return {
|
||||
uploadPath: "/ccdi/intermediary/importPersonData",
|
||||
templatePath: "ccdi/intermediary/importPersonTemplate",
|
||||
templateName: "中介信息导入模板",
|
||||
templateName: "中介和亲属信息导入模板",
|
||||
statusApi: getPersonImportStatus,
|
||||
tips: [
|
||||
"personSubType 为字典下拉;",
|
||||
|
||||
@@ -25,7 +25,7 @@
|
||||
size="mini"
|
||||
@click="handleOpenPersonImport"
|
||||
v-hasPermi="['ccdi:intermediary:import']"
|
||||
>导入中介信息</el-button>
|
||||
>导入中介和亲属信息</el-button>
|
||||
</el-col>
|
||||
<el-col :span="1.5">
|
||||
<el-button
|
||||
@@ -44,7 +44,7 @@
|
||||
icon="el-icon-warning"
|
||||
size="mini"
|
||||
@click="viewPersonImportFailures"
|
||||
>查看中介信息导入失败记录</el-button>
|
||||
>查看中介和亲属信息导入失败记录</el-button>
|
||||
</el-col>
|
||||
<el-col :span="1.5" v-if="enterpriseRelationImportTask && enterpriseRelationImportTask.failureCount > 0">
|
||||
<el-button
|
||||
@@ -131,7 +131,7 @@
|
||||
/>
|
||||
|
||||
<el-dialog
|
||||
title="中介信息导入失败记录"
|
||||
title="中介和亲属信息导入失败记录"
|
||||
:visible.sync="personFailureDialogVisible"
|
||||
width="1200px"
|
||||
append-to-body
|
||||
@@ -413,7 +413,7 @@ export default {
|
||||
},
|
||||
handleOpenPersonImport() {
|
||||
this.importScene = PERSON_SCENE;
|
||||
this.importDialogTitle = "导入中介信息";
|
||||
this.importDialogTitle = "导入中介和亲属信息";
|
||||
this.importDialogVisible = true;
|
||||
},
|
||||
handleOpenEnterpriseRelationImport() {
|
||||
|
||||
@@ -9,9 +9,9 @@ const pagePath = path.resolve(
|
||||
const source = fs.readFileSync(pagePath, "utf8");
|
||||
|
||||
[
|
||||
"导入中介信息",
|
||||
"导入中介和亲属信息",
|
||||
"导入中介实体关联关系",
|
||||
"查看中介信息导入失败记录",
|
||||
"查看中介和亲属信息导入失败记录",
|
||||
"查看中介实体关联关系导入失败记录",
|
||||
"personImportTask",
|
||||
"enterpriseRelationImportTask"
|
||||
|
||||
Reference in New Issue
Block a user