# assignTasks **Repository Path**: liu-kang/assign-tasks ## Basic Information - **Project Name**: assignTasks - **Description**: 应用于各种任务派发需求,例如线索分配,工作分配等,支持4种分配方式 - **Primary Language**: Unknown - **License**: MIT - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-05-01 - **Last Updated**: 2025-05-14 ## Categories & Tags **Categories**: Uncategorized **Tags**: 任务派发, Redis, 队列 ## README # 任务派发系统 #### 介绍 应用于各种任务派发需求,例如线索分配,工作分配等,支持4种分配方式分别为
1.顺序分配:安装整理的顺序进行依次派发任务
2.指定分配:设置几个特定人员,只对特定人员进行派发
3.比例分配:设置每个人员的权重/比例,按照(权重/(领取次数+1))高低顺序派发
4.均等分配:按照每个人员领取的最低次数依次派发
也支持指定时间段派发,以及指定时间内派发给特定人员(值班需求),可对人员休息等情况修改/凌晨自动修改 基于webman+redis+webman/redis-queue开发 #### 安装教程 下载代码 git clone https://gitee.com/liu-kang/assign-tasks.git 修改文件
1. config>redis.php 修改为自己的redis配置 2. config>webman>redis-queue>redis.php 修改为自己的redis配置 3. util>WorkWxTool.php ErrorPush链接可改为自己的链接,目前只接入企业微信群机器人推送方式可自行添加其他方式 4. config>process.php 修改开启的进程数,以及text协议的端口或者指定调用的IP地址 运行方式:
windows环境:php windows.php Linux环境:php start.php start -d 调用方式: 采用的RPC(Remote Procedure Call Protocol)远程过程调用协议异步执行。
配置派发设置API ```PHP TaskService/setTaskSetting @param taskType string 任务类型、标识 默认 assign @param taskSign string 分派名称、标识、ID 默认 1 @param allowAssign int 是否允许分派 默认 不允许 @param assignMode int 分派模式 默认4种派发模式 [1:循环派发 2:指定派发 3:比例派发 4:均等派发] 默认 循环派发 @param assignTime string 派发时间段 08:00-23:00,默认 整天 @param assignDuty int 派发值班开启状态 默认 0 @param dutyTime array 值班时间段 仅开启生效 ["08:00-12:00","12:00-13:30"] @param assignNotViewed int 未查看的任务,是否继续派发 默认 0 @param viewWaitingTime int 任务派发等待时间,单位分钟,未查看继续派发开启生效 默认 5 @param assignType int 派发形式 [1:企业微信群机器人] 默认 1 ,其他方式自行扩展 @param sendAssignUrl string 推送链接 如:企业微信群机器人 ```
获取派发设置API ```PHP TaskService/getTaskSetting @param taskType string 任务类型、标识 默认 assign @param taskSign string 分派名称、标识、ID 默认 1 @return taskSign string 任务类型 @return . @return . @return . @return sendAssignUrl string 推送链接 ```
配置派发用户API ```PHP TaskService/setTaskUserList @param taskType string 任务类型、标识 默认 assign @param taskSign string 分派名称、标识、ID 默认 1 @param userList array 派发的用户列表 [['user_id'=>1,'in_queue'=>1,'weight'=>1,'username'=>'username','is_regular'=>0,'is_rest'=>0,'is_duty'=>0,'long_duty'=>0,'receive_times'=>0,'duty_times'=>0,'is_appoint'=>0]] user_id:用户ID,in_queue:是否参与派发,weight:分配权重,username:用户名称,is_regular:派发额外固定第一个,is_rest:是否休息,is_duty:是否值班,long_duty:长期值班,receive_times:可领取次数,若未0则表示不限制,duty_times:值班可领取次数,若未0则表示不限制 is_appoint:指定人,可多人 ```
获取派发用户API ```PHP TaskService/getTaskUserList @param taskType string 任务类型、标识 默认 assign @param taskSign string 分派名称、标识、ID 默认 1 @return array 派发的用户列表 [['user_id'=>1,'in_queue'=>1,'weight'=>1,'username'=>'username','is_regular'=>0,'is_rest'=>0,'is_duty'=>0,'long_duty'=>0,'receive_times'=>0,'duty_times'=>0,'is_appoint'=>0]] user_id:用户ID,in_queue:是否参与派发,weight:分配权重,username:用户名称,is_regular:派发额外固定第一个,is_rest:是否休息,is_duty:是否值班,long_duty:长期值班,receive_times:可领取次数,若未0则表示不限制,duty_times:值班可领取次数,若未0则表示不限制 is_appoint:指定人,可多人 ```
任务派发投递API ```PHP TaskService/doAssignTask @param taskType string 任务类型、标识 默认 assign @param taskSign string 分派名称、标识、ID 默认 1 @param data array 分配的数据 包含ID ```
任务领取回执API ```PHP TaskService/receiveAssignTask @param taskType string 任务类型、标识 默认 assign @param taskSign string 分派名称、标识、ID 默认 1 @param data array 分配的数据 包含ID ```
设置任务补发API ```PHP TaskService/setTaskReissue @param taskType string 任务类型、标识 默认 assign @param taskSign string 分派名称、标识、ID 默认 1 @param userInfo array 补发的用户资料 ```
调用方法: ```php function call(string $class, string $method, array $params = []) { $client = stream_socket_client('你的rpc地址:IP:端口号'); $request = [ 'class' => $class, 'method' => $method, 'args' => [$params], ]; fwrite($client, json_encode($request) . "\n"); $result = fgets($client); if ($result === false) { return false; } return json_decode($result, true); } $result = call("TaskService","setTaskSetting",["taskType"=>'',"taskSign"=>"",...]) dump($result); ``` 有问题可咨询 ![img.png](readme/img3.png)