DocumentGroupModule.class.php 9.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246
  1. <?php
  2. /**
  3. * @name eolinker ams open source,eolinker开源版本
  4. * @link https://www.eolinker.com/
  5. * @package eolinker
  6. * @author www.eolinker.com 广州银云信息科技有限公司 ©2015-2018
  7. * eoLinker是目前全球领先、国内最大的在线API接口管理平台,提供自动生成API文档、API自动化测试、Mock测试、团队协作等功能,旨在解决由于前后端分离导致的开发效率低下问题。
  8. * 如在使用的过程中有任何问题,欢迎加入用户讨论群进行反馈,我们将会以最快的速度,最好的服务态度为您解决问题。
  9. *
  10. * eoLinker AMS开源版的开源协议遵循Apache License 2.0,如需获取最新的eolinker开源版以及相关资讯,请访问:https://www.eolinker.com/#/os/download
  11. *
  12. * 官方网站:https://www.eolinker.com/
  13. * 官方博客以及社区:http://blog.eolinker.com/
  14. * 使用教程以及帮助:http://help.eolinker.com/
  15. * 商务合作邮箱:market@eolinker.com
  16. * 用户讨论QQ群:284421832
  17. */
  18. class DocumentGroupModule
  19. {
  20. /**
  21. * 获取用户类型
  22. * @param $group_id
  23. * @return bool|int
  24. */
  25. public function getUserType(&$group_id)
  26. {
  27. $dao = new DocumentGroupDao();
  28. if (!($project_id = $dao->checkGroupPermission($group_id, $_SESSION['userID']))) {
  29. return -1;
  30. }
  31. $auth_dao = new AuthorizationDao();
  32. $result = $auth_dao->getProjectUserType($_SESSION['userID'], $project_id);
  33. if ($result === FALSE) {
  34. return -1;
  35. }
  36. return $result;
  37. }
  38. /**
  39. * 添加文档分组
  40. * @param $project_id int 项目ID
  41. * @param $user_id int 用户ID
  42. * @param $group_name string 分组名称
  43. * @param $parent_group_id int 父分组ID
  44. * @return bool|int
  45. */
  46. public function addGroup(&$project_id, &$user_id, &$group_name, &$parent_group_id)
  47. {
  48. $group_dao = new DocumentGroupDao();
  49. $project_dao = new ProjectDao();
  50. if (!($project_id = $project_dao->checkProjectPermission($project_id, $user_id))) {
  51. return FALSE;
  52. }
  53. //判断是否有父分组
  54. if (is_null($parent_group_id)) {
  55. //没有父分组
  56. $group_id = $group_dao->addGroup($project_id, $group_name);
  57. if ($group_id) {
  58. //更新项目的更新时间
  59. $project_dao->updateProjectUpdateTime($project_id);
  60. //将操作写入日志
  61. $log_dao = new ProjectLogDao();
  62. $log_dao->addOperationLog($project_id, $user_id, ProjectLogDao::$OP_TARGET_PROJECT_DOCUMENT_GROUP, $group_id, ProjectLogDao::$OP_TYPE_ADD, "添加项目文档分组:'{$group_name}'", date("Y-m-d H:i:s", time()));
  63. //返回分组的groupID
  64. return $group_id;
  65. } else {
  66. return FALSE;
  67. }
  68. } else {
  69. //有父分组
  70. $group_id = $group_dao->addChildGroup($project_id, $group_name, $parent_group_id);
  71. if ($group_id) {
  72. if (!$group_dao->checkGroupPermission($parent_group_id, $user_id)) {
  73. return FALSE;
  74. }
  75. //更新项目的更新时间
  76. $project_dao->updateProjectUpdateTime($project_id);
  77. $parent_group_name = $group_dao->getGroupName($parent_group_id);
  78. //将操作写入日志
  79. $log_dao = new ProjectLogDao();
  80. $log_dao->addOperationLog($project_id, $user_id, ProjectLogDao::$OP_TARGET_PROJECT_DOCUMENT_GROUP, $group_id, ProjectLogDao::$OP_TYPE_ADD, "添加项目文档子分组:'{$parent_group_name}>>{$group_name}'", date("Y-m-d H:i:s", time()));
  81. //返回分组ID
  82. return $group_id;
  83. } else {
  84. return FALSE;
  85. }
  86. }
  87. }
  88. /**
  89. * 删除文档分组
  90. * @param $user_id int 用户ID
  91. * @param $group_id int 分组ID
  92. * @return bool
  93. */
  94. public function deleteGroup(&$user_id, &$group_id)
  95. {
  96. $group_dao = new DocumentGroupDao();
  97. if (!($project_id = $group_dao->checkGroupPermission($group_id, $user_id))) {
  98. return FALSE;
  99. }
  100. $group_name = $group_dao->getGroupName($group_id);
  101. if ($group_dao->deleteGroup($group_id)) {
  102. //更新项目的更新时间
  103. $project_dao = new ProjectDao();
  104. $project_dao->updateProjectUpdateTime($project_id);
  105. //将操作写入日志
  106. $log_dao = new ProjectLogDao();
  107. $log_dao->addOperationLog($project_id, $user_id, ProjectLogDao::$OP_TARGET_PROJECT_DOCUMENT_GROUP, $group_id, ProjectLogDao::$OP_TYPE_DELETE, "删除项目文档分组:'$group_name'", date("Y-m-d H:i:s", time()));
  108. return TRUE;
  109. } else {
  110. return FALSE;
  111. }
  112. }
  113. /**
  114. * 获取项目分组
  115. * @param $project_id int 项目ID
  116. * @param $user_id int 用户ID
  117. * @return bool|mixed
  118. */
  119. public function getGroupList(&$project_id, &$user_id)
  120. {
  121. $project_dao = new ProjectDao();
  122. if (!$project_dao->checkProjectPermission($project_id, $user_id)) {
  123. return FALSE;
  124. }
  125. $group_dao = new DocumentGroupDao();
  126. return $group_dao->getGroupList($project_id);
  127. }
  128. /**
  129. * 修改文档分组
  130. * @param $user_id int 用户ID
  131. * @param $group_id int 分组ID
  132. * @param $group_name string 分组名称
  133. * @param $parent_group_id int 父分组ID
  134. * @return bool
  135. */
  136. public function editGroup(&$user_id, &$group_id, &$group_name, &$parent_group_id)
  137. {
  138. $group_dao = new DocumentGroupDao();
  139. if (!($project_id = $group_dao->checkGroupPermission($group_id, $user_id))) {
  140. return FALSE;
  141. }
  142. if ($parent_group_id && !$group_dao->checkGroupPermission($parent_group_id, $user_id)) {
  143. return FALSE;
  144. }
  145. if ($group_dao->editGroup($group_id, $group_name, $parent_group_id)) {
  146. //更新项目的更新时间
  147. $project_dao = new ProjectDao();
  148. $project_dao->updateProjectUpdateTime($project_id);
  149. //将操作写入日志
  150. $log_dao = new ProjectLogDao();
  151. $log_dao->addOperationLog($project_id, $user_id, ProjectLogDao::$OP_TARGET_PROJECT_DOCUMENT_GROUP, $group_id, ProjectLogDao::$OP_TYPE_UPDATE, "修改项目文档分组:'{$group_name}'", date("Y-m-d H:i:s", time()));
  152. return TRUE;
  153. } else {
  154. return FALSE;
  155. }
  156. }
  157. /**
  158. * 更新分组排序
  159. * @param $project_id int 项目ID
  160. * @param $order_list string 排序列表
  161. * @param $user_id int 用户ID
  162. * @return bool
  163. */
  164. public function updateGroupOrder(&$project_id, &$order_list, &$user_id)
  165. {
  166. $project_dao = new ProjectDao();
  167. if (!$project_dao->checkProjectPermission($project_id, $user_id)) {
  168. return FALSE;
  169. }
  170. $group_dao = new DocumentGroupDao();
  171. $result = $group_dao->updateGroupOrder($project_id, $order_list);
  172. if ($result) {
  173. //将操作写入日志
  174. $log_dao = new ProjectLogDao();
  175. $log_dao->addOperationLog($project_id, $user_id, ProjectLogDao::$OP_TARGET_PROJECT_DOCUMENT_GROUP, $project_id, ProjectLogDao::$OP_TYPE_UPDATE, "修改项目文档分组排序", date('Y-m-d H:i:s', time()));
  176. return TRUE;
  177. } else {
  178. return FALSE;
  179. }
  180. }
  181. /**
  182. * 导出分组
  183. * @param $group_id
  184. * @return bool|string
  185. */
  186. public function exportGroup(&$group_id)
  187. {
  188. $group_dao = new DocumentGroupDao();
  189. if (!($projectID = $group_dao->checkGroupPermission($group_id, $_SESSION['userID']))) {
  190. return FALSE;
  191. }
  192. $data = $group_dao->getGroupData($projectID, $group_id);
  193. if ($data) {
  194. $fileName = 'eoLinker_document_group_export_' . $_SESSION['userName'] . '_' . time() . '.export';
  195. if (file_put_contents(realpath('./dump') . DIRECTORY_SEPARATOR . $fileName, json_encode($data))) {
  196. $group_name = $group_dao->getGroupName($group_id);
  197. //将操作写入日志
  198. $log_dao = new ProjectLogDao();
  199. $log_dao->addOperationLog($projectID, $_SESSION['userID'], ProjectLogDao::$OP_TARGET_PROJECT_DOCUMENT_GROUP, $group_id, ProjectLogDao::$OP_TYPE_OTHERS, "导出文档分组:$group_name", date("Y-m-d H:i:s", time()));
  200. return $fileName;
  201. }
  202. } else {
  203. return FALSE;
  204. }
  205. }
  206. /**
  207. * 导入分组
  208. * @param $project_id
  209. * @param $data
  210. * @return bool
  211. */
  212. public function importGroup(&$project_id, &$data)
  213. {
  214. $group_dao = new DocumentGroupDao();
  215. $project_dao = new ProjectDao();
  216. if (!$project_dao->checkProjectPermission($project_id, $_SESSION['userID'])) {
  217. return FALSE;
  218. }
  219. $result = $group_dao->importGroup($project_id, $_SESSION['userID'], $data);
  220. if ($result) {
  221. //将操作写入日志
  222. $log_dao = new ProjectLogDao();
  223. $log_dao->addOperationLog($project_id, $_SESSION['userID'], ProjectLogDao::$OP_TARGET_PROJECT_DOCUMENT_GROUP, $project_id, ProjectLogDao::$OP_TYPE_OTHERS, "导入文档分组:{$data['groupName']}", date("Y-m-d H:i:s", time()));
  224. return $result;
  225. } else {
  226. return FALSE;
  227. }
  228. }
  229. }