Files
loan-pricing/openspec/changes/add-execute-rate/design.md
2026-01-22 15:04:40 +08:00

3.2 KiB
Raw Blame History

设计文档: 执行利率设定接口

数据库设计

表结构变更

表名: 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_byupdate_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确保详情接口返回执行利率

数据校验

  1. 记录存在性: 根据 serialNum 查询记录,不存在则返回 404
  2. 更新结果检查: 检查更新操作影响行数0 行表示记录不存在
  3. 格式校验: 执行利率为字符串格式,前端传递格式化后的值(如 "4.20"

事务处理

  • 使用 MyBatis Plus 的 updateById 方法,自动处理事务
  • 更新失败时抛出异常,由全局异常处理器处理

日志记录

  • 使用 @Log 注解记录操作日志
  • 日志类型: BusinessType.UPDATE
  • 自动记录操作人和操作时间