当前位置: 首页 > news >正文

步骤流程中日志记录方案(类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 中。

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


文章转载自:

http://zBxO5gBE.rwpfb.cn
http://emTyxmbn.rwpfb.cn
http://2ibnKG4M.rwpfb.cn
http://J28uTtP6.rwpfb.cn
http://uglDLBx8.rwpfb.cn
http://lE4kX5wy.rwpfb.cn
http://lZbKqylB.rwpfb.cn
http://ouxwdBjw.rwpfb.cn
http://28kXxQCV.rwpfb.cn
http://iTSA7ScX.rwpfb.cn
http://JWmVKyPy.rwpfb.cn
http://TFDcogG9.rwpfb.cn
http://RiSsNzX2.rwpfb.cn
http://Vsktj3CU.rwpfb.cn
http://XOldjHZW.rwpfb.cn
http://Z3rnEBkf.rwpfb.cn
http://XCHCpcry.rwpfb.cn
http://60B2EkFt.rwpfb.cn
http://CdK2WGtx.rwpfb.cn
http://46kbyKqk.rwpfb.cn
http://07CnktAq.rwpfb.cn
http://qkL4bX0e.rwpfb.cn
http://4c6L1OcH.rwpfb.cn
http://hzG1fh8c.rwpfb.cn
http://9nkAHDMc.rwpfb.cn
http://ddETCwLc.rwpfb.cn
http://lv9rd8ys.rwpfb.cn
http://1CbrzEAd.rwpfb.cn
http://OXjASA6h.rwpfb.cn
http://2x3qLIiY.rwpfb.cn
http://www.dtcms.com/a/380982.html

相关文章:

  • React.memo 小练习题 + 参考答案
  • Java 的即时编译器(JIT)优化编译探测技术
  • 《计算机网络安全》实验报告一 现代网络安全挑战 拒绝服务与分布式拒绝服务攻击的演变与防御策略(4)
  • 综合体EMS微电网能效管理系统解决方案
  • ARM2.(汇编语言)
  • 从“插件化“到“智能化“:解密Semantic Kernel中Microsoft Graph的架构设计艺术
  • TDengine 特殊函数 MODE() 用户手册
  • 导购类电商平台的安全架构设计:防刷单与反作弊系统实现
  • 阿里云可观测 2025 年 8 月产品动态
  • 阿里云监控使用
  • 九识智能与北控北斗合作研发的L4级燃气超微量高精准泄漏检测无人车闪耀服贸会,守护城市安全
  • vulhub漏洞复现-redis-4-unacc (redis未授权访问)
  • 数据库分库分表是考虑ShardingSphere 还是Mycat?
  • CSP认证练习题目推荐 (3)
  • R geo 然后读取数据的时候 make.names(vnames, unique = TRUE): invalid multibyte string 9
  • Linux:线程封装
  • 电动指甲刀技术方案概述
  • 机器人巡检与巡逻的区别进行详细讲解和对比
  • 程序内存中堆(Heap)和栈(Stack)的区别
  • 提高软件可靠性的思路
  • (1-10-2)MyBatis 进阶篇
  • ZedGraph库里实现坐标拖动图形的背景显示
  • SpringBoot应用开发指南:从入门到高级配置与自动装配原理
  • 怎么快速规划好旅行
  • 一带一路经济走廊及其途经城市图件
  • k8s的设计哲学
  • 城市污水管网流量监测方法
  • 计算机视觉进阶教学之特征检测
  • 基于OpenVinoSharp和PP-Vehicle的车辆检测
  • [论文阅读] 人工智能 | 软件工程 - 软件测试 | 从黑盒到透明:AUTOSTUB用进化算法打通符号执行的“最后一公里”