- 1. 禅道SDK开发手册
- 1.1 配置使用与常见问题
- 1.2 调用SDK示例
- 1.3. 部门相关接口
- 1.4. 用户相关接口
- 1.4.1 获得添加用户所用的参数列表
- 1.4.2 添加单个用户
- 1.4.3 获取用户列表
- 1.4.2 添加单个用户
- 1.5. 产品相关接口
- 1.5.1 获取产品列表
- 1.5.2 添加单个产品可选信息
- 1.5.3 添加单个产品
- 1.5.2 添加单个产品可选信息
- 1.6. 项目相关接口
- 1.6.1 获取项目列表
- 1.6.2 添加单个项目可选信息
- 1.6.3 添加单个项目
- 1.6.2 添加单个项目可选信息
- 1.7. 任务相关接口
- 1.7.1 获取任务列表
- 1.7.2 添加单个任务可选信息
- 1.7.3 添加单个任务
- 1.7.4 完成单个任务可选信息
- 1.7.5 完成单个任务
- 1.7.2 添加单个任务可选信息
- 1.8. bug相关接口
- 1.8.1 获取Bug列表
- 1.8.2 添加单个Bug可选信息
- 1.8.3 添加单个Bug
- 1.8.4 解决单个Bug可选信息
- 1.8.5 解决单个Bug
- 1.8.2 添加单个Bug可选信息
- 1.2 调用SDK示例
- 2. 禅道RESTful API开发手册v1
- 2.1 配置使用与常见问题
- 2.2. Token
- 2.2.1 获取Token
- 2.3. 部门
- 2.4. 用户
- 2.5. 项目集
- 2.6. 产品
- 2.7. 产品计划
- 2.7.1 获取产品计划列表
- 2.7.2 创建计划
- 2.7.3 获取计划详情
- 2.7.4 修改计划
- 2.7.5 删除计划
- 2.7.6 产品计划关联需求
- 2.7.7 产品计划取消关联需求
- 2.7.8 产品计划关联Bug
- 2.7.9 产品计划取消关联Bug
- 2.7.2 创建计划
- 2.8. 发布
- 2.9. 需求
- 2.9.1 获取产品需求列表
- 2.9.2 获取项目需求列表
- 2.9.3 获取执行需求列表
- 2.9.4 创建需求
- 2.9.5 获取需求详情
- 2.9.6 变更需求
- 2.9.7 修改需求其他字段
- 2.9.8 删除需求
- 2.9.9 关闭需求
- 2.9.2 获取项目需求列表
- 2.10. 项目
- 2.11. 版本
- 2.12. 执行
- 2.13. 任务
- 2.13.1 获取执行任务列表
- 2.13.2 创建任务
- 2.13.3 获取任务详情
- 2.13.4 修改任务
- 2.13.5 删除任务
- 2.13.6 开始任务
- 2.13.7 暂停任务
- 2.13.8 继续任务
- 2.13.9 完成任务
- 2.13.10 关闭任务
- 2.13.11 添加任务日志
- 2.13.12 获取任务日志
- 2.13.2 创建任务
- 2.14. Bug
- 2.14.1 获取产品Bug列表
- 2.14.2 创建Bug
- 2.14.3 获取Bug详情
- 2.14.4 修改Bug
- 2.14.5 删除Bug
- 2.14.6 确认Bug
- 2.14.7 关闭Bug
- 2.14.8 激活Bug
- 2.14.9 解决Bug
- 2.14.2 创建Bug
- 2.15. 用例
- 2.16. 测试单
- 2.17. 反馈
- 2.18. 工单
- 2.2. Token
- 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版本
- 3.2 禅道的目录结构
- 1.1 配置使用与常见问题
禅道PHP-SDK帮助手册-第二章 分享链接
本篇目录
public function addBug()
{
include_once('../vendor/zentao/zentao.php');
$zentao = new \zentao();
$params = array(
'product' => 1,
'module' => 2,
'project' => 1,
'openedBuild' => array('trunk', 3, 2),
'openedBuild[1]' => 'trunk',
'assignedTo' => 'lisi',
'deadline' => '2019-11-21',
'type' => 'codeerror',
'os' => 'windows',
'browser' => 'ie11',
'title' => '添加bug测试四',
'color' => '#2dbdb2',
'severity' => 2,
'pri' => 1,
'steps' => '重现步骤描述添加bug测试四',
'story' => 0,
'task' => 0,
'mailto[1]' => 'lisi',
'keywords' => 'bug4'
); // 请求参数
$result = $zentao->addBug($params);
return $result;
}4.15完成单个任务可选信息
方法说明 | 请求此方法,可以获取该任务的所属项目详情、任务详情、任务操作记录,同时获取用于指派完成的用户列表。 | |||||||||
| 使用示例 | public function getTaskFinishParams()
{
include_once('../vendor/zentao/zentao.php');
$zentao = new \zentao();
$params = array('taskID' => 1); // 请求参数
$extraFields = array('title', 'users', 'task', 'project', 'actions'); // 自定义返回字段
$result = $zentao->getTaskFinishParams($params, $extraFields);
return $result;
} | |||||||||
| 请求方式 | GET | |||||||||
| 方法名称 | getTaskFinishParams | |||||||||
| 请求参数 |
| |||||||||
| 响应结果 | success | error | ||||||||
{
"status": 1,
"msg": "success",
"result": {
//当前禅道项目导航位置
"title": "禅道系统 PHP-SDK 开发-完成",
//可用指派用户列表
"users": {
"_empty_": "",
"admin": "A:admin",
"lisi": "L:李四",
"niuqi": "N:牛七",
"wangwu": "W:王五",
"zhangsan": "Z:张三",
"zhapliu": "Z:赵六"
},
//任务详情信息
"task": {
"id": "1",
"parent": "0",
"project": "1",
"module": "1",
"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": "",
"closedBy": "",
"closedDate": "",
"closedReason": "",
"lastEditedBy": "admin",
"lastEditedDate": "2019-11-20 15:30:15",
"deleted": "0",
"storyID": "1",
"storyTitle": "确认禅道PHP-SDK需求,创建PHP-SDK文件",
"latestStoryVersion": "1",
"storyStatus": "active",
"assignedToRealName": "admin",
"children": [],
"team": [],
"files": [],
"cases": [],
"needConfirm": false,
"progress": 100,
"nextBy": "admin"
},
//所属项目详情信息
"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": "lisi",
"PM": "lisi",
"QD": "lisi",
"RD": "lisi",
"team": "雷勇开发",
"acl": "custom",
"whitelist": "1,2",
"order": "5",
"deleted": "0",
"totalHours": "420.0",
"totalEstimate": 28,
"totalConsumed": 33,
"totalLeft": 5
},
//操作记录详情列表
"actions": {
"14": {
"id": "14",
"objectType": "task",
"objectID": "1",
"product": ",1,",
"project": "1",
"actor": "wangwu",
"action": "started",
"date": "2019-11-11 15:30:33",
"comment": "",
"extra": "",
"read": "0",
"history": [
{
"id": "2",
"action": "14",
"field": "realStarted",
"old": "0000-00-00",
"new": "2019-11-11",
"diff": ""
},
{
"id": "3",
"action": "14",
"field": "consumed",
"old": "0",
"new": "3",
"diff": ""
},
{
"id": "4",
"action": "14",
"field": "status",
"old": "wait",
"new": "doing",
"diff": ""
}
]
}
}
}
} | {
"status": 0,
"msg": "error",
"result": []
} | |||||||||
4.16完成单个任务
请求此方法,用于确认某一个任务完成,可指派完成任务的用户、消耗时间等信息。 方法说明 使用示例 public function addTaskFinish()
{
include_once('../vendor/zentao/zentao.php');
$zentao = new \zentao();
$params = array(
'taskID' => 16,
'currentConsumed' => 1,
'consumed' => 19,
'assignedTo' => 'lisi',
'finishedDate' => '2019-11-12',
'comment' => '完成任务描述'
); // 请求参数
$result = $zentao->addTaskFinish($params);
return $result;
}请求方式 POST 方法名称 addTaskFinish 请求参数 参数名称 参数类型 是否必填 参数描述 taskID int 必填参数 任务ID currentConsumed int 必填参数 本次消耗【小时】 consumed int 必填参数 之前消耗【小时,可从 完成单个任务可选信息 方法响应结果 task->consumed 获取】 assignedTo string 必填参数 指派完成用户【示例:admin】 finishedDate string 必填参数 实际完成时间【格式:2019-12-12】 comment string 选填参数 完成备注 响应结果 success error {
"status": 1,
"msg": "success",
"result": []
}{
"status": 0,
"msg": "error",
"result": []
}
4.17获取Bug列表
请求此方法,可以根据不同产品下的不同状态获取该产品 Bug 列表。 getBugList 方法说明 使用示例 public function getBugList()
{
include_once('../vendor/zentao/zentao.php');
$zentao = new \zentao();
$params = array('productID' => 1, 'branch' => 0, 'browseType' => 'unresolved'); // 请求参数
$extraFields = array('title', 'products', 'productID', 'productName', 'product', 'moduleName', 'modules', 'browseType', 'bugs'); // 自定义返回字段
$result = $zentao->getBugList($params, $extraFields);
return $result;
}请求方式 GET 方法名称 请求参数 参数名称 参数类型 是否必填 参数描述 productID int 必填参数 产品ID branch int 必填参数 分支ID【默认为0】 browseType string 选填参数 选填参数|Bug状态【all所有|unclosed未关闭|openedbyme由我创建|assigntome指派给我|resolvedbyme由我解决|toclosed待关闭|unresolved未解决|unconfirmed未确认|longlifebugs久未处理|postponedbugs被延期|overduebugs过期BUG|needconfirm需求变动】 响应结果 success error {
"status": 1,
"msg": "success",
"result": {
//当前禅道项目导航位置
"title": "禅道项目管理系统-PHP-SDK-Bug",
//已有产品名称列表
"products": {
"1": "禅道项目管理系统-PHP-SDK",
"2": "产品二",
"3": "产品三",
"4": "产品四",
"5": "产品五",
"6": "产品六",
"9": "产品100"
},
//当前产品ID
"productID": 1,
//当前产品名称
"productName": "禅道项目管理系统-PHP-SDK",
//当前产品详情
"product": {
"id": "1",
"name": "禅道项目管理系统-PHP-SDK",
"code": "001",
"line": "0",
"type": "normal",
"status": "normal",
"subStatus": "",
"desc": "开发禅道PHP开发语言的SDK,以方便开发人员能快速来创建和使用禅道系统所提供的服务,同时减少开发者的学习成本和时间。",
"PO": "admin",
"QD": "admin",
"RD": "admin",
"acl": "open",
"whitelist": "",
"createdBy": "admin",
"createdDate": "2019-11-11 12:22:29",
"createdVersion": "11.6.4",
"order": "5",
"deleted": "0"
},
//当前产品模块
"moduleName": "所有模块",
//当前产品模块列表
"modules": [
"/",
"/设计",
"/开发",
"/变更",
"/测试"
],
//当前 BUG 状态
"browseType": "unclosed",
//当前状态下的 BUG 列表
"bugs": [
{
"id": "7",//BUG ID
"product": "1",//所属产品ID
"branch": "0",//所属分支ID
"module": "2",//所属模块ID
"project": "1",//所属项目ID
"plan": "0",//j所属计划ID
"story": "0",
"storyVersion": "1",
"task": "0",
"toTask": "0",
"toStory": "0",
"title": "添加bug测试三",//BUG 标题
"keywords": "修改bug",//BUG 关键词
"severity": "2",//严重程度
"pri": "1",//优先程度
"type": "codeerror",//BUG 类型
"os": "windows",//操作系统
"browser": "ie11",//浏览器
"hardware": "",
"found": "",
"steps": "重现步骤描述添加bug测试三",//重现步骤描述
"status": "active",//BUG 状态【active激活|resolved已解决|closed已关闭】
"subStatus": "",
"color": "#2dbdb2",//BUG颜色
"confirmed": "0",//是否确认
"activatedCount": "0",
"activatedDate": "0000-00-00 00:00:00",
"mailto": "zhangsan",
"openedBy": "admin",
"openedDate": "2019-11-21 16:45:58",
"openedBuild": "主干",
"assignedTo": "zhangsan",
"assignedDate": "2019-11-21 16:45:58",
"deadline": "2019-11-21",
"resolvedBy": "",
"resolution": "",
"resolvedBuild": "",
"resolvedDate": "0000-00-00 00:00:00",
"closedBy": "",
"closedDate": "0000-00-00 00:00:00",
"duplicateBug": "0",
"linkBug": "",
"case": "0",
"caseVersion": "1",
"result": "0",
"testtask": "0",
"lastEditedBy": "",
"lastEditedDate": "0000-00-00 00:00:00",
"deleted": "0",
"delay": 1,
"needconfirm": false
}
]
}
}{
"status": 0,
"msg": "error",
"result": []
}
4.18添加单个Bug可选信息
| 方法说明 | 请求此方法,用于为指定产品添加 Bug 之前,获取添加 Bug 时可能需要用到的一些相关信息。 | |||||||||
| 使用示例 | public function getBugCreateParams()
{
include_once('../vendor/zentao/zentao.php');
$zentao = new \zentao();
$params = array('productID' => 1); // 请求参数
$extraFields = array('title', 'productID', 'productName', 'projects', 'moduleOptionMenu', 'users', 'stories', 'builds'); // 自定义返回字段
$result = $zentao->getBugCreateParams($params, $extraFields);
return $result;
} | |||||||||
| 请求方式 | GET | |||||||||
| 方法名称 | getBugCreateParams | |||||||||
| 请求参数 |
| |||||||||
| 响应结果 | success | error | ||||||||
{
"status": 1,
"msg": "success",
"result": {
//当前禅道项目导航位置
"title": "禅道项目管理系统-PHP-SDK-提Bug",
//当前产品ID
"productID": 1,
//当前产品名称
"productName": "禅道项目管理系统-PHP-SDK",
//当前产品下的项目列表
"projects": {
"1": "禅道系统 PHP-SDK 开发",
"_empty_": ""
},
//当前产品的模块列表
"moduleOptionMenu": [
"/",
"/设计",
"/开发",
"/变更",
"/测试"
],
//可指派用户列表
"users": {
"_empty_": "",
"lisi": "L:李四",
"wangwu": "W:王五",
"zhapliu": "Z:赵六",
"admin": "A:admin",
"niuqi": "N:牛七",
"zhangsan": "Z:张三"
},
//当前产品需求列表
"stories": {
"1": "1:确认禅道PHP-SDK需求,创建PHP-SDK文件 (优先级:1,预计工时:4)",
"2": "2:开发禅道SDK功能接口 (优先级:1,预计工时:24)",
"_empty_": ""
},
//当前产品影响版本列表
"builds": {
"trunk": "主干"
}
}
} | {
"status": 0,
"msg": "error",
"result": []
} | |||||||||
4.19添加单个Bug
| 方法说明 | 请求此方法,用于新增 Bug 反馈,新增 Bug 时可以绑定所属产品、项目、优先级等相关设置,并指派给某个用户。 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| 使用示例 | public function addBug()
{
include_once('../vendor/zentao/zentao.php');
$zentao = new \zentao();
$params = array(
'product' => 1,
'module' => 2,
'project' => 1,
'openedBuild' => array('trunk', 3, 2),
'assignedTo' => 'lisi',
'deadline' => '2019-11-21',
'type' => 'codeerror',
'os' => 'windows',
'browser' => 'ie11',
'title' => '添加bug测试四',
'color' => '#2dbdb2',
'severity' => 2,
'pri' => 1,
'steps' => '重现步骤描述添加bug测试四',
'story' => 0,
'task' => 0,
'mailto' => array('lisi', '张三'),
'keywords' => 'bug4'
); // 请求参数
$result = $zentao->addBug($params);
return $result;
} | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| 请求方式 | POST | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| 方法名称 | addBug | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| 请求参数 |
| |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| 响应结果 | success | error | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
{
"status": 1,
"msg": "success",
"result": "保存成功"
} | {
"status": 0,
"msg": "error",
"result": {
"title": [
"『Bug标题』不能为空。"
]
}
} | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
4.20解决单个Bug可选信息
请求此方法,可以获取当前 Bug 详细信息以及确认 Bug 解决时可能用到的信息。 getBugResolveParams 方法说明 使用示例 public function getBugResolveParams()
{
include_once('../vendor/zentao/zentao.php');
$zentao = new \zentao();
$params = array('bugID' => 14); // 请求参数
$extraFields = array('title', 'products', 'bug', 'users', 'builds', 'actions'); // 自定义返回字段
$result = $zentao->getBugResolveParams($params, $extraFields);
return $result;
}请求方式 GET 方法名称 请求参数 参数名称 参数类型 是否必填 参数描述 bugID int 必填参数 Bug ID 响应结果 success error {
"status": 1,
"msg": "success",
"result": {
//当前禅道项目导航位置
"title": "禅道项目管理系统-PHP-SDK-解决",
//已存在产品列表
"products": {
"1": "禅道项目管理系统-PHP-SDK"
},
//BUG详情【相关描述可参考 2.12 获取 BUG 列表】
"bug": {
"id": "5",
"product": "1",
"branch": "0",
"module": "2",
"project": "1",
"plan": "0",
"story": "0",
"storyVersion": "1",
"task": "0",
"toTask": "0",
"toStory": "0",
"title": "添加bug测试二",
"keywords": "修改bug",
"severity": "2",
"pri": "1",
"type": "codeerror",
"os": "windows",
"browser": "ie11",
"hardware": "",
"found": "",
"steps": "重现步骤描述添加bug测试二",
"status": "active",
"subStatus": "",
"color": "#2dbdb2",
"confirmed": "1",
"activatedCount": "0",
"activatedDate": "",
"mailto": "lisi",
"openedBy": "admin",
"openedDate": "2019-11-21 16:45:13",
"openedBuild": "trunk",
"assignedTo": "lisi",
"assignedDate": "2019-11-22 15:22:21",
"deadline": "2019-11-21",
"resolvedBy": "",
"resolution": "",
"resolvedBuild": "",
"resolvedDate": "",
"closedBy": "",
"closedDate": "",
"duplicateBug": "0",
"linkBug": "",
"case": "0",
"caseVersion": "1",
"result": "0",
"testtask": "0",
"lastEditedBy": "admin",
"lastEditedDate": "2019-11-22 15:22:21",
"deleted": "0",
"projectName": "禅道系统 PHP-SDK 开发",
"storyTitle": null,
"storyStatus": null,
"latestStoryVersion": null,
"taskName": null,
"planName": null,
"toCases": [],
"files": [],
"delay": 1
},
//可用用户列表【用于指派】
"users": {
"_empty_": "",
"admin": "A:admin",
"lisi": "L:李四",
"niuqi": "N:牛七",
"wangwu": "W:王五",
"zhangsan": "Z:张三",
"zhapliu": "Z:赵六"
},
//当前可用版本【用于解决版本】
"builds": {
"_empty_": "",
"trunk": "主干"
},
//当前 BUG 的操作记录
"actions": {
"791": {
"id": "791",
"objectType": "bug",
"objectID": "5",
"product": ",1,",
"project": "1",
"actor": "admin",
"action": "bugconfirmed",
"date": "2019-11-22 15:22:21",
"comment": "",
"extra": "",
"read": "0",
"history": [
{
"id": "216",
"action": "791",
"field": "confirmed",
"old": "0",
"new": "1",
"diff": ""
}
]
}
}
}
}{
"status": 0,
"msg": "error",
"result": []
}
4.21解决单个Bug
请求此方法,用于确认一个 Bug 已解决,同时为其绑定解决方案、解决版本、解决日期等相关信息。 addBugResolve createBuild duplicateBug 方法说明 使用示例 public function addBugResolve()
{
include_once('../vendor/zentao/zentao.php');
$zentao = new \zentao();
$params = array(
'bugID' => 9,
'resolution' => 'duplicate',
'resolvedBuild' => '2',
'resolvedDate' => '2019-11-22',
'assignedTo' => 'lisi',
'comment' => '解决bug描述',
'buildProject' => 1,
'buildName' => '版本7.2.5',
'createBuild' => 1,
'duplicateBug' => 2
); // 请求参数
$result = $zentao->addBugResolve($params);
return $result;
}请求方式 POST 方法名称 请求参数 参数名称 参数类型 是否必填 参数描述 bugID int 必填参数 Bug ID resolution string 必填参数 解决方案【bydesign设计如此|duplicate重复Bug|external外部原因|fixed已解决|notrepro无法重现|postponed延期处理|willnotfix不予解决】 resolvedBuild string 选填参数 解决版本【如需新增版本,参考注意点一】 resolvedDate string 选填参数 解决日期【格式:2019-11-11】 assignedTo string 选填参数 指派用户【用户账号】 comment string 选填参数 备注描述 buildProject int 选填参数 新增版本所属项目ID buildName string 选填参数 新增版本名称 int 选填参数 是否创建【1是0否】 int 选填参数 重复Bug的ID 响应结果 success error {
"status": 1,
"msg": "success",
"result": []
}{
"status": 0,
"msg": "error",
"result": []
}
五、常见问题?
5.1调用禅道 SDK 类中方法,出现错误提示 "Trying to get property of non-object" ?
通常由以下情况造成,开发者可以打印输出 SDK 中请求结果 $result 查看返回信息以此查看原因。
- 第一种情况,需要修改密码。解决方案: 登录后台管理系统,找到 后台->安全->密码安全设置 关闭密码检查、关闭强制修改弱密码、关闭强制首次登录修改密码
<html><meta charset='utf-8'/>
<style>body{background:white}</style>
<script>self.location='/index.php?m=my&f=changepassword&t=json';</script>- 第二种情况,没有操作权限。解决方案: 登录后台管理系统,给该账号设置相关权限。
<html><meta charset='utf-8'/>
<style>body{background:white}</style>
<script>self.location='/index.php?m=user&f=deny&t=json&module=dept&method=browse';</script>- 第三种情况,缺失参数。解决方案: 在 API 列表 中找到对应方法,检查所传参数是否与文档列表中的参数相符。




精品资料包
1V1产品演示
免费试用增强功能
专属顾问答疑支持


