7.6 KiB
7.6 KiB
征信维护后端实施记录
1. 实施概述
- 实施日期:2026-03-24
- 实施范围:
ccdi-info-collection征信维护后端能力、SQL 脚本、联调验证、环境修正记录 - 实施结果:代码实现完成,目标测试通过,隔离端口联调通过
本次实现按设计文档完成以下能力:
- 新增
ccdi_debts_info、ccdi_credit_negative_info两张业务表脚本 - 新增“征信维护”菜单与按钮权限脚本
- 新增征信维护实体、DTO、VO、Mapper、装配器、服务、控制器
- 支持批量上传征信 HTML、按员工身份证号归户、按最新征信覆盖写入
- 支持员工维度列表、详情、删除接口
2. 实际修改文件
2.1 SQL
sql/migration/2026-03-23-create-credit-info-tables.sqlsql/ccdi_credit_info_menu.sqlsql/migration/2026-03-24-recreate-credit-negative-info-table.sql
2.2 后端代码
ccdi-info-collection/pom.xmlccdi-info-collection/src/main/java/com/ruoyi/info/collection/domain/CcdiDebtsInfo.javaccdi-info-collection/src/main/java/com/ruoyi/info/collection/domain/CcdiCreditNegativeInfo.javaccdi-info-collection/src/main/java/com/ruoyi/info/collection/domain/dto/CcdiCreditInfoQueryDTO.javaccdi-info-collection/src/main/java/com/ruoyi/info/collection/domain/vo/CreditInfoListVO.javaccdi-info-collection/src/main/java/com/ruoyi/info/collection/domain/vo/CreditInfoDetailVO.javaccdi-info-collection/src/main/java/com/ruoyi/info/collection/domain/vo/CreditInfoNegativeVO.javaccdi-info-collection/src/main/java/com/ruoyi/info/collection/domain/vo/CreditInfoUploadResultVO.javaccdi-info-collection/src/main/java/com/ruoyi/info/collection/domain/vo/CreditInfoUploadFailureVO.javaccdi-info-collection/src/main/java/com/ruoyi/info/collection/mapper/CcdiDebtsInfoMapper.javaccdi-info-collection/src/main/java/com/ruoyi/info/collection/mapper/CcdiCreditNegativeInfoMapper.javaccdi-info-collection/src/main/java/com/ruoyi/info/collection/mapper/CcdiCreditInfoQueryMapper.javaccdi-info-collection/src/main/java/com/ruoyi/info/collection/service/support/CreditInfoPayloadAssembler.javaccdi-info-collection/src/main/java/com/ruoyi/info/collection/service/ICcdiCreditInfoService.javaccdi-info-collection/src/main/java/com/ruoyi/info/collection/service/impl/CcdiCreditInfoServiceImpl.javaccdi-info-collection/src/main/java/com/ruoyi/info/collection/controller/CcdiCreditInfoController.javaccdi-info-collection/src/main/resources/mapper/info/collection/CcdiCreditInfoQueryMapper.xmlccdi-info-collection/src/main/resources/mapper/info/collection/CcdiDebtsInfoMapper.xmlccdi-info-collection/src/main/resources/mapper/info/collection/CcdiCreditNegativeInfoMapper.xml
2.3 测试代码
ccdi-info-collection/src/test/java/com/ruoyi/info/collection/service/support/CreditInfoPayloadAssemblerTest.javaccdi-info-collection/src/test/java/com/ruoyi/info/collection/service/CcdiCreditInfoServiceImplTest.javaccdi-info-collection/src/test/java/com/ruoyi/info/collection/controller/CcdiCreditInfoControllerTest.java
3. 关键实施说明
3.1 解析与落库
- 上传接口调用
CreditParseClient.parse("LXCUSTALL", "PERSON", tempFile) - 从
lx_header.query_cert_no归户到ccdi_base_staff.id_card - 从
lx_header.report_time提取query_date lx_debt按 7 组固定前缀映射为负债明细lx_publictype直接映射为负面信息汇总- 同一员工在事务内执行“先删后插”,仅保留最新征信
3.2 实际环境偏差与处理
联调时发现开发库已存在同名旧表 ccdi_credit_negative_info,结构与本次设计不一致:
- 旧表字段:
id、credit_info_id等 - 目标字段:
negative_id、person_id、person_name、query_date等
处理步骤:
- 先核对旧表行数:
SELECT COUNT(*) FROM ccdi_credit_negative_info; - 确认旧表为空表后,执行重建脚本
- 重建后重新执行上传、列表、详情、删除联调
4. SQL 执行记录
按仓库约定,涉及中文与建表脚本的执行均使用 bin/mysql_utf8_exec.sh:
bin/mysql_utf8_exec.sh sql/migration/2026-03-23-create-credit-info-tables.sql
bin/mysql_utf8_exec.sh sql/migration/2026-03-24-recreate-credit-negative-info-table.sql
执行结果:
- 首次执行建表脚本时,
ccdi_debts_info创建成功 - 由于开发库已存在旧版
ccdi_credit_negative_info,脚本在第二张表处提示已存在 - 通过重建脚本完成
ccdi_credit_negative_info修正
5. 测试与验证
5.1 单元测试与编译
执行命令:
mvn -pl ccdi-info-collection -Dtest=CreditInfoPayloadAssemblerTest test
mvn -pl ccdi-info-collection -Dtest=CcdiCreditInfoServiceImplTest test
mvn -pl ccdi-info-collection -Dtest=CcdiCreditInfoControllerTest test
mvn -pl ccdi-info-collection -Dtest=CreditInfoPayloadAssemblerTest,CcdiCreditInfoServiceImplTest,CcdiCreditInfoControllerTest test
mvn -pl ccdi-info-collection -am compile
mvn -pl ruoyi-admin -am package -DskipTests
验证结果:
CreditInfoPayloadAssemblerTest通过CcdiCreditInfoServiceImplTest通过CcdiCreditInfoControllerTest通过- 目标测试集合 7 条全部通过
ccdi-info-collection及上游依赖编译通过ruoyi-admin.jar打包成功
5.2 隔离端口联调
为避免影响本机已有开发进程,本次联调使用隔离端口:
- Mock 服务:
http://127.0.0.1:8001 - 后端服务:
http://127.0.0.1:62319
登录获取 token:
curl -X POST 'http://127.0.0.1:62319/login/test' \
-H 'Content-Type: application/json' \
-d '{"username":"admin","password":"admin123"}'
上传验证:
curl -H "Authorization: Bearer <token>" \
-F 'files=@assets/征信解析员工样本/0001_徐伟_2040.html;type=text/html' \
'http://127.0.0.1:62319/ccdi/creditInfo/upload'
结果:
code = 200data.totalCount = 1data.successCount = 1data.failureCount = 0
列表验证:
curl -H "Authorization: Bearer <token>" \
'http://127.0.0.1:62319/ccdi/creditInfo/list?pageNum=1&pageSize=10'
结果摘要:
- 返回
code = 200 - 员工
徐伟 / 558455197203132040可见 queryDate = 2024-12-09debtCount = 7civilCnt = 2enforceCnt = 13admCnt = 3
详情验证:
curl -H "Authorization: Bearer <token>" \
'http://127.0.0.1:62319/ccdi/creditInfo/558455197203132040'
结果摘要:
- 返回
code = 200 negativeInfo正常返回debtList返回 7 条明细
删除验证:
curl -X DELETE -H "Authorization: Bearer <token>" \
'http://127.0.0.1:62319/ccdi/creditInfo/558455197203132040'
curl -H "Authorization: Bearer <token>" \
'http://127.0.0.1:62319/ccdi/creditInfo/558455197203132040'
结果摘要:
- 删除接口返回
code = 200 - 删除后详情仍返回员工壳信息,但
negativeInfo = null、debtList = [] - 满足“删除后详情为空或提示未维护征信”的预期
6. 进程启停记录
本次联调启动的进程:
- Mock 服务:
python3 -m uvicorn main:app --host 0.0.0.0 --port 8001 - 后端服务:
java -jar ruoyi-admin/target/ruoyi-admin.jar --server.port=62319 --credit-parse.api.url=http://127.0.0.1:8001/xfeature-mngs/conversation/htmlEval
处理要求:
- 联调结束后已按仓库约定停止本次启动的后端与 Mock 进程
- 未触碰本机原有
8000、62318端口上的既有开发进程
7. 提交记录
本次实施包含以下提交:
fc78c2f新增征信维护建表与菜单脚本6959c7a新增征信维护对象与依赖骨架d2e3388新增征信解析结果装配器c22e379新增征信维护上传与覆盖服务155adbe新增征信维护查询与接口