步骤流程中日志记录方案(类aop)

一、背景介绍

在某个诉讼管理系统中,诉讼流程通常包含以下几个关键节点:

  • 起诉(lawsuit filing)

  • 开庭(hearing open)

  • 判决(judgment)

  • 执行(enforcement)

  • 和解(settlement)

每个节点都会涉及:

  1. 更新诉讼状态(如从"起诉中"改为"已开庭")。

  2. 写入诉讼流程记录(记录诉讼进展)。

  3. 上传相关文件(如庭审材料、判决书等)。

  4. 记录日志(保证操作可追溯)。


二、统一日志方法

这里定义了一个公共方法 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);
}

逻辑分解:

  1. 安全控制
    @PreAuthorize 确保只有具备权限的用户才能调用。

  2. 参数绑定

    • @ModelAttribute HearingOpenReqVO hearing:接收开庭请求参数。

    • @RequestParam List<MultipartFile> files:接收上传的证据文件。

  3. 业务处理

    调用 loanOutLawsuitRecordService.openHearing() 完成:

    • 写入诉讼流程记录

    • 更新诉讼状态为"开庭"

    • 保存上传的文件

  4. 日志记录

    统一调用 addLog,插入一条日志:

    • 类型:诉讼操作

    • 内容:更改为开庭状态

    • 操作人:当前登录用户


四、整体价值

这种写法的好处是:

  • 日志方法抽象 :不论是"开庭"、"判决"、"和解",都能统一调用 addLog,保证日志字段一致性。

  • 接口职责清晰:Controller 只负责调用 Service 并记录日志,业务逻辑集中在 Service 中。

  • 审计追踪:每个诉讼流程操作都有可追溯的日志记录,方便后续审计或问题排查。

相关推荐
亦暖筑序1 分钟前
重新认识 AgentScope-Java 2.0:ReActAgent 负责推理,HarnessAgent 负责运行
java·后端·agent
会博通·代码搬运工3 分钟前
会博通API对接实战:工程企业文档分布式采集系统的技术实现与Python SDK详解
开发语言·分布式·python·线性代数·矩阵·架构·电子档案合规
木井巳10 分钟前
【DFS解决floodfill算法】岛屿的最大面积
java·算法·leetcode·深度优先
林森lsjs23 分钟前
完结撒花!Java SE 语法阶段总结!
java·开发语言
lupai23 分钟前
短信接口快速接入与调用实战指南
java·开发语言·数据库
ltqvibe24 分钟前
企业智能问数落地:从一句话到跨系统完整答案
java·人工智能·本体语义平台
刘名喜30 分钟前
第12篇-Gradle-Kotlin-DSL构建指南
开发语言·kotlin·springboot
会编程的吕洞宾31 分钟前
Spring Boot 虚拟线程实战:从原理到生产环境
java·后端·spring
大鱼>42 分钟前
DSPy:LLM程序自动编译与提示词优化
开发语言·人工智能·python·深度学习
黑桃小柒71 小时前
Prompt 工程的“断舍离“:如何用更少的词让 AI Agent 更聪明
java·后端·spring