# order-claude-code-demo **Repository Path**: zdp666/order-claude-code-demo ## Basic Information - **Project Name**: order-claude-code-demo - **Description**: No description available - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-05-25 - **Last Updated**: 2026-05-25 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 订单审批流程系统 Spring Boot 3.3 + MyBatis 订单管理系统,核心是基于**状态机 + 审批流**的双层引擎架构。 ## 技术栈 | 组件 | 版本 | |------|------| | Spring Boot | 3.3.0 | | MyBatis | 3.0.3 | | Druid | 1.2.28 | | PageHelper | 2.1.1 | | MySQL | — | | Vue 3 (CDN) | 前端调试面板 | ## 双层引擎架构 ``` ┌─────────────────────────────────────────────────┐ │ 状态-动作引擎 │ │ t_order_state_action: stateCode → actionCode │ │ → targetStateCode │ │ 三重过滤: 状态匹配 + 角色权限 + 用户端 │ └─────────────────┬───────────────────────────────┘ │ 状态变更后自动检测 ▼ ┌─────────────────────────────────────────────────┐ │ 审批流引擎 │ │ t_approval_flow_node → 审批节点配置 │ │ t_approval_transition → 流转规则(PASS/REJECT) │ │ 支持: 串行(SERIAL) / 并行会签(PARALLEL) │ └─────────────────────────────────────────────────┘ ``` ## 核心执行流程 ``` 创建订单 ──→ 初始状态(PENDING_PAYMENT) │ ▼ 查询可用动作 ──→ getAvailableActions() │ 过滤条件: 状态匹配 + 角色权限 + 客户端 + 重复限制 ▼ 执行动作 ──→ executeAction() │ 1. 校验: 订单存在 + 状态匹配 + 权限 + 次数限制 │ 2. 清空旧审批追踪字段(防审批泄漏) │ 3. 变更状态码 │ 4. 自动检测新状态是否配置审批节点 ├── 有审批节点 ──→ 自动进入审批流(填充 currentNodeCode/approvalTypeCode) │ │ │ ▼ │ 审批操作 ──→ approve() │ │ PASS: 从待审移除 → 检查quorum → 阶段完成则流转下一阶段/终态 │ │ REJECT: 退回指定节点 / 进入驳回终态 │ │ │ └── 阶段完成 → advanceStage() │ ├── targetNodeCode 非空 → 进入下一审批阶段 │ └── targetNodeCode 为空 → 进入终态(递归检测审批流) │ └── 无审批节点 ──→ 直接完成状态流转 ``` ## 项目结构 ``` src/main/java/com/orderdemo/ ├── OrderDemoApplication.java # 启动入口 ├── controller/ │ ├── OrderController.java # 订单API: CRUD/动作执行/审批/Mock │ └── ApprovalConfigController.java # 配置API: 状态/动作/节点/流转规则管理 ├── service/order/ │ ├── IOrderService.java # 订单服务接口 │ ├── IApprovalConfigService.java # 配置管理服务接口 │ └── impl/ │ ├── OrderServiceImpl.java # 双层引擎核心实现 │ └── ApprovalConfigServiceImpl.java ├── domain/order/ │ ├── OrderInfo.java # 订单实体(含审批追踪字段) │ ├── OrderState.java # 状态字典 │ ├── OrderStateAction.java # 动作配置(状态机规则) │ ├── OrderOperRecord.java # 操作日志 │ ├── ApprovalFlowNode.java # 审批节点(角色/串行并行/quorum) │ ├── ApprovalTransition.java # 流转规则(PASS/REJECT去向) │ ├── ApprovalRecord.java # 审批记录 │ ├── ApprovalType.java # 审批类型模板 │ └── dto/ # 请求/响应DTO ├── mapper/order/ # MyBatis Mapper接口 └── common/ # 通用基类(BaseController/AjaxResult) ``` ## 数据库核心表 | 表名 | 用途 | |------|------| | dev_t_order_info | 订单主表(含审批追踪: current_node_code/completed_node_codes/approval_type_code) | | dev_t_order_state | 状态字典(parentCode 为空=分类, 非空=子状态) | | dev_t_order_state_action | 状态机规则: stateCode → actionCode → targetStateCode + 权限/客户端/重复限制 | | dev_t_order_oper_record | 操作审计日志(type: OPERATION/TRIGGER_APPROVAL/APPROVE_PASS/APPROVE_REJECT) | | dev_t_approval_type | 审批类型模板 | | dev_t_approval_flow_node | 审批节点: nodeCode + roleCode + approvalMode(SERIAL/PARALLEL) + parallelQuorum | | dev_t_approval_transition | 流转规则: nodeCode + action(PASS/REJECT) → targetNodeCode(继续)/targetStateCode(终态) | | dev_t_approval_record | 审批记录(sourceStateCode → targetStateCode, 含审批阶段seq) | | dev_sys_role | 系统角色(roleKey → roleCode 映射) | ## API 端点 ### 订单操作 `/order` | 方法 | 路径 | 说明 | |------|------|------| | GET | `/list` | 查询订单列表(分页, 含角色可用动作) | | POST | `/detail` | 订单详情(含操作记录+审批记录+可用动作+审批状态) | | POST | `/` | 新增订单(初始状态 PENDING_PAYMENT) | | POST | `/actions` | 查询当前订单可用操作按钮(四重过滤) | | POST | `/approval-status` | 审批状态详情(待审节点+已完成+流程全览+流转预览) | | POST | `/execute` | 执行动作(状态机入口, 自动检测审批流) | | POST | `/approve` | 审批操作(PASS/REJECT, 含quorum计算) | | GET | `/states` | 所有状态字典 | | POST | `/mock-state` | Mock 状态切换(调试用) | ### 审批配置管理 `/order/config` | 方法 | 路径 | 说明 | |------|------|------| | GET | `/all` | 一次性获取所有配置(states+actions+types+nodes+transitions+roles) | | GET/POST/PUT/DELETE | `/states/**` | 状态字典 CRUD | | GET/POST/PUT/DELETE | `/actions/**` | 动作配置 CRUD | | GET/POST/PUT | `/approval-types/**` | 审批类型 CRUD | | GET/POST/PUT/DELETE | `/flow-nodes/**` | 审批节点 CRUD | | GET/POST/PUT/DELETE | `/transitions/**` | 流转规则 CRUD | | GET | `/states/tree` | 状态树(父子层级, 前端组件使用) | | GET | `/roles/list` | 角色列表(从 sys_role 表) | ## 前端调试页面 - `/order/index.html` — 订单审批流程调试面板:角色切换、订单CRUD、动作执行、审批操作、审批进度/流程全览 - `/order/designer.html` — 审批流程设计器:可视化拖拽配置审批节点和流转规则 ## 审批模式 | 模式 | 说明 | 阶段完成条件 | |------|------|-------------| | SERIAL | 串行审批, 每个阶段只有一个节点 | 当前节点 PASS 即流转 | | PARALLEL | 并行会签, 同一阶段多个节点同时待审 | quorum=0 全部通过; quorum=N 至少N人通过 | ## 关键设计点 - **防止审批泄漏**:状态变更前无条件清空 currentNodeCode/completedNodeCodes/approvalTypeCode 等追踪字段 - **递归审批流检测**:进入终态后自动检测是否又配置了新的审批流(如退款审批→退款中可能触发退款审核) - **并行会签 quorum**:支持 N/M 通过即流转, 不要求全票 - **驳回退回**:驳回时可指定退回节点, 并行节点自动恢复同阶段全部节点 - **操作次数限制**:repeatOperation=0 表示不可重复, 后端兜底校验 - **乐观锁**:update 语句 `version = version + 1` - **Upsert 流转规则**:新增时先删同节点+同动作旧规则再插入 ## 启动 ```bash # 确保 MySQL 可用, 修改 application.yml 中的数据源配置 mvn spring-boot:run # 访问 http://localhost:8089/order/index.html ```