deepseath/approval-flow

There is no license information available for the latest version (1.0.0) of this package.

A flexible approval flow system for ThinkPHP6

1.0.0 2025-04-29 12:34 UTC

This package is not auto-updated.

Last update: 2025-04-29 22:12:27 UTC


README

基于ThinkPHP6的灵活审批流系统,支持多级审批、条件审批、消息推送等功能。

安装

使用Composer安装:

composer require deepseath/approval-flow

配置

  1. 发布配置文件:
php think vendor:publish --tag=approvalflow-config
  1. 修改配置文件 config/approvalflow.php
return [
    'db_prefix' => 'approval_', // 数据库表前缀
    'message' => [
        'driver' => 'default', // 消息驱动
        'callback' => null,   // 消息回调
    ],
    // 其他配置...
];
  1. 注册服务提供者:

config/app.php 中添加:

'providers' => [
    \ApprovalFlow\ServiceProvider::class,
],

基本使用

创建审批流程

use ApprovalFlow\Facade as ApprovalFlow;

$flowData = [
    'title' => '请假申请',
    'creator_id' => 1,
    'nodes' => [
        [
            'name' => '部门经理审批',
            'approvers' => [
                ['id' => 'manager_tag', 'type' => 1], // 标签类型
            ],
            'condition' => 'days > 3', // 条件表达式
            'cc' => [
                ['id' => 'hr_tag', 'type' => 1], // 抄送给HR标签
            ]
        ],
        // 更多节点...
    ]
];

$flowId = ApprovalFlow::createFlow($flowData);

处理审批

// 同意审批
ApprovalFlow::processApproval($flowId, $approverId, ApprovalFlow::STATUS_APPROVED, '同意');

// 拒绝审批
ApprovalFlow::processApproval($flowId, $approverId, ApprovalFlow::STATUS_REJECTED, '拒绝原因');

查询审批

// 获取审批详情
$flow = ApprovalFlow::getFlowDetails($flowId);

// 获取用户待审批列表
$pendingApprovals = ApprovalFlow::getUserPendingApprovals($userId);

// 获取用户发起的审批
$createdFlows = ApprovalFlow::getUserCreatedFlows($userId);

消息推送

在配置文件中设置消息回调:

'message' => [
    'callback' => function($type, $data) {
        // $type 可能是 'node_notify' 或 'flow_completed'
        // 实现你的消息推送逻辑
    },
],

测试

运行单元测试:

php think test

License

MIT