# 银行流水审计字段补充设计文档 ## 概述 本文档记录为 `GetBankStatementResponse.BankStatementItem` 类添加 `createdBy` 和 `createDate` 审计字段的设计方案。 ## 背景 ### 问题描述 外部流水分析平台的接口文档(6.5节)中包含 `createdBy` 和 `createDate` 字段,但我们的响应类 `GetBankStatementResponse.BankStatementItem` 中缺少这两个字段的定义,导致无法接收外部平台返回的审计信息。 ### 影响范围 - **直接影响:** `GetBankStatementResponse.BankStatementItem` 类 - **间接影响:** `CcdiBankStatement.fromResponse()` 方法(已有对应字段,无需修改) - **数据流:** 外部平台 → 响应类 → 实体类 → 数据库 ## 设计方案 ### 字段定义 在 `GetBankStatementResponse.BankStatementItem` 类中添加两个审计字段: | 字段名 | 类型 | 说明 | 来源 | |--------|------|------|------| | `createdBy` | `Long` | 创建者用户ID | 外部平台 | | `createDate` | `String` | 创建时间 | 外部平台 | ### 类型选择 - **createdBy**: 使用 `Long` 类型 - 与实体类 `CcdiBankStatement` 保持一致 - 用户ID通常为长整型数字 - **createDate**: 使用 `String` 类型 - 外部平台返回时间字符串格式(如 "2026-03-05 10:30:00") - 避免时间格式转换问题 - 由业务层负责转换为 Date 类型 ### 代码修改 **文件:** `ccdi-lsfx/src/main/java/com/ruoyi/lsfx/domain/response/GetBankStatementResponse.java` **修改位置:** 在 `BankStatementItem` 类的最后添加审计字段组 **修改内容:** ```java // ===== 审计字段 ===== /** 创建者 */ private Long createdBy; /** 创建时间 */ private String createDate; ``` ### 完整修改后的类结构 ```java @Data public static class BankStatementItem { // ===== 账号相关信息 ===== /** 流水ID */ private Long bankStatementId; // ... 其他字段 // ===== 附加字段 ===== /** 附件数量 */ private Integer attachments; // ... 其他附加字段 // ===== 审计字段 ===== /** 创建者 */ private Long createdBy; /** 创建时间 */ private String createDate; } ``` ## 数据流分析 ### 1. 接收外部数据 ``` 外部平台 → GetBankStatementResponse.BankStatementItem - createdBy: Long - createDate: String ``` ### 2. 转换为实体 ```java // CcdiBankStatement.fromResponse() 方法 CcdiBankStatement entity = new CcdiBankStatement(); BeanUtils.copyProperties(item, entity); // 自动复制 createdBy (Long → Long) // createDate 字段类型不匹配 (String → Date),需要手动转换 ``` **注意:** 如果需要自动转换 `createDate`,需要修改 `fromResponse()` 方法添加日期格式转换逻辑。 ### 3. 保存到数据库 ``` CcdiBankStatement - createdBy: Long → 数据库字段 created_by - createDate: Date → 数据库字段 create_date ``` ## 实现要点 ### 必须实现 1. ✅ 在 `BankStatementItem` 类中添加两个字段 2. ✅ 添加 Lombok `@Data` 注解会自动生成 getter/setter ### 可选优化 1. **日期转换:** 如果需要,在 `CcdiBankStatement.fromResponse()` 中添加 `createDate` 的日期格式转换 2. **字段验证:** 添加 `@JsonFormat` 注解指定日期格式(如果需要) ## 测试计划 ### 单元测试 - 验证 JSON 反序列化能正确映射这两个字段 - 验证 `fromResponse()` 方法能正确处理 `createdBy` 字段 ### 集成测试 1. 调用外部平台接口(或 mock 服务器) 2. 验证响应中包含 `createdBy` 和 `createDate` 3. 验证数据能正确保存到数据库 ### 测试数据 ```json { "createdBy": 12345, "createDate": "2026-03-05 14:30:00" } ``` ## 风险评估 | 风险 | 影响 | 概率 | 缓解措施 | |------|------|------|----------| | 外部平台不返回这两个字段 | 低 | 中 | 字段可以为 null,不影响现有功能 | | 日期格式不兼容 | 中 | 低 | 使用 String 类型接收,业务层处理转换 | | 类型不匹配 | 高 | 低 | 已确认类型与实体类一致 | ## 变更影响 ### 正面影响 - ✅ 补全接口字段,与外部平台文档对齐 - ✅ 支持审计信息传递 - ✅ 提升数据完整性 ### 负面影响 - 无(仅添加字段,不影响现有功能) ## 实现计划 1. 修改 `GetBankStatementResponse.BankStatementItem` 类 2. 更新相关的 API 文档(如有) 3. 执行集成测试验证功能 4. 提交代码并更新 CHANGELOG ## 参考资料 - 外部流水分析平台接口文档 6.5节 - `CcdiBankStatement` 实体类定义 - 项目开发规范(CLAUDE.md) ## 附录 ### 相关文件路径 - 响应类:`ccdi-lsfx/src/main/java/com/ruoyi/lsfx/domain/response/GetBankStatementResponse.java` - 实体类:`ccdi-project/src/main/java/com/ruoyi/ccdi/project/domain/entity/CcdiBankStatement.java` - 客户端:`ccdi-lsfx/src/main/java/com/ruoyi/lsfx/client/LsfxAnalysisClient.java` ### 数据库字段 ```sql -- ccdi_bank_statement 表 created_by BIGINT(20) COMMENT '创建者', create_date DATETIME COMMENT '创建时间' ```