一、背景介绍
在某个诉讼管理系统中,诉讼流程通常包含以下几个关键节点:
-
起诉(lawsuit filing)
-
开庭(hearing open)
-
判决(judgment)
-
执行(enforcement)
-
和解(settlement)
每个节点都会涉及:
-
更新诉讼状态(如从"起诉中"改为"已开庭")。
-
写入诉讼流程记录(记录诉讼进展)。
-
上传相关文件(如庭审材料、判决书等)。
-
记录日志(保证操作可追溯)。
二、统一日志方法
这里定义了一个公共方法 addLog
,用于统一插入日志表:
void addLog(Long loanId, String bizTableName, Long bizTableId,
String opType, String opContent, String opUser);
抽象出一个通用日志方法 addLog
,方便在不同流程节点调用:
@Override
public void addLog(Long loanId, String bizTableName, Long bizTableId,
String opType, String opContent, String opUser) {
LoanInLogDO log = new LoanInLogDO();
log.setLoanId(loanId);
log.setBizTableName(bizTableName);
log.setBizTableId(bizTableId);
log.setOpType(opType);
log.setOpContent(opContent);
log.setOpUser(opUser);
log.setCreateTime(LocalDateTime.now());
loanInLogMapper.insert(log);
}
📌 优点
-
所有日志操作走一个方法,避免重复代码。
-
保证日志数据结构一致性,方便后续审计。
三、诉讼流程接口
1. 起诉(Lawsuit Filing)
@PostMapping("/lawsuit/file")
@Operation(summary = "起诉:新增诉讼信息并写日志")
@PreAuthorize("@ss.hasPermission('bank:loan-out-lawsuit:create')")
public CommonResult<LawsuitRespVO> fileLawsuit(@Valid @RequestBody LawsuitReqVO reqVO) {
AdminUserDO user = userService.getUser(getLoginUserId());
LawsuitRespVO resp = loanOutLawsuitService.file(reqVO);
loanOutLogService.addLog(
resp.getLoanId(),
"loan_out_lawsuit",
resp.getId(),
"诉讼操作",
"发起起诉",
user.getNickname()
);
return success(resp);
}
逻辑分解:
-
安全控制
@PreAuthorize
确保只有具备权限的用户才能调用。 -
参数绑定
-
@ModelAttribute HearingOpenReqVO hearing
:接收开庭请求参数。 -
@RequestParam List<MultipartFile> files
:接收上传的证据文件。
-
-
业务处理
调用
loanOutLawsuitRecordService.openHearing()
完成:-
写入诉讼流程记录
-
更新诉讼状态为"开庭"
-
保存上传的文件
-
-
日志记录
统一调用
addLog
,插入一条日志:-
类型:
诉讼操作
-
内容:
更改为开庭状态
-
操作人:当前登录用户
-
四、整体价值
这种写法的好处是:
-
日志方法抽象 :不论是"开庭"、"判决"、"和解",都能统一调用
addLog
,保证日志字段一致性。 -
接口职责清晰:Controller 只负责调用 Service 并记录日志,业务逻辑集中在 Service 中。
-
审计追踪:每个诉讼流程操作都有可追溯的日志记录,方便后续审计或问题排查。