添加执行利率接口
This commit is contained in:
153
openspec/changes/add-execute-rate/design.md
Normal file
153
openspec/changes/add-execute-rate/design.md
Normal file
@@ -0,0 +1,153 @@
|
||||
# 设计文档: 执行利率设定接口
|
||||
|
||||
## 数据库设计
|
||||
|
||||
### 表结构变更
|
||||
|
||||
**表名**: `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<String, String> 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`
|
||||
- 自动记录操作人和操作时间
|
||||
Reference in New Issue
Block a user