# 设计文档: 执行利率设定接口 ## 数据库设计 ### 表结构变更 **表名**: `loan_pricing_workflow` **新增字段**: | 字段名 | 类型 | 可空 | 默认值 | 说明 | |--------------|-------------|----|------|---------| | execute_rate | varchar(20) | 是 | NULL | 执行利率(%) | **DDL**: ```sql ALTER TABLE `loan_pricing_workflow` ADD COLUMN `execute_rate` varchar(20) DEFAULT NULL COMMENT '执行利率(%)' AFTER `loan_rate`; ``` ## 接口设计 ### 设定执行利率接口 **请求方式**: `PUT /loanPricing/workflow/{serialNum}/executeRate` **权限要求**: 无特殊权限要求(与查询接口一致) **路径参数**: | 参数名 | 类型 | 必填 | 说明 | |-----------|--------|----|--------| | serialNum | String | 是 | 业务方流水号 | **请求体**: ```json { "executeRate": "4.20" } ``` **参数说明**: | 参数名 | 类型 | 必填 | 说明 | |-------------|--------|----|----------------------| | executeRate | String | 是 | 执行利率,字符串格式(如 "4.20") | **响应示例**: 成功 (200): ```json { "code": 200, "msg": "设定成功" } ``` 失败 (404): ```json { "code": 404, "msg": "记录不存在" } ``` 失败 (500): ```json { "code": 500, "msg": "设定失败" } ``` ## 代码设计 ### Entity 层 **LoanPricingWorkflow.java** ```java /** 执行利率(%) */ private String executeRate; ``` ### Service 层 **ILoanPricingWorkflowService.java** ```java /** * 设定执行利率 * @param serialNum 业务方流水号 * @param executeRate 执行利率 * @return 是否成功 */ boolean setExecuteRate(String serialNum, String executeRate); ``` **LoanPricingWorkflowServiceImpl.java** - 实现上述方法 - 根据 `serialNum` 更新记录的 `execute_rate` 字段 - MyBatis Plus 会自动填充 `update_by` 和 `update_time` ### Controller 层 **LoanPricingWorkflowController.java** ```java /** * 设定执行利率 */ @Operation(summary = "设定执行利率") @Log(title = "利率定价流程", businessType = BusinessType.UPDATE) @PutMapping("/{serialNum}/executeRate") public AjaxResult setExecuteRate( @Parameter(description = "业务方流水号") @PathVariable("serialNum") String serialNum, @RequestBody Map request) { String executeRate = request.get("executeRate"); boolean success = loanPricingWorkflowService.setExecuteRate(serialNum, executeRate); return success ? success() : error("设定失败"); } ``` ### VO 层变更 **LoanPricingWorkflowVO.java** - 添加 `executeRate` 字段到 VO,确保详情接口返回执行利率 ## 数据校验 1. **记录存在性**: 根据 `serialNum` 查询记录,不存在则返回 404 2. **更新结果检查**: 检查更新操作影响行数,0 行表示记录不存在 3. **格式校验**: 执行利率为字符串格式,前端传递格式化后的值(如 "4.20") ## 事务处理 - 使用 MyBatis Plus 的 `updateById` 方法,自动处理事务 - 更新失败时抛出异常,由全局异常处理器处理 ## 日志记录 - 使用 `@Log` 注解记录操作日志 - 日志类型: `BusinessType.UPDATE` - 自动记录操作人和操作时间