154 lines
3.2 KiB
Markdown
154 lines
3.2 KiB
Markdown
# 设计文档: 执行利率设定接口
|
||
|
||
## 数据库设计
|
||
|
||
### 表结构变更
|
||
|
||
**表名**: `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`
|
||
- 自动记录操作人和操作时间
|