

- 1. 禅道SDK开发手册
- 1.1 配置使用与常见问题
- 1.2 调用SDK示例
- 1.3. 部门相关接口
- 1.4. 用户相关接口
- 1.4.1 获得添加用户所用的参数列表
- 1.4.2 添加单个用户
- 1.4.3 获取用户列表
- 1.5. 产品相关接口
- 1.5.1 获取产品列表
- 1.5.2 添加单个产品可选信息
- 1.5.3 添加单个产品
- 1.6. 项目相关接口
- 1.6.1 获取项目列表
- 1.6.2 添加单个项目可选信息
- 1.6.3 添加单个项目
- 1.7. 任务相关接口
- 1.7.1 获取任务列表
- 1.7.2 添加单个任务可选信息
- 1.7.3 添加单个任务
- 1.7.4 完成单个任务可选信息
- 1.7.5 完成单个任务
- 1.8. bug相关接口
- 1.8.1 获取Bug列表
- 1.8.2 添加单个Bug可选信息
- 1.8.3 添加单个Bug
- 1.8.4 解决单个Bug可选信息
- 1.8.5 解决单个Bug
- 2. 禅道RESTful API开发手册v1
- 3. 定制开发
- 3.1 二次开发机制
- 3.2 禅道的目录结构
- 3.3 找到要修改的文件
- 3.4 禅道的数据库结构
- 3.5 公用模块--common
- 3.6 12系列菜单登记和权限维护
- 3.7 18系列菜单登记和权限维护
- 3.8 示例:如何修改禅道的语言提示?
- 3.9 示例:创建bug时可以设置优先级字段
- 3.10 使用在线扩展编辑器
- 3.11 二次开发编辑器和翻译功能限制使用说明
- 3.12 禅道项目管理软件打包规范1.1版本
禅道PHP-SDK帮助手册-第一章 分享链接 /book/api/365.html
本篇目录
一、配置参数
禅道 PHP-SDK 文件位于【禅道项目目录/sdk/php/】下。使用 SDK 之前,需要在引用的禅道 SDK 文件中填写一些必要配置信息。禅道安装部署的域名、禅道用户账户、禅道用户密码、禅道配置的参数请求方式。
const ztUrl = 'http://zentao.*****.com'; // 禅道部署域名 const ztAccount = 'admin'; // 禅道登录账户 const ztPassword = '123456'; // 禅道登录密码 const ztAccessMode = 'PATH_INFO'; // 禅道参数请求方式[ GET | PATH_INFO ]
二、禅道SDK可用API列表
- 获取部门列表
- 批量添加部门
- 获取用户列表
- 添加单个用户可选信息
- 添加单个用户
- 获取产品列表
- 添加单个产品可选信息
- 添加单个产品
- 获取项目列表
- 添加单个项目可选信息
- 添加单个项目
- 获取任务列表
- 添加单个任务可选信息
- 添加单个任务
- 完成单个任务可选信息
- 完成单个任务
- 获取Bug列表
- 添加单个Bug可选信息
- 添加单个Bug
- 解决单个Bug可选信息
- 解决单个Bug
三、使用说明与示例
3.1使用说明
在使用前,确保配置的相关信息填写无误,同时确保登录账户有足够的权限以及登录账户无需进行弱密码重置。所有请求的 API 结果都以 JSON 格式返回,可以根据请求结果中的 status 状态来判断是否请求成功,如果请求失败,部分API会给出相应的提示。在请求 API 的过程中,以 4.1获取部门列表 举例,$params 包含了可传的请求参数,可以为空数组,但必须传递此变量。$extraFields 自定义返回字段,可以根据所需字段结果,进行返回,可自定义字段不限于示例中的字段,此变量可以不传。
3.2使用示例
以下将以 zentaoPHP 框架中引用作为示例,将 SDK 文件放置在框架目录 tools/zentao/ 下。其它主流框架,如 ThinkPHP、Laravel 等可根据实际需求放置框架目录中,存放目录尽量遵守框架规范。
/** * 获取部门列表 * * @access public * @return void */ public function getDeptList() { include_once('../../tools/zentao/zentao.php'); $zentao = new zentao(); // 实例化类,如果实例化错误,可修改为 "\new zentao();" $params = array('deptID' => 1); // 请求参数 $extraFields = array('title', 'deptID', 'parentDepts', 'sons', 'tree'); // 自定义返回字段 $result = $zentao->getDeptList($params, $extraFields); // 调用SDK方法 echo $result; }
四、API使用详解
4.1获取部门列表
方法说明 | 请求此方法,可以获取当前已添加部门列表数据,根据部门列表数据,后续可用于添加下级部门。 |
|||||||||
使用示例 |
public function getDeptList() { include_once('../vendor/zentao/zentao.php'); $zentao = new \zentao(); $params = array('deptID' => 1); // 请求参数 $extraFields = array('title', 'deptID', 'parentDepts', 'sons', 'tree'); // 自定义返回字段 $result = $zentao->getDeptList($params, $extraFields); return $result; } |
|||||||||
请求方式 | GET | |||||||||
方法名称 | getDeptList |
|||||||||
请求参数 |
|
|||||||||
响应结果 |
success | error | ||||||||
{ "status": 1, "msg": "success", "result": { //当前禅道项目导航位置 "title": "维护部门-禅道项目管理", //当前部门ID "deptID": "1", //当前部门信息 "parentDepts": [ { "id": "1", "name": "经理", "parent": "0", "path": ",1,", "grade": "1", "order": "0", "position": "", "function": "", "manager": "" } ], //当前部门的直属下级部门列表 "sons": [ { "id": "11", "name": "产品经理", "parent": "1", "path": ",1,11,", "grade": "2", "order": "10", "position": "", "function": "", "manager": "" }, { "id": "12", "name": "项目经理", "parent": "1", "path": ",1,12,", "grade": "2", "order": "20", "position": "", "function": "", "manager": "" } ], //所有部门列表树 "tree": [ { "id": "1", "name": "经理", "parent": "0", "path": ",1,", "grade": "1", "order": "0", "position": "", "function": "", "manager": "", "managerName": "", "children": [ { "id": "11", "name": "产品经理", "parent": "1", "path": ",1,11,", "grade": "2", "order": "10", "position": "", "function": "", "manager": "", "managerName": "" }, { "id": "12", "name": "项目经理", "parent": "1", "path": ",1,12,", "grade": "2", "order": "20", "position": "", "function": "", "manager": "", "managerName": "" } ], "actions": { "delete": false } }, { "id": "2", "name": "开发", "parent": "0", "path": ",2,", "grade": "1", "order": "1", "position": "", "function": "", "manager": "", "managerName": "" }, { "id": "3", "name": "测试", "parent": "0", "path": ",3,", "grade": "1", "order": "2", "position": "", "function": "", "manager": "", "managerName": "" }, { "id": "4", "name": "市场", "parent": "0", "path": ",4,", "grade": "1", "order": "3", "position": "", "function": "", "manager": "", "managerName": "" }, { "id": "8", "name": "客户", "parent": "0", "path": ",8,", "grade": "1", "order": "13", "position": "", "function": "", "manager": "", "managerName": "" } ] } } |
{ "status": 0, "msg": "error", "result": [] } |
4.2批量添加部门
方法说明 |
请求此方法,可以批量添加部门。 |
|||||||||||||
使用示例 |
public function addDept() { include_once('../vendor/zentao/zentao.php'); $zentao = new \zentao(); $params = array( 'parentDeptID' => '1', 'depts' => array('Department D', 'Department F') ); // 请求参数 $result = $zentao->addDept($params); return $result; } |
|||||||||||||
请求方式 |
POST | |||||||||||||
方法名称 | addDept | |||||||||||||
请求参数 |
|
|||||||||||||
响应结果 | success | error | ||||||||||||
{ "status": 1, "msg": "success", "result": [] } |
{ "status": 0, "msg": "error", "result": [] } |
4.3获取用户列表
方法说明 | 请求此方法,可以根据不同的部门获取该部门下的用户列表信息。 |
|||||||||
使用示例 |
public function getUserList() { include_once('../vendor/zentao/zentao.php'); $zentao = new \zentao(); $params = array('deptID' => 1); // 请求参数 $extraFields = array('title', 'users'); // 自定义返回字段 $result = $zentao->getUserList($params, $extraFields); return $result; } |
|||||||||
请求方式 | GET | |||||||||
方法名称 | getUserList |
|||||||||
请求参数 |
|
|||||||||
响应结果 |
success | error | ||||||||
{ "status": 1, "msg": "success", "result": { //当前禅道项目导航位置 "title": "组织视图首页-部门结构", //某个部门所属用户详情列表【不传参则列出所有用户详情列表】 "users": [ { "id": "16",//用户ID "dept": "48",//部门ID "account": "Jack6",//用户账号 "role": "dev",//用户权限 "realname": "jack6",//真实姓名 "nickname": "",//用户昵称 "commiter": "http://jack2019.com", "avatar": "", "birthday": "0000-00-00",//生日日期 "gender": "m",//性别【m男/f女】 "email": "jack2019@gmail.com",//邮箱地址 "skype": "", "qq": "", "mobile": "", "phone": "", "weixin": "", "dingding": "", "slack": "", "whatsapp": "", "address": "", "zipcode": "", "join": "2019-11-11",//入职日期 "visits": "0", "ip": "", "last": "0", "fails": "0", "locked": "0000-00-00 00:00:00", "ranzhi": "", "score": "0", "scoreLevel": "0", "deleted": "0", "clientStatus": "offline", "clientLang": "zh-cn" } ] } } |
{ "status": 0, "msg": "error", "result": [] } |
4.4添加单个用户可选信息
方法说明 |
添加用户时如果需要为新用户分配部门、职位、权限,请求该方法即可返回相关可用数据。 |
|||||||||
使用示例 |
public function getUserCreateParams() { include_once('../vendor/zentao/zentao.php'); $zentao = new \zentao(); $extraFields = array('title', 'depts', 'groupList', 'roleGroup'); // 返回自定义字段 $result = $zentao->getUserCreateParams(array(), $extraFields); return $result; } |
|||||||||
请求方式 |
GET | |||||||||
方法名称 |
getUserCreateParams |
|||||||||
请求参数 |
|
|||||||||
响应结果 |
success | error | ||||||||
{ "status": 1, "msg": "success", "result": { //当前禅道项目导航位置 "title": "组织视图-添加用户", //所属部门列表【添加部门传递key|用户所属部门】 "depts": { "0": "/", "1": "/经理", "2": "/开发", "3": "/测试", "4": "/市场", "8": "/客户", "11": "/经理/产品经理", "12": "/经理/项目经理" }, //权限分组列表【添加权限传递key|所属权限分组】 "groupList": { "1": "管理员", "2": "研发", "3": "测试", "4": "项目经理", "5": "产品经理", "6": "研发主管", "7": "产品主管", "8": "测试主管", "9": "高层管理", "10": "其他", "11": "guest", "12": "受限用户" }, //职位分组列表【职位对应权限分组|所属职位】 "roleGroup": { "admin": "1", "dev": "2", "qa": "3", "pm": "4", "po": "5", "td": "6", "pd": "7", "qd": "8", "top": "9", "others": "10", "guest": "11", "limited": "12" } } } |
{ "status": 0, "msg": "error", "result": [] } |
4.5添加单个用户
方法说明 |
请求此方法,用于新增一个新用户,新用户添加可以设定所属部门、职位、权限等信息。除了必填参数,其他参数可以先不填,日后可在后台编辑修改。 |
|||||||||||||||||||||||||||||||||||||||||||||||||
使用示例 |
public function addUser() { include_once('../vendor/zentao/zentao.php'); $zentao = new \zentao(); $params = array( 'dept' => 1, 'account' => 'Jack10', 'password1' => '123456', 'password2' => '123456', 'realname' => 'Jack10', 'join' => '2019-11-11', 'role' => 'dev', 'group' => 2, 'email' => 'jack2019@gmail.com', 'commiter' => 'http://jack2019.com', 'gender' => 'm' ); // 请求参数 $result = $zentao->addUser($params); return $result; } |
|||||||||||||||||||||||||||||||||||||||||||||||||
请求方式 |
POST | |||||||||||||||||||||||||||||||||||||||||||||||||
方法名称 |
addUser | |||||||||||||||||||||||||||||||||||||||||||||||||
请求参数 |
|
|||||||||||||||||||||||||||||||||||||||||||||||||
响应结果 |
success | error | ||||||||||||||||||||||||||||||||||||||||||||||||
{ "status": 1, "msg": "success", "result": "保存成功" } |
{ "status": 0, "msg": "error", "result": { "account": [ "『用户名』已经有『ly0011』这条记录了。如果您确定该记录已删除,请到后台-数据-回收站还原。" ] } } |
4.6获取产品列表
方法说明 | 请求此方法,可以获取所有未关闭的产品详情信息和所有产品名称。 |
|||||||||
使用示例 |
public function getProductList() { include_once('../vendor/zentao/zentao.php'); $zentao = new \zentao(); $extraFields = array('title', 'products', 'productStats'); // 自定义返回字段 $result = $zentao->getProductList(array(), $extraFields); return $result; } |
|||||||||
请求方式 |
GET | |||||||||
方法名称 |
getProductList |
|||||||||
请求参数 |
|
|||||||||
响应结果 |
success | error | ||||||||
{ "status": 1, "msg": "success", "result": { //当前禅道项目导航位置 "title": "全部产品", //所有产品列表名称 "products": { "1": "禅道项目管理系统", "2": "产品二", "3": "产品三", "4": "产品四", "5": "产品五", "6": "产品六" }, //未关闭产品列表详情 "productStats": [ { "id": "6",//产品ID "name": "产品六",//产品名称 "code": "cp6",//产品代号 "line": "0",//产品线 "type": "branch",//产品类型【normal正常|branch多分支|platform多平台】 "status": "normal",//产品状态 "subStatus": "", "desc": "产品六产品六产品六产品六产品六产品六产品六产品六",//产品描述 "PO": "lisi",//产品负责人 "QD": "zhapliu",//测试负责人 "RD": "zhapliu",//发布负责人 "acl": "open",//访问控制【open默认|private私有|custom白名单】 "whitelist": "",//访问白名单列表 "createdBy": "admin",//创建者账号 "createdDate": "2019-11-19 18:41:02",//创建者时间 "createdVersion": "11.6.4",//禅道当前版本 "order": "30",//排序 "deleted": "0",//是否删除【0否1是】 "stories": { "0": "", "1": "draft", "2": "active", "3": "closed", "4": "changed", "_empty_": 0, "draft": 0,//草稿需求 "active": 0,//激活需求 "closed": 0,//已关闭需求 "changed": 0//已变更需求 }, "plans": 0,//计划数 "releases": 0,//发布数 "bugs": 0,//Bug数 "unResolved": 0,//未解决Bug "assignToNull": 0//未指派Bug } ] } } |
{ "status": 0, "msg": "error", "result": [] } |
4.7添加单个产品可选信息
方法说明 | 请求此方法,可以获取添加产品时所需要一些数据,例如产品线数据列表、产品负责人数据列表等数据,添加产品时,可以为其绑定这些信息。 |
|||||||||
使用示例 |
public function getProductCreateParams() { include_once('../vendor/zentao/zentao.php'); $zentao = new \zentao(); $extraFields = array('title', 'products', 'lines', 'poUsers', 'qdUsers', 'rdUsers', 'groups'); //自定义返回字段 $result = $zentao->getProductCreateParams(array(), $extraFields); return $result; } |
|||||||||
请求方式 |
GET | |||||||||
方法名称 |
getProductCreateParams |
|||||||||
请求参数 |
|
|||||||||
响应结果 |
success | error | ||||||||
{ "status": 1, "msg": "success", "result": { //当前禅道项目导航位置 "title": "添加产品", //已添加的产品列表 "products": { "1": "禅道项目管理系统-PHP-SDK", "2": "产品二", "3": "产品三", "4": "产品四", "5": "产品五", "6": "产品六" }, //产品线列表 "lines": { "0": "", "5": "产品线一", "6": "产品线二", "7": "产品线三" }, //产品负责人列表 "poUsers": { "_empty_": "", "zhangsan": "Z:张三", "admin": "A:admin", "lisi": "L:李四", "niuqi": "N:牛七", "wangwu": "W:王五", "zhapliu": "Z:赵六" }, //测试负责人列表 "qdUsers": { "_empty_": "", "zhapliu": "Z:赵六", "admin": "A:admin", "lisi": "L:李四", "niuqi": "N:牛七", "wangwu": "W:王五", "zhangsan": "Z:张三" }, //发布负责人列表 "rdUsers": { "_empty_": "", "wangwu": "W:王五", "zhapliu": "Z:赵六", "lisi": "L:李四", "admin": "A:admin", "niuqi": "N:牛七", "zhangsan": "Z:张三" }, //分组白名单列表 "groups": { "1": "管理员", "2": "研发", "3": "测试", "4": "项目经理", "5": "产品经理", "6": "研发主管", "7": "产品主管", "8": "测试主管", "9": "高层管理", "10": "其他", "11": "guest", "12": "受限用户" } } } |
{ "status": 0, "msg": "error", "result": [] } |
4.8添加单个产品
方法说明 | 请求此方法,可以新增一个新产品,添加新产品时可以指定相关负责人,设置产品类型和访问权限。注意:假如 acl = custom ,可以额外传递参数,例如:'whitelist' => array(1, 2),添加白名单为权限分组列表中 ID。 |
|||||||||||||||||||||||||||||||||||||||||||||
使用示例 |
public function addProduct() { include_once('../vendor/zentao/zentao.php'); $zentao = new \zentao(); $params = array( 'name' => 'product-200', 'code' => 'p200', 'line' => 0, 'PO' => 'lisi', 'QD' => 'zhangsan', 'RD' => 'wangwu', 'type' => 'normal', 'status' => 'normal', 'desc' => 'product description,product description', 'acl' => 'custom', 'whitelist' => array(1, 2) ); // 请求参数 $result = $zentao->addProduct($params); return $result; } |
|||||||||||||||||||||||||||||||||||||||||||||
请求方式 | POST | |||||||||||||||||||||||||||||||||||||||||||||
方法名称 | addProduct |
|||||||||||||||||||||||||||||||||||||||||||||
请求参数 |
|
|||||||||||||||||||||||||||||||||||||||||||||
响应结果 |
success | error | ||||||||||||||||||||||||||||||||||||||||||||
{ "status": 1, "msg": "success", "result": "保存成功" } |
{ "status": 0, "msg": "error", "result": { "name": [ "『产品名称』不能为空。" ] } } |
4.9获取项目列表
方法说明 | 请求此方法,可以根据项目不同状态获取项目列表。 | |||||||||
使用示例 |
public function getProjectList() { include_once('../vendor/zentao/zentao.php'); $zentao = new \zentao(); $params = array('status' => 'doing'); // 请求参数 $extraFields = array('title', 'projects', 'projectStats', 'teamMembers', 'users'); // 自定义返回字段 $result = $zentao->getProjectList($params, $extraFields); return $result; } |
|||||||||
请求方式 | GET | |||||||||
方法名称 | getProjectList | |||||||||
请求参数 |
|
|||||||||
响应结果 |
success | error | ||||||||
{ "status": 1, "msg": "success", "result": { //当前禅道项目导航位置 "title": "所有项目", //项目名称列表 "projects": { "1": "禅道系统 PHP-SDK 开发", "2": "淘宝项目开发", "3": "天猫项目开发" }, //项目详情列表 "projectStats": [ { "id": "1",//项目ID "isCat": "0", "catID": "0", "type": "sprint",//项目类型【sprint短期项目|waterfall长期项目|ops运维项目】 "parent": "0", "name": "禅道系统 PHP-SDK 开发",//项目名称 "code": "002",//项目代号 "begin": "2019-11-11",//起始日期 "end": "2019-11-23",//起始日期 "days": "10",//可用工作日 "status": "doing",//项目状态【all所有|undone未完成|wait未开始|doing进行中|suspended已挂起|closed已关闭】 "subStatus": "", "statge": "1", "pri": "1", "desc": "开发禅道项目管理系统 PHP-SDK 的开发,用于 PHPer 高效便捷的进行项目管理。",//项目描述 "openedBy": "admin",//创建者 "openedDate": "2019-11-11 15:24:14",//创建时间 "openedVersion": "11.6.4",//禅道版本 "closedBy": "",//关闭者 "closedDate": "0000-00-00 00:00:00",//关闭时间 "canceledBy": "",//取消者 "canceledDate": "0000-00-00 00:00:00",//取消时间 "PO": "zhangsan",//产品负责人 "PM": "niuqi",//项目负责人 "QD": "admin",//测试负责人 "RD": "lisi",//发布负责人 "team": "禅道开发",//团队名称 "acl": "open",//访问控制【open默认|private私有|custom自定义白名单】 "whitelist": "",//白名单列表 "order": "5",//排序数 "deleted": "0", "burns": [//燃尽图数据 0, 0, 0, 0, 0, 0, 0, 0, 0, "28" ], "hours": { "totalEstimate": 28,//预计时间(小时) "totalConsumed": 21,//消耗时间(小时) "totalLeft": 28,//剩余时间(小时) "progress": 42.9,//进度(百分比) "totalReal": 49 } } ], //团队成员列表信息 "teamMembers": { "admin": { "id": "9", "root": "2", "type": "project", "account": "admin", "role": "", "limited": "no", "join": "2019-11-20", "days": "8", "hours": "7.0", "estimate": "0.00", "consumed": "0.00", "left": "0.00", "order": "0", "totalHours": "56.0", "realname": "admin" }, "niuqi": { "id": "11", "root": "2", "type": "project", "account": "niuqi", "role": "其他", "limited": "no", "join": "2019-11-20", "days": "8", "hours": "7.0", "estimate": "0.00", "consumed": "0.00", "left": "0.00", "order": "0", "totalHours": "56.0", "realname": "牛七" }, "wangwu": { "id": "12", "root": "2", "type": "project", "account": "wangwu", "role": "研发", "limited": "no", "join": "2019-11-20", "days": "8", "hours": "7.0", "estimate": "0.00", "consumed": "0.00", "left": "0.00", "order": "0", "totalHours": "56.0", "realname": "王五" }, "zhapliu": { "id": "10", "root": "2", "type": "project", "account": "zhapliu", "role": "测试", "limited": "no", "join": "2019-11-20", "days": "8", "hours": "7.0", "estimate": "0.00", "consumed": "0.00", "left": "0.00", "order": "0", "totalHours": "56.0", "realname": "赵六" } }, //用户列表信息 "users": { "_empty_": "", "admin": "admin", "lisi": "李四", "niuqi": "牛七", "wangwu": "王五", "zhangsan": "张三", "zhapliu": "赵六", "closed": "Closed" } } } |
{ "status": 0, "msg": "error", "result": [] } |
4.10添加单个项目可选信息
方法说明 | 请求此方法,获取正常状态产品列表信息,用于添加项目时为其绑定产品,从而用于项目与产品需求关联。还可获取权限分组列表,用于项目绑定访问控制权限。 |
|||||||||
使用示例 |
public function getProjectCreateParams() { include_once('../vendor/zentao/zentao.php'); $zentao = new \zentao(); $extraFields = array('title', 'projects', 'groups', 'allProducts'); $result = $zentao->getProjectCreateParams(array(), $extraFields); // 自定义返回字段 return $result; } |
|||||||||
请求方式 | GET | |||||||||
方法名称 | getProjectCreateParams |
|||||||||
请求参数 |
|
|||||||||
响应结果 |
success | error | ||||||||
{ "status": 1, "msg": "success", "result": { //当前禅道项目导航位置 "title": "添加项目", //已添加的项目列表 "projects": { "1": "禅道系统 PHP-SDK 开发", "2": "淘宝项目开发", "3": "天猫项目开发", "_empty_": "" }, //权限分组列表 "groups": { "1": "管理员", "2": "研发", "3": "测试", "4": "项目经理", "5": "产品经理", "6": "研发主管", "7": "产品主管", "8": "测试主管", "9": "高层管理", "10": "其他", "11": "guest", "12": "受限用户" }, //可关联产品列表 "allProducts": { "0": "", "1": "禅道项目管理系统-PHP-SDK", "2": "产品二", "4": "产品四", "5": "产品五", "6": "产品六", "9": "产品100" } } } |
{ "status": 0, "msg": "error", "result": [] } |
4.11添加单个项目
方法说明 | 此方法用于新增一个新产品,添加新产品时可以指定相关负责人,设置产品类型和访问权限。
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||
使用示例 |
public function addProject() { include_once('../vendor/zentao/zentao.php'); $zentao = new \zentao(); $params = array( 'name' => '禅道项目管理开发', 'code' => 'zentao', 'begin' => '2020-01-01', 'end' => '2020-06-06', 'days' => '100', 'team' => '禅道开发团队', 'type' => 'sprint', 'status' => 'wait', 'products[0]' => 0, 'plans[0]' => 0, 'desc' => '禅道是专业的研发项目管理软件。', 'acl' => 'custom', 'whitelist' => array(1, 2), 'products' => array(4, 5), 'plans' => array(5, 6) ); // 请求参数 $result = $zentao->addProject($params); return $result; } |
|||||||||||||||||||||||||||||||||||||||||||||||||||||
请求方式 |
POST | |||||||||||||||||||||||||||||||||||||||||||||||||||||
方法名称 |
addProject |
|||||||||||||||||||||||||||||||||||||||||||||||||||||
请求参数 |
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||
响应结果 |
success | error | ||||||||||||||||||||||||||||||||||||||||||||||||||||
{ "status": 1, "msg": "success", "result": "保存成功" } |
{ "status": 0, "msg": "error", "result": { "name": [ "『项目名称』已经有『禅道项目开发』这条记录了。如果您确定该记录已删除,请到后台-数据-回收站还原。" ], "code": [ "『项目代号』已经有『zentao』这条记录了。如果您确定该记录已删除,请到后台-数据-回收站还原。" ] } } |
4.12获取任务列表
方法说明 | 调用此方法可以过去某个项目下不同状态的任务列表。注意:排序方式降序排序,把 asc 修改为 desc 即可。 | |||||||||||||||||
使用示例 |
public function getTaskList() { include_once('../vendor/zentao/zentao.php'); $zentao = new \zentao(); $params = array('projectID' => 1, 'status' => 'all', 'orderBy' => 'pri_asc'); // 请求参数 $extraFields = array('title', 'projects', 'project', 'products', 'tasks'); //自定义返回字段 $result = $zentao->getTaskList($params, $extraFields); return $result; } |
|||||||||||||||||
请求方式 |
GET | |||||||||||||||||
方法名称 |
getTaskList |
|||||||||||||||||
请求参数 |
|
|||||||||||||||||
响应结果 |
success | error | ||||||||||||||||
{ "status": 1, "msg": "success", "result": { //当前禅道项目导航位置 "title": "禅道系统 PHP-SDK 开发-任务列表", //已添加项目名称列表 "projects": { "1": "禅道系统 PHP-SDK 开发" }, //当前项目详情信息【可参考获取项目列表中的描述】 "project": { "id": "1", "isCat": "0", "catID": "0", "type": "sprint", "parent": "0", "name": "禅道系统 PHP-SDK 开发", "code": "002", "begin": "2019-11-11", "end": "2019-11-23", "days": "10", "status": "doing", "subStatus": "", "statge": "1", "pri": "1", "desc": "开发禅道项目管理系统 PHP-SDK 的开发,用于 PHPer 高效便捷的进行项目管理。", "openedBy": "admin", "openedDate": "2019-11-11 15:24:14", "openedVersion": "11.6.4", "closedBy": "", "closedDate": "0000-00-00 00:00:00", "canceledBy": "", "canceledDate": "0000-00-00 00:00:00", "PO": "zhangsan", "PM": "niuqi", "QD": "admin", "RD": "lisi", "team": "禅道开发", "acl": "open", "whitelist": "", "order": "5", "deleted": "0", "totalHours": "420.0", "totalEstimate": 28, "totalConsumed": 25, "totalLeft": 0 }, //关联的产品列表信息 "products": { "1": { "id": "1", "name": "禅道项目管理系统-PHP-SDK", "type": "normal", "branch": "0", "plan": "0" } }, //此项目下任务列表信息 "tasks": { "1": { "id": "1",//任务ID "parent": "0", "project": "1",//所属项目ID "module": "1",//所属模块ID "story": "1", "storyVersion": "1", "fromBug": "0", "name": "确认禅道PHP-SDK需求,创建PHP-SDK文件 ",//任务名称 "type": "design",//任务类型 "pri": "1", "estimate": "4", "consumed": "6", "left": "0", "deadline": "2019-11-11", "status": "done", "subStatus": "", "color": "", "mailto": "", "desc": "创建 zentao.sdk.class 文件,做好基本的用户认证,分析需求,开始进行功能开发。",//任务描述 "openedBy": "admin",//创建者 "openedDate": "2019-11-11 15:29:27",//创建时间 "assignedTo": "admin", "assignedDate": "2019-11-20 15:30:15", "estStarted": "2019-11-11", "realStarted": "2019-11-11", "finishedBy": "admin", "finishedDate": "2019-11-20 15:30:15", "finishedList": "", "canceledBy": "", "canceledDate": "0000-00-00 00:00:00", "closedBy": "", "closedDate": "0000-00-00 00:00:00", "closedReason": "", "lastEditedBy": "admin", "lastEditedDate": "2019-11-20 15:30:15", "deleted": "0", "storyID": "1", "storyTitle": "确认禅道PHP-SDK需求,创建PHP-SDK文件", "product": "1", "branch": "0", "latestStoryVersion": "1", "storyStatus": "active", "assignedToRealName": "admin", "needConfirm": false, "productType": "normal", "progress": 100 } } } } |
{ "status": 0, "msg": "error", "result": [] } |
4.13添加单个任务可选信息
方法说明 | 添加单个任务时,可以先通过此方法,获取添加任务中所需要的相关信息。 |
|||||||||
使用示例 |
public function getTaskCreateParams() { include_once('../vendor/zentao/zentao.php'); $zentao = new \zentao(); $params = array('project' => 1); // 请求参数 $extraFields = array('title', 'projects', 'users', 'stories', 'moduleOptionMenu', 'project'); // 自定义返回字段 $result = $zentao->getTaskCreateParams($params, $extraFields); return $result; } |
|||||||||
请求方式 |
GET | |||||||||
方法名称 |
getTaskCreateParams |
|||||||||
请求参数 |
|
|||||||||
响应结果 |
success | error | ||||||||
{ "status": 1, "msg": "success", "result": { //当前禅道项目导航位置 "title": "禅道系统 PHP-SDK 开发-建任务", //所有项目名称列表 "projects": { "1": "禅道系统 PHP-SDK 开发" }, //可选用户列表【可用于指派和抄送】 "users": { "_empty_": "", "admin": "A:admin", "lisi": "L:李四", "niuqi": "N:牛七", "wangwu": "W:王五", "zhangsan": "Z:张三", "zhapliu": "Z:赵六" }, //该项目下的需求【可用于关联需求】 "stories": { "1": "1:确认禅道PHP-SDK需求,创建PHP-SDK文件 (优先级:1,预计工时:4)", "2": "2:开发禅道SDK功能接口 (优先级:1,预计工时:24)", "_empty_": "" }, //该项目所属模块列表【用于绑定所属模块】 "moduleOptionMenu": [ "/", "/设计", "/开发" ], //当前项目信息【描述参考 2.7 获取项目列表】 "project": { "id": "1", "isCat": "0", "catID": "0", "type": "sprint", "parent": "0", "name": "禅道系统 PHP-SDK 开发", "code": "002", "begin": "2019-11-11", "end": "2019-11-23", "days": "10", "status": "doing", "subStatus": "", "statge": "1", "pri": "1", "desc": "开发禅道项目管理系统 PHP-SDK 的开发,用于 PHPer 高效便捷的进行项目管理。", "openedBy": "admin", "openedDate": "2019-11-11 15:24:14", "openedVersion": "11.6.4", "closedBy": "", "closedDate": "0000-00-00 00:00:00", "canceledBy": "", "canceledDate": "0000-00-00 00:00:00", "PO": "zhangsan", "PM": "niuqi", "QD": "admin", "RD": "lisi", "team": "禅道开发", "acl": "open", "whitelist": "", "order": "5", "deleted": "0", "totalHours": "420.0", "totalEstimate": 28, "totalConsumed": 25, "totalLeft": 0 } } } |
{ "status": 0, "msg": "error", "result": [] } |
4.14添加单个任务
方法说明 | 请求此方法,用于新增一个任务,新增任务的同时可以绑定所属项目、指派给某用户、设定优先级等相关信息。 |
|||||||||||||||||||||||||||||||||||||||||||||||||||||
使用示例 |
public function addTask() { include_once('../vendor/zentao/zentao.php'); $zentao = new \zentao(); $params = array( 'project' => 1, 'type' => 'ui', 'module' => 0, 'assignedTo[]' => 'lisi', 'testAssignedTo[]' => 'lisi', 'color' => '', 'name' => '测试添加任务2', 'pri' => 2, 'estimate' => 1, 'desc' => '测试添加任务描述测试添加任务描述', 'estStarted' => '2019-11-11', 'deadline' => '2019-11-12', 'mailto[1]' => 'lisi' ); // 请求参数 $result = $zentao->addTask($params); return $result; } |
|||||||||||||||||||||||||||||||||||||||||||||||||||||
请求方式 |
POST | |||||||||||||||||||||||||||||||||||||||||||||||||||||
方法名称 |
addTask |
|||||||||||||||||||||||||||||||||||||||||||||||||||||
请求参数 |
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||
响应结果 |
success | error | ||||||||||||||||||||||||||||||||||||||||||||||||||||
{ "status": 1, "msg": "success", "result": "保存成功" } |
{ "status": 0, "msg": "error", "result": { "name": [ "『任务名称』不能为空。" ] } } |