6.9 KiB
6.9 KiB
Tasks: 拆分个人和企业利率定价发起接口
数据库变更任务
0. 数据库表结构更新
- 执行数据库迁移脚本,添加缺失字段:
id_numvarchar(100) - 证件号码(个人和企业都需要)loan_loopvarchar(10) - 循环功能(个人客户专用)is_trade_constructionvarchar(10) - 贸易和建筑业企业标识(企业客户专用)is_green_loanvarchar(10) - 绿色贷款(企业客户专用)is_tech_entvarchar(10) - 科技型企业(企业客户专用)loan_termvarchar(50) - 贷款期限(企业客户专用)
- 更新
LoanPricingWorkflowEntity 类,添加对应的属性和字段映射注解 - 验证数据库变更是否成功执行(需手动执行 SQL 脚本)
0.1 创建数据库迁移脚本
- 在
sql/目录下创建add_missing_fields.sql文件 - 包含所有 ALTER TABLE 语句
- 添加详细的注释说明每个字段的用途
后端实现任务
1. 创建 DTO 类
- 创建
PersonalLoanPricingCreateDTO.java- 添加共同字段:custIsn、custName、idType、idNum、guarType、applyAmt、collType、collThirdParty
- 添加个人客户特有字段:bizProof(是否有经营佐证)、loanLoop(循环功能)
- 添加共同字段验证注解:custIsn、guarType、applyAmt 为必填
- 添加担保方式枚举验证
- 创建
CorporateLoanPricingCreateDTO.java- 添加共同字段:custIsn、custName、idType、idNum、guarType、applyAmt、collType、collThirdParty
- 添加企业客户特有字段:isAgriGuar(省农担担保贷款)、isGreenLoan(绿色贷款)、isTechEnt(科技型企业)、isTradeConstruction(贸易和建筑业企业)、loanTerm(贷款期限)
- 添加共同字段验证注解:custIsn、guarType、applyAmt 为必填
- 添加担保方式枚举验证
2. 更新 Entity 类
- 在
LoanPricingWorkflow.java中添加缺失的字段属性:idNum- 证件号码loanLoop- 循环功能isTradeConstruction- 贸易和建筑业企业标识isGreenLoan- 绿色贷款isTechEnt- 科技型企业loanTerm- 贷款期限
- 为新字段添加 MyBatis Plus 字段映射注解(如果需要)
- 验证 Entity 类与数据库表字段映射正确(需执行 SQL 后验证)
3. 创建转换器工具类
- 创建
LoanPricingConverter.java- 实现
toEntity(PersonalLoanPricingCreateDTO)方法 - 实现
toEntity(CorporateLoanPricingCreateDTO)方法 - 确保自动设置 custType 为"个人"或"企业"
- 正确映射所有字段,包括新增的 idNum、loanLoop、isTradeConstruction、isGreenLoan、isTechEnt、loanTerm
- 实现
4. 修改 Service 层
- 在
ILoanPricingWorkflowService接口中添加:createPersonalLoanPricing(PersonalLoanPricingCreateDTO dto)方法声明createCorporateLoanPricing(CorporateLoanPricingCreateDTO dto)方法声明
- 在
LoanPricingWorkflowServiceImpl中实现新方法:- 实现
createPersonalLoanPricing方法,调用转换器后复用现有逻辑 - 实现
createCorporateLoanPricing方法,调用转换器后复用现有逻辑
- 实现
5. 修改 Controller 层
- 在
LoanPricingWorkflowController中添加:POST /loanPricing/workflow/create/personal接口POST /loanPricing/workflow/create/corporate接口
- 添加 Swagger 注解,明确标注接口用途和字段说明
- 保持原有接口不变,不做 @Deprecated 标记
6. 单元测试
- 创建
PersonalLoanPricingCreateDTOTest.java测试类- 测试必填字段验证(custIsn、guarType、applyAmt)
- 测试担保方式枚举验证(信用/保证/抵押/质押)
- 测试个人特有字段(bizProof、loanLoop)
- 创建
CorporateLoanPricingCreateDTOTest.java测试类- 测试必填字段验证(custIsn、guarType、applyAmt)
- 测试担保方式枚举验证(信用/保证/抵押/质押)
- 测试企业特有字段(isAgriGuar、isGreenLoan、isTechEnt、isTradeConstruction、loanTerm)
- 创建
LoanPricingConverterTest.java测试类- 测试个人 DTO 转 Entity 映射完整性
- 测试企业 DTO 转 Entity 映射完整性
- 验证 custType 自动设置正确
7. 集成测试与测试脚本
- 生成 HTTP 测试脚本
test_personal_create.http- 测试个人客户发起成功场景(完整必填字段)
- 测试缺少必填字段的失败场景
- 测试担保方式枚举验证失败场景
- 使用
/login/test接口获取测试 token
- 生成 HTTP 测试脚本
test_corporate_create.http- 测试企业客户发起成功场景(完整必填字段)
- 测试缺少必填字段的失败场景
- 测试担保方式枚举验证失败场景
- 测试企业特有字段(isAgriGuar、isGreenLoan、isTechEnt、loanTerm)
- 生成 HTTP 测试脚本
test_backward_compatibility.http- 验证原有
POST /loanPricing/workflow/create接口仍可正常工作
- 验证原有
- 生成 Shell 测试脚本
test_personal_create.sh- 将 HTTP 测试脚本转换为 Shell 脚本格式
- 使用 curl 命令进行接口调用
- 包含颜色输出和测试结果统计
- 生成 Shell 测试脚本
test_corporate_create.sh- 将 HTTP 测试脚本转换为 Shell 脚本格式
- 使用 curl 命令进行接口调用
- 包含颜色输出和测试结果统计
- 生成 Shell 测试脚本
test_backward_compatibility.sh- 将 HTTP 测试脚本转换为 Shell 脚本格式
- 使用 curl 命令进行接口调用
- 包含颜色输出和测试结果统计
- 执行所有测试脚本并验证结果
- 生成测试报告到
doc/目录
文档和部署
8. API 文档
- 更新 Swagger 文档,添加两个新接口的完整说明
- 生成并导出 API 文档到项目 doc 目录
9. 代码审查和合并
- 提交 Pull Request
- 通过代码审查
- 合并到主分支
依赖关系
- 数据库变更(任务0)必须最先执行:所有后端开发依赖于数据库字段完成
- 任务 1-5 可以并行开发(依赖任务0完成)
- 任务 6-7 依赖任务 1-5 完成
- 任务 8-9 依赖所有前序任务完成
注:本次变更仅涉及后端,前端暂不修改
验证检查点
- 数据库字段完整性:确保所有新增字段(idNum、loanLoop、isTradeConstruction、isGreenLoan、isTechEnt、loanTerm)已添加到数据库表
- Entity 类映射正确性:确保 Entity 类字段与数据库表字段一一对应
- DTO 验证:确保所有必填字段有
@NotBlank注解,枚举字段有正确的验证 - 转换器正确性:确保 DTO 到 Entity 的转换不丢失字段,包括新增字段
- API 路由:确保新接口路径正确且可访问
- 向后兼容:确保原有接口继续工作
- API 文档:确保 Swagger 文档正确显示所有接口的参数说明