ProjectModule.class.php 9.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313
  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 ProjectModule
  19. {
  20. public function __construct()
  21. {
  22. @session_start();
  23. }
  24. /**
  25. * 获取项目用户类型
  26. *
  27. * @param $projectID int
  28. * 项目ID
  29. * @return bool|int
  30. */
  31. public function getUserType(&$projectID)
  32. {
  33. $dao = new AuthorizationDao();
  34. $result = $dao->getProjectUserType($_SESSION['userID'], $projectID);
  35. if ($result === FALSE) {
  36. return -1;
  37. }
  38. return $result;
  39. }
  40. /**
  41. * 创建项目
  42. *
  43. * @param $projectName string
  44. * 项目名
  45. * @param $projectType int
  46. * 项目类型 [0/1/2/3]=>[Web/App/PC/其他]
  47. * @param $projectVersion float
  48. * 项目版本,默认为1.0
  49. * @return bool|int
  50. */
  51. public function addProject(&$projectName, &$projectType = 0, &$projectVersion = 1.0)
  52. {
  53. $projectDao = new ProjectDao();
  54. $projectInfo = $projectDao->addProject($projectName, $projectType, $projectVersion, $_SESSION['userID']);
  55. if ($projectInfo) {
  56. $groupDao = new GroupDao();
  57. $groupName = '默认分组';
  58. $groupDao->addGroup($projectInfo['projectID'], $groupName);
  59. $status_code_group_dao = new StatusCodeGroupDao();
  60. $status_code_group_dao->addGroup($projectInfo['projectID'], $groupName);
  61. //将操作写入日志
  62. $log_dao = new ProjectLogDao();
  63. $log_dao->addOperationLog($projectInfo['projectID'], $_SESSION['userID'], ProjectLogDao::$OP_TARGET_PROJECT, $projectInfo['projectID'], ProjectLogDao::$OP_TYPE_UPDATE, "创建项目", date("Y-m-d H:i:s", time()));
  64. return $projectInfo;
  65. } else {
  66. return FALSE;
  67. }
  68. }
  69. /**
  70. * 删除项目
  71. *
  72. * @param $projectID int
  73. * 项目ID
  74. * @return bool
  75. */
  76. public function deleteProject(&$projectID)
  77. {
  78. $dao = new ProjectDao();
  79. if ($dao->checkProjectPermission($projectID, $_SESSION['userID'])) {
  80. return $dao->deleteProject($projectID);
  81. } else
  82. return FALSE;
  83. }
  84. /**
  85. * 获取项目列表
  86. *
  87. * @param $projectType int
  88. * 项目类型 [-1/0/1/2/3]=>[全部/Web/App/PC/其他]
  89. * @return bool|array
  90. */
  91. public function getProjectList(&$projectType = -1)
  92. {
  93. $dao = new ProjectDao();
  94. return $dao->getProjectList($_SESSION['userID'], $projectType);
  95. }
  96. /**
  97. * 更改项目
  98. *
  99. * @param $projectID int
  100. * 项目ID
  101. * @param $projectName string
  102. * 项目名
  103. * @param $projectType int
  104. * 项目类型 [0/1/2/3]=>[Web/App/PC/其他]
  105. * @param $projectVersion float
  106. * 项目版本,默认为1.0
  107. * @return bool
  108. */
  109. public function editProject(&$projectID, &$projectName, &$projectType, &$projectVersion = 1.0)
  110. {
  111. $dao = new ProjectDao();
  112. if ($dao->checkProjectPermission($projectID, $_SESSION['userID'])) {
  113. $result = $dao->editProject($projectID, $projectName, $projectType, $projectVersion);
  114. if ($result) {
  115. //将操作写入日志
  116. $log_dao = new ProjectLogDao();
  117. $log_dao->addOperationLog($projectID, $_SESSION['userID'], ProjectLogDao::$OP_TARGET_PROJECT, $projectID, ProjectLogDao::$OP_TYPE_UPDATE, "修改项目信息:{$projectName}", date("Y-m-d H:i:s", time()));
  118. return $result;
  119. } else {
  120. return FALSE;
  121. }
  122. } else
  123. return FALSE;
  124. }
  125. /**
  126. * 获取项目信息
  127. *
  128. * @param $projectID int
  129. * 项目ID
  130. * @return bool|array
  131. */
  132. public function getProject(&$projectID)
  133. {
  134. $dao = new ProjectDao();
  135. if ($dao->checkProjectPermission($projectID, $_SESSION['userID'])) {
  136. $info = $dao->getProject($projectID, $_SESSION['userID']);
  137. // 获取当天项目动态
  138. $log_dao = new ProjectLogDao();
  139. $log_info = $log_dao->getLogInADay($projectID);
  140. $info = array_merge($info, $log_info);
  141. return $info;
  142. } else
  143. return FALSE;
  144. }
  145. /**
  146. * 更新项目更新时间
  147. *
  148. * @param $projectID int
  149. * 项目ID
  150. * @return bool
  151. */
  152. public function updateProjectUpdateTime(&$projectID)
  153. {
  154. $dao = new ProjectDao();
  155. if ($dao->updateProjectUpdateTime($projectID))
  156. return TRUE;
  157. else
  158. return FALSE;
  159. }
  160. // /**
  161. // * 获取环境列表
  162. // *
  163. // * @param $projectID int
  164. // * 项目ID
  165. // * @return bool|array
  166. // */
  167. // public function getEnvList(&$projectID)
  168. // {
  169. // $dao = new ProjectDao();
  170. // if ($dao->checkProjectPermission($projectID, $_SESSION['userID'])) {
  171. // return $dao->getEnvList($projectID);
  172. // } else
  173. // return FALSE;
  174. // }
  175. //
  176. // /**
  177. // * 添加环境
  178. // *
  179. // * @param $projectID int
  180. // * 项目ID
  181. // * @param $envName string
  182. // * 环境名
  183. // * @param $envURI string
  184. // * 环境地址
  185. // * @return bool|int
  186. // */
  187. // public function addEnv(&$projectID, &$envName, &$envURI)
  188. // {
  189. // $dao = new ProjectDao();
  190. // if ($dao->checkProjectPermission($projectID, $_SESSION['userID'])) {
  191. // return $dao->addEnv($projectID, $envName, $envURI);
  192. // } else
  193. // return FALSE;
  194. // }
  195. //
  196. // /**
  197. // * 删除环境
  198. // *
  199. // * @param $projectID int
  200. // * 项目ID
  201. // * @param $envID int
  202. // * 环境ID
  203. // * @return bool
  204. // */
  205. // public function deleteEnv(&$projectID, &$envID)
  206. // {
  207. // $dao = new ProjectDao();
  208. // if ($dao->checkProjectPermission($projectID, $_SESSION['userID'])) {
  209. // return $dao->deleteEnv($projectID, $envID);
  210. // } else
  211. // return FALSE;
  212. // }
  213. //
  214. // /**
  215. // * 修改环境
  216. // *
  217. // * @param $projectID int
  218. // * 项目ID
  219. // * @param $envID int
  220. // * 环境ID
  221. // * @param $envName string
  222. // * 环境名
  223. // * @param $envURI string
  224. // * 环境地址
  225. // * @return bool
  226. // */
  227. // public function editEnv(&$projectID, &$envID, &$envName, &$envURI)
  228. // {
  229. // $dao = new ProjectDao();
  230. // if ($dao->checkProjectPermission($projectID, $_SESSION['userID'])) {
  231. // return $dao->editEnv($envID, $envName, $envURI);
  232. // } else
  233. // return FALSE;
  234. // }
  235. /**
  236. * 导出项目
  237. *
  238. * @param $projectID int
  239. * 项目ID
  240. * @return bool|string
  241. */
  242. public function dumpProject(&$projectID)
  243. {
  244. $dao = new ProjectDao();
  245. if ($dao->checkProjectPermission($projectID, $_SESSION['userID'])) {
  246. $dumpJson = json_encode($dao->dumpProject($projectID));
  247. $fileName = 'apims_dump_' . $_SESSION['userName'] . '_' . time() . '.export';
  248. if (file_put_contents(realpath('./dump') . DIRECTORY_SEPARATOR . $fileName, $dumpJson)) {
  249. //将操作写入日志
  250. $log_dao = new ProjectLogDao();
  251. $log_dao->addOperationLog($projectID, $_SESSION['userID'], ProjectLogDao::$OP_TARGET_PROJECT, $projectID, ProjectLogDao::$OP_TYPE_ADD, "导出项目", date("Y-m-d H:i:s", time()));
  252. return $fileName;
  253. }
  254. } else
  255. return FALSE;
  256. }
  257. /**
  258. * 获取api数量
  259. *
  260. * @param $projectID int
  261. * 项目ID
  262. * @return bool|int
  263. */
  264. public function getApiNum(&$projectID)
  265. {
  266. $dao = new ProjectDao();
  267. if ($dao->checkProjectPermission($projectID, $_SESSION['userID'])) {
  268. return $dao->getApiNum($projectID);
  269. } else
  270. return FALSE;
  271. }
  272. /**
  273. * 获取日志列表
  274. * @param $project_id int 项目的ID
  275. * @param $page int 页码
  276. * @param $page_size int 每页条目数量
  277. * @return bool|array
  278. */
  279. public function getProjectLogList(&$project_id, &$page, &$page_size)
  280. {
  281. $user_id = $_SESSION['userID'];
  282. $dao = new ProjectDao();
  283. if ($dao->checkProjectPermission($project_id, $user_id)) {
  284. $log_dao = new ProjectLogDao();
  285. //7天之内的日志
  286. $log_list = $log_dao->getOperationLogList($project_id, $page, $page_size, 7);
  287. return $log_list;
  288. } else
  289. return FALSE;
  290. }
  291. }
  292. ?>