DocumentGroupDao.class.php 13 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333
  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 DocumentGroupDao
  19. {
  20. /**
  21. * 添加文档分组
  22. * @param $project_id int 项目ID
  23. * @param $group_name string 分组名称
  24. * @return bool|int
  25. */
  26. public function addGroup(&$project_id, &$group_name)
  27. {
  28. $db = getDatabase();
  29. $db->prepareExecute('INSERT INTO eo_project_document_group (eo_project_document_group.groupName,eo_project_document_group.projectID) VALUES (?,?);', array(
  30. $group_name,
  31. $project_id,
  32. ));
  33. $group_id = $db->getLastInsertID();
  34. if ($db->getAffectRow() < 1)
  35. return FALSE;
  36. else
  37. return $group_id;
  38. }
  39. /**
  40. * 添加文档子分组
  41. * @param $project_id int 项目ID
  42. * @param $parent_group_id int 父分组ID
  43. * @param $group_name string 分组名称
  44. * @return bool|int
  45. */
  46. public function addChildGroup(&$project_id, &$group_name, &$parent_group_id)
  47. {
  48. $db = getDatabase();
  49. $db->prepareExecute('INSERT INTO eo_project_document_group (eo_project_document_group.groupName,eo_project_document_group.projectID,eo_project_document_group.parentGroupID,eo_project_document_group.isChild) VALUES (?,?,?,1);', array(
  50. $group_name,
  51. $project_id,
  52. $parent_group_id
  53. ));
  54. $group_id = $db->getLastInsertID();
  55. if ($db->getAffectRow() < 1)
  56. return FALSE;
  57. else
  58. return $group_id;
  59. }
  60. /**
  61. * 删除文档分组
  62. * @param $group_id int 分组ID
  63. * @return bool
  64. */
  65. public function deleteGroup(&$group_id)
  66. {
  67. $db = getDatabase();
  68. $db->prepareExecute('DELETE FROM eo_project_document_group WHERE eo_project_document_group.groupID = ?;', array($group_id));
  69. $result = $db->getAffectRow();
  70. $db->prepareExecute('DELETE FROM eo_project_document_group WHERE eo_project_document_group.parentGroupID = ?;', array($group_id));
  71. $db->prepareExecute('DELETE FROM eo_project_document WHERE eo_project_document.groupID = ?;', array($group_id));
  72. if ($result > 0)
  73. return TRUE;
  74. else
  75. return FALSE;
  76. }
  77. /**
  78. * 获取文档分组列表
  79. * @param $project_id int 项目ID
  80. * @return bool|array
  81. */
  82. public function getGroupList(&$project_id)
  83. {
  84. $db = getDatabase();
  85. $result = array();
  86. $group_list = $db->prepareExecuteAll('SELECT eo_project_document_group.groupID,eo_project_document_group.groupName FROM eo_project_document_group WHERE projectID = ? AND isChild = 0 ORDER BY groupID ASC;', array($project_id));
  87. //检查是否含有子分组
  88. if (is_array($group_list)) {
  89. foreach ($group_list as &$parentGroup) {
  90. $parentGroup['childGroupList'] = array();
  91. $childGroup = $db->prepareExecuteAll('SELECT eo_project_document_group.groupID,eo_project_document_group.groupName,eo_project_document_group.parentGroupID FROM eo_project_document_group WHERE projectID = ? AND isChild = 1 AND parentGroupID = ? ORDER BY groupID ASC;', array(
  92. $project_id,
  93. $parentGroup['groupID']
  94. ));
  95. //判断是否有子分组
  96. if (!empty($childGroup))
  97. $parentGroup['childGroupList'] = $childGroup;
  98. }
  99. }
  100. if (empty($group_list)) {
  101. return FALSE;
  102. }
  103. $result['groupList'] = $group_list;
  104. $order_list = $db->prepareExecute('SELECT eo_project_document_group_order.orderList FROM eo_project_document_group_order WHERE eo_project_document_group_order.projectID = ?;', array(
  105. $project_id
  106. ));
  107. $result['groupOrder'] = $order_list['orderList'];
  108. return $result;
  109. }
  110. /**
  111. * 修改文档分组信息
  112. * @param $group_id int 分组ID
  113. * @param $group_name string 分组名称
  114. * @param $parent_group_id int 父分组ID
  115. * @return bool
  116. */
  117. public function editGroup(&$group_id, &$group_name, &$parent_group_id)
  118. {
  119. $db = getDatabase();
  120. //如果没有父分组
  121. if ($parent_group_id <= 0) {
  122. $db->prepareExecute('UPDATE eo_project_document_group SET eo_project_document_group.groupName = ?,eo_project_document_group.parentGroupID = 0,eo_project_document_group.isChild = 0 WHERE eo_project_document_group.groupID = ?;', array(
  123. $group_name,
  124. $group_id
  125. ));
  126. } else {
  127. //有父分组
  128. $db->prepareExecute('UPDATE eo_project_document_group SET eo_project_document_group.groupName = ?,eo_project_document_group.parentGroupID = ?,eo_project_document_group.isChild = 1 WHERE eo_project_document_group.groupID = ?;', array(
  129. $group_name,
  130. $parent_group_id,
  131. $group_id
  132. ));
  133. }
  134. if ($db->getAffectRow() > 0)
  135. return TRUE;
  136. else
  137. return FALSE;
  138. }
  139. /**
  140. * 判断文档分组和用户是否匹配
  141. * @param $group_id int 分组ID
  142. * @param $user_id int 用户ID
  143. * @return bool|int
  144. */
  145. public function checkGroupPermission(&$group_id, &$user_id)
  146. {
  147. $db = getDatabase();
  148. $result = $db->prepareExecute('SELECT eo_conn_project.projectID FROM eo_conn_project INNER JOIN eo_project_document_group ON eo_project_document_group.projectID = eo_conn_project.projectID WHERE userID = ? AND groupID = ?;', array(
  149. $user_id,
  150. $group_id
  151. ));
  152. if (empty($result))
  153. return FALSE;
  154. else
  155. return $result['projectID'];
  156. }
  157. /**
  158. * 获取文档分组名称
  159. * @param $group_id int 分组ID
  160. * @return bool|string
  161. */
  162. public function getGroupName($group_id)
  163. {
  164. $db = getDatabase();
  165. $result = $db->prepareExecute("SELECT eo_project_document_group.groupName FROM eo_project_document_group WHERE eo_project_document_group.groupID = ?;", array($group_id));
  166. if (empty($result))
  167. return FALSE;
  168. else
  169. return $result['groupName'];
  170. }
  171. /**
  172. * 更新文档分组排序
  173. * @param $project_id
  174. * @param $order_list
  175. * @return bool
  176. */
  177. public function updateGroupOrder(&$project_id, &$order_list)
  178. {
  179. $db = getDatabase();
  180. $db->prepareExecute("REPLACE INTO eo_project_document_group_order(projectID,orderList)VALUES(?,?);", array($project_id, $order_list));
  181. if ($db->getAffectRow() > 0)
  182. return TRUE;
  183. else
  184. return FALSE;
  185. }
  186. /**
  187. * 获取分组数据
  188. * @param $project_id
  189. * @param $group_id
  190. * @return array|bool
  191. */
  192. public function getGroupData(&$project_id, &$group_id)
  193. {
  194. $db = getDatabase();
  195. $result = array();
  196. $group = $db->prepareExecute('SELECT eo_project_document_group.groupName,eo_project_document_group.isChild FROM eo_project_document_group WHERE eo_project_document_group.projectID = ? AND eo_project_document_group.groupID = ?;', array(
  197. $project_id,
  198. $group_id
  199. ));
  200. $result['pageList'] = $db->prepareExecuteAll("SELECT eo_project_document.contentType,eo_project_document.contentRaw,eo_project_document.content,eo_project_document.title FROM eo_project_document WHERE eo_project_document.groupID = ? AND eo_project_document.projectID = ?", array(
  201. $group_id,
  202. $project_id
  203. ));
  204. $result['groupName'] = $group['groupName'];
  205. if ($group['isChild'] == 0) {
  206. $child_group_list = $db->prepareExecuteAll('SELECT eo_project_document_group.groupID,eo_project_document_group.groupName FROM eo_project_document_group WHERE eo_project_document_group.parentGroupID = ? AND eo_project_document_group.projectID = ?', array(
  207. $group_id,
  208. $project_id
  209. ));
  210. if ($child_group_list) {
  211. $i = 0;
  212. foreach ($child_group_list as $group) {
  213. $result['childGroupList'][$i]['groupName'] = $group['groupName'];
  214. $result['childGroupList'][$i]['pageList'] = $db->prepareExecuteAll("SELECT eo_project_document.contentType,eo_project_document.contentRaw,eo_project_document.content,eo_project_document.title FROM eo_project_document WHERE eo_project_document.groupID = ? AND eo_project_document.projectID = ?", array(
  215. $group['groupID'],
  216. $project_id
  217. ));
  218. $i++;
  219. }
  220. }
  221. }
  222. if ($result)
  223. return $result;
  224. else
  225. return FALSE;
  226. }
  227. /**
  228. * 导入文档分组
  229. * @param $project_id
  230. * @param $user_id
  231. * @param $data
  232. * @return bool
  233. */
  234. public function importGroup(&$project_id, &$user_id, &$data)
  235. {
  236. $db = getDatabase();
  237. try {
  238. $db->beginTransaction();
  239. // 插入分组
  240. $db->prepareExecute('INSERT INTO eo_project_document_group (eo_project_document_group.projectID,eo_project_document_group.groupName) VALUES (?,?);', array(
  241. $project_id,
  242. $data['groupName']
  243. ));
  244. if ($db->getAffectRow() < 1)
  245. throw new \PDOException("addPageGroup error");
  246. $group_id = $db->getLastInsertID();
  247. if ($data['pageList']) {
  248. // 插入状态码
  249. foreach ($data['pageList'] as $page) {
  250. $db->prepareExecute('INSERT INTO eo_project_document (eo_project_document.groupID,eo_project_document.projectID,eo_project_document.contentType,eo_project_document.contentRaw,eo_project_document.content,eo_project_document.title,eo_project_document.updateTime,eo_project_document.userID) VALUES (?,?,?,?,?,?,?,?);', array(
  251. $group_id,
  252. $project_id,
  253. $page['contentType'],
  254. $page['contentRaw'],
  255. $page['content'],
  256. $page['title'],
  257. date('Y-m-d H:i:s'),
  258. $user_id
  259. ));
  260. if ($db->getAffectRow() < 1)
  261. throw new \PDOException("addPage error");
  262. }
  263. }
  264. if ($data['childGroupList']) {
  265. $group_id_parent = $group_id;
  266. foreach ($data['childGroupList'] as $child_group) {
  267. // 插入分组
  268. $db->prepareExecute('INSERT INTO eo_project_document_group (eo_project_document_group.projectID,eo_project_document_group.groupName,eo_project_document_group.parentGroupID,eo_project_document_group.isChild) VALUES (?,?,?,?);', array(
  269. $project_id,
  270. $child_group['groupName'],
  271. $group_id_parent,
  272. 1
  273. ));
  274. if ($db->getAffectRow() < 1) {
  275. throw new \PDOException("addPageGroup error");
  276. }
  277. $group_id = $db->getLastInsertID();
  278. if ($child_group['pageList']) {
  279. // 插入状态码
  280. foreach ($child_group['pageList'] as $page) {
  281. $db->prepareExecute('INSERT INTO eo_project_document (eo_project_document.groupID,eo_project_document.projectID,eo_project_document.contentType,eo_project_document.contentRaw,eo_project_document.content,eo_project_document.title,eo_project_document.updateTime,eo_project_document.userID) VALUES (?,?,?,?,?,?,?,?);', array(
  282. $group_id,
  283. $project_id,
  284. $page['contentType'],
  285. $page['contentRaw'],
  286. $page['content'],
  287. $page['title'],
  288. date('Y-m-d H:i:s'),
  289. $user_id
  290. ));
  291. if ($db->getAffectRow() < 1)
  292. throw new \PDOException("addPage error");
  293. }
  294. }
  295. }
  296. }
  297. $db->commit();
  298. return TRUE;
  299. } catch (\PDOException $e) {
  300. $db->rollback();
  301. return FALSE;
  302. }
  303. }
  304. }