步骤流程中日志记录方案(类aop)
一、背景介绍
在某个诉讼管理系统中,诉讼流程通常包含以下几个关键节点:
起诉(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 中。
审计追踪:每个诉讼流程操作都有可追溯的日志记录,方便后续审计或问题排查。