Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 

Repository files navigation

审批流程后端(Spring Boot + MyBatis)

功能概述

  • 审批历史:按时间降序,仅展示提交/通过/驳回记录,支持多次提交审批的历史展示
  • 流程节点(固定 3 个):
    • 提审节点:已提交时显示“已提交”(蓝色),展示最近一次提交记录
    • 审批过程节点:
      • 待审批:显示本轮审批人姓名(蓝色)
      • 已完成(通过/驳回):显示审批人姓名、审批时间与意见(蓝色)
    • 完成节点:通过显示蓝色,驳回显示红色
  • 多次提交支持:再次提交时,将上一轮仍待审的审批人标记为上一轮(creator_flag=3),Node2 在待审批时只展示本轮审批人
  • 时间统一使用 java.sql.Timestamp;提交者创建时间早于审批人且唯一(逐毫秒递增)

主要接口

  • POST /api/rules/{ruleId}/approval/submit
    • 请求体:SubmitApprovalRequest(提交者信息、审批人列表)
  • POST /api/rules/{ruleId}/approval/approve?approverUserId=...&opinion=...&remark=...
    • 审批通过:记录置为通过,规则直接置为通过
  • POST /api/rules/{ruleId}/approval/reject?approverUserId=...&opinion=...&remark=...
    • 审批驳回:记录置为驳回,规则直接置为驳回
  • GET /api/rules/{ruleId}/approval/history
  • GET /api/rules/{ruleId}/approval/process

数据模型

  • 规则表(rule)
    • approval_status:0草稿、1待审批、2通过、3驳回
    • approval_time:规则完成时间(Timestamp)
  • 审批记录表(approval_record)
    • status:1待审批、2通过、3驳回
    • creator_flag:1提交者、2审批者、3上一轮审批者
    • create_time:创建时间(Timestamp)
    • update_time:审批时间(Timestamp)

运行与配置

  1. 配置数据源(src/main/resources/application.yml),填入你的数据库信息:
    spring:
      datasource:
        url: jdbc:mysql://localhost:3306/your_db?useUnicode=true&characterEncoding=utf-8&serverTimezone=Asia/Shanghai
        username: root
        password: root
        driver-class-name: com.mysql.cj.jdbc.Driver
    mybatis:
      mapper-locations: classpath*:mapper/*.xml
      configuration:
        map-underscore-to-camel-case: true
    
  2. 刷新 Maven 依赖或执行:
    mvn clean package
    
  3. 启动应用(已有启动类 ApprovalApplication):
    mvn spring-boot:run
    

测试

  • 单元测试使用 JUnit 5 + Mockito,控制器测试使用 Spring MockMvc。
  • 由于使用 Mock 替代数据库连接,测试可直接运行。
  • 主要测试类:
    • src/test/java/com/example/approval/service/ApprovalServiceTest.java
      • 覆盖 submitApproval、approve、reject、getProcessNodes、getApprovalHistory 核心场景
    • src/test/java/com/example/approval/controller/ApprovalControllerTest.java
      • 覆盖所有路由的调用与参数绑定

设计要点

  • 再次提交审批时,旧的仍待审批人不会影响本轮展示(通过 creator_flag 归档)
  • 审批通过/驳回不再评估其他审批人,直接结束规则;若需改为“必须所有人通过才算通过”,可把逻辑切回评估模式
  • 对并发与幂等可扩展:为审批记录增加唯一约束或幂等键;统一返回错误码与异常处理

如需补充数据库建表 SQL 或前后端联调示例,请告诉我。

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

Packages

Contributors

Languages