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