ApiController.class.php 28 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811
  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 ApiController
  19. {
  20. // return an json object
  21. // 返回json类型
  22. private $returnJson = array('type' => 'api');
  23. /**
  24. * Checkout login status
  25. * 验证登录状态
  26. */
  27. public function __construct()
  28. {
  29. // identity authentication
  30. // 身份验证
  31. $server = new GuestModule;
  32. if (!$server->checkLogin()) {
  33. $this->returnJson['statusCode'] = '120005';
  34. exitOutput($this->returnJson);
  35. }
  36. }
  37. /**
  38. * Add api
  39. * 添加api
  40. */
  41. public function addApi()
  42. {
  43. $groupID = securelyInput('groupID');
  44. //检查操作权限
  45. $module = new GroupModule();
  46. $userType = $module->getUserType($groupID);
  47. if ($userType < 0 || $userType > 2) {
  48. $this->returnJson['statusCode'] = '120007';
  49. exitOutput($this->returnJson);
  50. }
  51. $apiName = securelyInput('apiName');
  52. $apiURI = securelyInput('apiURI');
  53. $apiProtocol = securelyInput('apiProtocol');
  54. $apiRequestType = securelyInput('apiRequestType');
  55. $apiSuccessMock = quickInput('apiSuccessMock');
  56. $apiFailureMock = quickInput('apiFailureMock');
  57. $apiStatus = securelyInput('apiStatus');
  58. $starred = securelyInput('starred');
  59. $apiNoteType = securelyInput('apiNoteType');
  60. $apiNoteRaw = securelyInput('apiNoteRaw');
  61. $apiNote = securelyInput('apiNote');
  62. $apiRequestParamType = securelyInput('apiRequestParamType');
  63. $apiRequestRaw = securelyInput('apiRequestRaw');
  64. $apiHeader = json_decode($_POST['apiHeader'], TRUE);
  65. $apiRequestParam = json_decode($_POST['apiRequestParam'], TRUE);
  66. $apiResultParam = json_decode($_POST['apiResultParam'], TRUE);
  67. $mockRule = json_decode(quickInput('mockRule'), TRUE);
  68. $mockResult = securelyInput('mockResult');
  69. $mockConfig = quickInput('mockConfig');
  70. $failure_status_code = securelyInput('apiFailureStatusCode', '200');
  71. $success_status_code = securelyInput('apiSuccessStatusCode', '200');
  72. $before_inject = quickInput("beforeInject");
  73. $after_inject = quickInput("afterInject");
  74. $service = new ApiModule;
  75. $result = $service->addApi($apiName, $apiURI, $apiProtocol, $apiSuccessMock, $apiFailureMock, $apiRequestType, $apiStatus, $groupID, $apiHeader, $apiRequestParam, $apiResultParam, $starred, $apiNoteType, $apiNoteRaw, $apiNote, $apiRequestParamType, $apiRequestRaw, $mockRule, $mockResult, $mockConfig, $success_status_code, $failure_status_code, $before_inject, $after_inject);
  76. if ($result) {
  77. $this->returnJson['statusCode'] = '000000';
  78. $this->returnJson['apiID'] = $result['apiID'];
  79. $this->returnJson['groupID'] = $result['groupID'];
  80. } else {
  81. $this->returnJson['statusCode'] = '160000';
  82. }
  83. exitOutput($this->returnJson);
  84. }
  85. /**
  86. * Edit api
  87. * 编辑api
  88. */
  89. public function editApi()
  90. {
  91. $apiID = securelyInput('apiID');
  92. $module = new ApiModule();
  93. //检查操作权限
  94. $userType = $module->getUserType($apiID);
  95. if ($userType < 0 || $userType > 2) {
  96. $this->returnJson['statusCode'] = '120007';
  97. exitOutput($this->returnJson);
  98. }
  99. $apiName = securelyInput('apiName');
  100. $apiURI = securelyInput('apiURI');
  101. $apiProtocol = securelyInput('apiProtocol');
  102. $apiRequestType = securelyInput('apiRequestType');
  103. $apiSuccessMock = quickInput('apiSuccessMock');
  104. $apiFailureMock = quickInput('apiFailureMock');
  105. $apiStatus = securelyInput('apiStatus');
  106. $starred = securelyInput('starred');
  107. $apiNoteType = securelyInput('apiNoteType');
  108. $apiNoteRaw = securelyInput('apiNoteRaw');
  109. $apiNote = securelyInput('apiNote');
  110. $apiRequestParamType = securelyInput('apiRequestParamType');
  111. $apiRequestRaw = securelyInput('apiRequestRaw');
  112. $groupID = securelyInput('groupID');
  113. $apiHeader = json_decode($_POST['apiHeader'], TRUE);
  114. $apiRequestParam = json_decode($_POST['apiRequestParam'], TRUE);
  115. $apiResultParam = json_decode($_POST['apiResultParam'], TRUE);
  116. $update_desc = securelyInput('updateDesc');
  117. $mockRule = json_decode(quickInput('mockRule'), TRUE);
  118. $mockResult = securelyInput('mockResult');
  119. $mockConfig = quickInput('mockConfig');
  120. $failure_status_code = securelyInput('apiFailureStatusCode', '200');
  121. $success_status_code = securelyInput('apiSuccessStatusCode', '200');
  122. $before_inject = quickInput("beforeInject");
  123. $after_inject = quickInput("afterInject");
  124. $service = new ApiModule;
  125. $result = $service->editApi($apiID, $apiName, $apiURI, $apiProtocol, $apiSuccessMock, $apiFailureMock, $apiRequestType, $apiStatus, $groupID, $apiHeader, $apiRequestParam, $apiResultParam, $starred, $apiNoteType, $apiNoteRaw, $apiNote, $apiRequestParamType, $apiRequestRaw, $update_desc, $mockRule, $mockResult, $mockConfig, $success_status_code, $failure_status_code, $before_inject, $after_inject);
  126. if ($result) {
  127. $this->returnJson['statusCode'] = '000000';
  128. $this->returnJson['apiID'] = $result['apiID'];
  129. $this->returnJson['groupID'] = $result['groupID'];
  130. } else {
  131. $this->returnJson['statusCode'] = '160000';
  132. }
  133. exitOutput($this->returnJson);
  134. }
  135. // /**
  136. // * 删除api,将其移入回收站
  137. // */
  138. // public function removeApi() {
  139. // $apiID = securelyInput('apiID');
  140. // //判断apiID格式是否合法
  141. // if (preg_match('/^[0-9]{1,11}$/', $apiID)) {
  142. // //apiID格式合法
  143. // $service = new ApiModule;
  144. // $result = $service -> removeApi($apiID);
  145. // //判断删除api是否成功
  146. // if ($result) {
  147. // //删除api成功
  148. // $this -> returnJson['statusCode'] = '000000';
  149. // } else {
  150. // //删除api失败
  151. // $this -> returnJson['statusCode'] = '160008';
  152. // }
  153. // } else {
  154. // //apiID格式不合法
  155. // $this -> returnJson['statusCode'] = '160001';
  156. // }
  157. // exitOutput($this -> returnJson);
  158. // }
  159. /**
  160. * Delete apis in batches and move them into recycling station
  161. * 批量删除api,将其移入回收站
  162. */
  163. public function removeApi()
  164. {
  165. //接口ID
  166. $ids = quickInput('apiID');
  167. $projectID = securelyInput('projectID');
  168. //检查操作权限
  169. $module = new ProjectModule();
  170. $userType = $module->getUserType($projectID);
  171. if ($userType < 0 || $userType > 2) {
  172. $this->returnJson['statusCode'] = '120007';
  173. exitOutput($this->returnJson);
  174. }
  175. $arr = json_decode($ids);
  176. $arr = preg_grep('/^[0-9]{1,11}$/', $arr);//去掉数组中不是数字的ID
  177. //判断接口ID是否为空
  178. if (empty($arr)) {
  179. $this->returnJson['statusCode'] = '160001';
  180. } elseif (!preg_match('/^[0-9]{1,11}$/', $projectID)) {
  181. $this->returnJson['statusCode'] = '160002';
  182. } else {
  183. $api_ids = implode(',', $arr);
  184. $api_module = new ApiModule;
  185. $result = $api_module->removeApis($projectID, $api_ids);
  186. //验证结果是否成功
  187. if ($result) {
  188. //删除api成功
  189. $this->returnJson['statusCode'] = '000000';
  190. } else {
  191. //删除api失败
  192. $this->returnJson['statusCode'] = '160000';
  193. }
  194. }
  195. exitOutput($this->returnJson);
  196. }
  197. /**
  198. * Recover api
  199. * 恢复api
  200. */
  201. public function recoverApi()
  202. {
  203. //接口ID
  204. $ids = securelyInput('apiID');
  205. $groupID = securelyInput('groupID');
  206. //检查操作权限
  207. $module = new GroupModule();
  208. $userType = $module->getUserType($groupID);
  209. if ($userType < 0 || $userType > 2) {
  210. $this->returnJson['statusCode'] = '120007';
  211. exitOutput($this->returnJson);
  212. }
  213. $arr = json_decode($ids);
  214. $arr = preg_grep('/^[0-9]{1,11}$/', $arr);//去掉数组中不是数字的ID
  215. //判断接口ID是否为空
  216. if (empty($arr)) {
  217. $this->returnJson['statusCode'] = '160001';
  218. } elseif (!preg_match('/^[0-9]{1,11}$/', $groupID)) {
  219. $this->returnJson['statusCode'] = '160002';
  220. } else {
  221. $api_ids = implode(',', $arr);
  222. $api_module = new ApiModule;
  223. $result = $api_module->recoverApis($groupID, $api_ids);
  224. //验证结果是否成功
  225. if ($result) {
  226. //恢复api成功
  227. $this->returnJson['statusCode'] = '000000';
  228. } else {
  229. //恢复api失败
  230. $this->returnJson['statusCode'] = '160000';
  231. }
  232. }
  233. exitOutput($this->returnJson);
  234. }
  235. /**
  236. * Remove apis in batches from recycling station
  237. * 批量彻底删除api
  238. */
  239. public function deleteApi()
  240. {
  241. //接口ID
  242. $ids = securelyInput('apiID');
  243. $projectID = securelyInput('projectID');
  244. //检查操作权限
  245. $module = new ProjectModule();
  246. $userType = $module->getUserType($projectID);
  247. if ($userType < 0 || $userType > 2) {
  248. $this->returnJson['statusCode'] = '120007';
  249. exitOutput($this->returnJson);
  250. }
  251. $arr = json_decode($ids);
  252. $arr = preg_grep('/^[0-9]{1,11}$/', $arr);//去掉数组中不是数字的ID
  253. //判断接口ID是否为空
  254. if (empty($arr)) {
  255. $this->returnJson['statusCode'] = '160001';
  256. } elseif (!preg_match('/^[0-9]{1,11}$/', $projectID)) {
  257. $this->returnJson['statusCode'] = '160002';
  258. } else {
  259. $api_ids = implode(',', $arr);
  260. $api_module = new ApiModule;
  261. $result = $api_module->deleteApis($projectID, $api_ids);
  262. //验证结果是否成功
  263. if ($result) {
  264. //删除api成功
  265. $this->returnJson['statusCode'] = '000000';
  266. } else {
  267. //删除api失败
  268. $this->returnJson['statusCode'] = '160000';
  269. }
  270. }
  271. exitOutput($this->returnJson);
  272. }
  273. /**
  274. * Clean up the recycling station
  275. * 清空回收站
  276. */
  277. public function cleanRecyclingStation()
  278. {
  279. $projectID = securelyInput('projectID');
  280. $module = new ProjectModule();
  281. $userType = $module->getUserType($projectID);
  282. if ($userType < 0 || $userType > 2) {
  283. $this->returnJson['statusCode'] = '120007';
  284. exitOutput($this->returnJson);
  285. }
  286. if (!preg_match('/^[0-9]{1,11}$/', $projectID)) {
  287. $this->returnJson['statusCode'] = '160002';
  288. } else {
  289. $service = new ApiModule;
  290. $result = $service->cleanRecyclingStation($projectID);
  291. if ($result) {
  292. $this->returnJson['statusCode'] = '000000';
  293. } else {
  294. $this->returnJson['statusCode'] = '160011';
  295. }
  296. }
  297. exitOutput($this->returnJson);
  298. }
  299. /**
  300. * Get api list from recycling station
  301. * 获取回收站api列表
  302. */
  303. public function getRecyclingStationApiList()
  304. {
  305. $projectID = securelyInput('projectID');
  306. $orderBy = securelyInput('orderBy', 0);
  307. $asc = securelyInput('asc', 0);
  308. if (preg_match('/^[0-9]{1,11}$/', $projectID)) {
  309. $service = new ApiModule;
  310. //判断排序方式
  311. switch ($orderBy) {
  312. //名称排序
  313. case 0 :
  314. {
  315. $result = $service->getRecyclingStationApiListOrderByName($projectID, $asc);
  316. break;
  317. }
  318. //时间排序
  319. case 1 :
  320. {
  321. $result = $service->getRecyclingStationApiListOrderByRemoveTime($projectID, $asc);
  322. break;
  323. }
  324. //星标排序
  325. case 2 :
  326. {
  327. $result = $service->getRecyclingStationApiListOrderByStarred($projectID, $asc);
  328. break;
  329. }
  330. //创建时间排序
  331. case 3 :
  332. {
  333. $result = $service->getRecyclingStationApiListOrderByCreateTime($projectID, $asc);
  334. }
  335. }
  336. if ($result) {
  337. $this->returnJson['statusCode'] = '000000';
  338. $this->returnJson['apiList'] = $result;
  339. } else {
  340. $this->returnJson['statusCode'] = '160007';
  341. }
  342. } else {
  343. $this->returnJson['statusCode'] = '160002';
  344. }
  345. exitOutput($this->returnJson);
  346. }
  347. /**
  348. * Get api list by group
  349. * 获取api列表
  350. */
  351. public function getApiList()
  352. {
  353. $groupID = securelyInput('groupID');
  354. $orderBy = securelyInput('orderBy', 0);
  355. $asc = securelyInput('asc', 0);
  356. if (preg_match('/^[0-9]{1,11}$/', $groupID)) {
  357. $service = new ApiModule;
  358. //判断排序方式
  359. switch ($orderBy) {
  360. //名称排序
  361. case 0 :
  362. {
  363. $result = $service->getApiListOrderByName($groupID, $asc);
  364. break;
  365. }
  366. //时间排序
  367. case 1 :
  368. {
  369. $result = $service->getApiListOrderByTime($groupID, $asc);
  370. break;
  371. }
  372. //星标排序
  373. case 2 :
  374. {
  375. $asc = 1;
  376. $result = $service->getApiListOrderByStarred($groupID, $asc);
  377. break;
  378. }
  379. //创建时间排序
  380. case 3 :
  381. {
  382. $result = $service->getApiListOrderByCreateTime($groupID, $asc);
  383. break;
  384. }
  385. }
  386. if ($result) {
  387. $this->returnJson['statusCode'] = '000000';
  388. $this->returnJson['apiList'] = $result;
  389. } else {
  390. $this->returnJson['statusCode'] = '160000';
  391. }
  392. } else {
  393. $this->returnJson['statusCode'] = '160002';
  394. }
  395. exitOutput($this->returnJson);
  396. }
  397. /**
  398. * Get api detail
  399. * 获取api详情
  400. */
  401. public function getApi()
  402. {
  403. $apiID = securelyInput('apiID');
  404. if (preg_match('/^[0-9]{1,11}$/', $apiID)) {
  405. $service = new ApiModule;
  406. $result = $service->getApi($apiID);
  407. if ($result) {
  408. $this->returnJson['statusCode'] = '000000';
  409. $this->returnJson['apiInfo'] = $result;
  410. } else {
  411. $this->returnJson['statusCode'] = '160000';
  412. }
  413. } else {
  414. $this->returnJson['statusCode'] = '160001';
  415. }
  416. exitOutput($this->returnJson);
  417. }
  418. /**
  419. * Get all api list by project
  420. * 获取所有分组的api
  421. */
  422. public function getAllApiList()
  423. {
  424. $projectID = securelyInput('projectID');
  425. $orderBy = securelyInput('orderBy', 0);
  426. $asc = securelyInput('asc', 0);
  427. if (preg_match('/^[0-9]{1,11}$/', $projectID)) {
  428. $service = new ApiModule;
  429. switch ($orderBy) {
  430. //名称排序
  431. case 0 :
  432. {
  433. $result = $service->getAllApiListOrderByName($projectID, $asc);
  434. break;
  435. }
  436. //时间排序
  437. case 1 :
  438. {
  439. $result = $service->getAllApiListOrderByTime($projectID, $asc);
  440. break;
  441. }
  442. //星标排序
  443. case 2 :
  444. {
  445. $asc = 1;
  446. $result = $service->getAllApiListOrderByStarred($projectID, $asc);
  447. break;
  448. }
  449. //创建时间
  450. case 3 :
  451. {
  452. $result = $service->getAllApiListOrderByCreateTime($projectID, $asc);
  453. }
  454. }
  455. if ($result) {
  456. $this->returnJson['statusCode'] = '000000';
  457. $this->returnJson['apiList'] = $result;
  458. } else {
  459. $this->returnJson['statusCode'] = '160000';
  460. }
  461. } else {
  462. $this->returnJson['statusCode'] = '160003';
  463. }
  464. exitOutput($this->returnJson);
  465. }
  466. /**
  467. * search api
  468. * 搜索api
  469. */
  470. public function searchApi()
  471. {
  472. $tipsLen = mb_strlen(quickInput('tips'), 'utf8');
  473. $tips = securelyInput('tips');
  474. $projectID = securelyInput('projectID');
  475. if (!preg_match('/^[0-9]{1,11}$/', $projectID)) {
  476. $this->returnJson['statusCode'] = '160003';
  477. } else if ($tipsLen > 255 || $tipsLen == 0) {
  478. $this->returnJson['statusCode'] = '160004';
  479. } else {
  480. $service = new ApiModule;
  481. $result = $service->searchApi($tips, $projectID);
  482. if ($result) {
  483. $this->returnJson['statusCode'] = '000000';
  484. $this->returnJson['apiList'] = $result;
  485. } else {
  486. $this->returnJson['statusCode'] = '160000';
  487. }
  488. }
  489. exitOutput($this->returnJson);
  490. }
  491. /**
  492. * add star to an api
  493. * 添加星标
  494. */
  495. public function addStar()
  496. {
  497. $apiID = securelyInput('apiID');
  498. if (preg_match('/^[0-9]{1,11}$/', $apiID)) {
  499. $service = new ApiModule;
  500. $result = $service->addStar($apiID);
  501. if ($result) {
  502. $this->returnJson['statusCode'] = '000000';
  503. } else {
  504. $this->returnJson['statusCode'] = '160000';
  505. }
  506. } else {
  507. $this->returnJson['statusCode'] = '160001';
  508. }
  509. exitOutput($this->returnJson);
  510. }
  511. /**
  512. * remove star from an api
  513. * 添加星标
  514. */
  515. public function removeStar()
  516. {
  517. $apiID = securelyInput('apiID');
  518. if (preg_match('/^[0-9]{1,11}$/', $apiID)) {
  519. $service = new ApiModule;
  520. $result = $service->removeStar($apiID);
  521. if ($result) {
  522. $this->returnJson['statusCode'] = '000000';
  523. } else {
  524. $this->returnJson['statusCode'] = '160000';
  525. }
  526. } else {
  527. $this->returnJson['statusCode'] = '160001';
  528. }
  529. exitOutput($this->returnJson);
  530. }
  531. /**
  532. * 获取接口修改历史
  533. */
  534. public function getApiHistoryList()
  535. {
  536. //接口ID
  537. $api_id = securelyInput('apiID');
  538. //判断接口ID是否合法
  539. if (!preg_match('/^[0-9]{1,11}$/', $api_id)) {
  540. $this->returnJson['statusCode'] = '160001';
  541. } else {
  542. $api_module = new ApiModule();
  543. $result = $api_module->getApiHistoryList($api_id);
  544. //验证结果是否成功
  545. if ($result) {
  546. $this->returnJson['statusCode'] = '000000';
  547. $this->returnJson = array_merge($this->returnJson, $result);
  548. } else {
  549. $this->returnJson['statusCode'] = '160000';
  550. }
  551. }
  552. exitOutput($this->returnJson);
  553. }
  554. /**
  555. * 删除历史记录
  556. */
  557. public function deleteApiHistory()
  558. {
  559. //接口历史记录ID
  560. $api_history_id = securelyInput('apiHistoryID');
  561. //接口ID
  562. $api_id = securelyInput('apiID');
  563. //检查操作权限
  564. $api_module = new ApiModule();
  565. $userType = $api_module->getUserType($api_id);
  566. if ($userType < 0 || $userType > 2) {
  567. $this->returnJson['statusCode'] = '120007';
  568. exitOutput($this->returnJson);
  569. }
  570. //判断接口ID是否合法
  571. if (!preg_match('/^[0-9]{1,11}$/', $api_id)) {
  572. $this->returnJson['statusCode'] = '160001';
  573. } //判断接口历史记录ID是否合法
  574. elseif (!preg_match('/^[0-9]{1,11}$/', $api_history_id)) {
  575. $this->returnJson['statusCode'] = '160004';
  576. } else {
  577. $result = $api_module->deleteApiHistory($api_id, $api_history_id);
  578. //验证结果是否成功
  579. if ($result) {
  580. $this->returnJson['statusCode'] = '000000';
  581. } else {
  582. $this->returnJson['statusCode'] = '160000';
  583. }
  584. }
  585. exitOutput($this->returnJson);
  586. }
  587. /**
  588. * 切换接口历史版本
  589. */
  590. public function toggleApiHistory()
  591. {
  592. //接口历史记录ID
  593. $api_history_id = securelyInput('apiHistoryID');
  594. //接口ID
  595. $api_id = securelyInput('apiID');
  596. //检查操作权限
  597. $api_module = new ApiModule();
  598. $userType = $api_module->getUserType($api_id);
  599. if ($userType < 0 || $userType > 2) {
  600. $this->returnJson['statusCode'] = '120007';
  601. exitOutput($this->returnJson);
  602. }
  603. //验证接口ID是否为空
  604. if (!preg_match('/^[0-9]{1,11}$/', $api_id)) {
  605. $this->returnJson['statusCode'] = '160001';
  606. } //验证接口历史记录ID是否合法
  607. elseif (!preg_match('/^[0-9]{1,11}$/', $api_history_id)) {
  608. $this->returnJson['statusCode'] = '160004';
  609. } else {
  610. $result = $api_module->toggleApiHistory($api_id, $api_history_id);
  611. //验证结果是否成功
  612. if ($result) {
  613. $this->returnJson['statusCode'] = '000000';
  614. } else {
  615. $this->returnJson['statusCode'] = '160000';
  616. }
  617. }
  618. exitOutput($this->returnJson);
  619. }
  620. /**
  621. * 获取接口mock数据
  622. */
  623. public function getApiMockData()
  624. {
  625. $api_id = securelyInput('apiID');
  626. //验证接口ID是否为空
  627. if (!preg_match('/^[0-9]{1,11}$/', $api_id)) {
  628. $this->returnJson['statusCode'] = '160001';
  629. } else {
  630. $module = new ApiModule();
  631. $result = $module->getApiMockData($api_id);
  632. if ($result) {
  633. $this->returnJson['statusCode'] = '000000';
  634. $this->returnJson = array_merge($this->returnJson, $result);
  635. } else {
  636. $this->returnJson['statusCode'] = '160000';
  637. }
  638. }
  639. exitOutput($this->returnJson);
  640. }
  641. /**
  642. * 编辑接口mock数据
  643. */
  644. public function editApiMockData()
  645. {
  646. $api_id = securelyInput('apiID');
  647. $module = new ApiModule();
  648. //检查操作权限
  649. $userType = $module->getUserType($api_id);
  650. if ($userType < 0 || $userType > 2) {
  651. $this->returnJson['statusCode'] = '120007';
  652. exitOutput($this->returnJson);
  653. }
  654. $mock_rule = quickInput('mockRule', '');
  655. $mock_result = securelyInput('mockResult', '');
  656. $mock_config = quickInput('mockConfig');
  657. //验证接口ID是否为空
  658. if (!preg_match('/^[0-9]{1,11}$/', $api_id)) {
  659. $this->returnJson['statusCode'] = '160001';
  660. } else {
  661. $result = $module->editApiMockData($api_id, $mock_rule, $mock_result, $mock_config);
  662. if ($result) {
  663. $this->returnJson['statusCode'] = '000000';
  664. } else {
  665. $this->returnJson['statusCode'] = '160000';
  666. }
  667. }
  668. exitOutput($this->returnJson);
  669. }
  670. /**
  671. * 批量修改接口分组
  672. */
  673. public function changeApiGroup()
  674. {
  675. //接口ID
  676. $ids = securelyInput('apiID');
  677. $group_id = securelyInput('groupID');
  678. //检查操作权限
  679. $module = new GroupModule();
  680. $userType = $module->getUserType($group_id);
  681. if ($userType < 0 || $userType > 2) {
  682. $this->returnJson['statusCode'] = '120007';
  683. exitOutput($this->returnJson);
  684. }
  685. $arr = json_decode($ids);
  686. $arr = preg_grep('/^[0-9]{1,11}$/', $arr);//去掉数组中不是数字的ID
  687. //判断接口ID是否为空
  688. if (empty($arr)) {
  689. $this->returnJson['statusCode'] = '160001';
  690. } elseif (!preg_match('/^[0-9]{1,11}$/', $group_id)) {
  691. $this->returnJson['statusCode'] = '160002';
  692. } else {
  693. $api_ids = implode(',', $arr);
  694. $api_module = new ApiModule;
  695. $result = $api_module->changeApiGroup($api_ids, $group_id);
  696. //验证结果是否成功
  697. if ($result) {
  698. //删除api成功
  699. $this->returnJson['statusCode'] = '000000';
  700. } else {
  701. //删除api失败
  702. $this->returnJson['statusCode'] = '160000';
  703. }
  704. }
  705. exitOutput($this->returnJson);
  706. }
  707. /**
  708. * 批量导出接口
  709. */
  710. public function exportApi()
  711. {
  712. $project_id = securelyInput('projectID');
  713. // 接口ID
  714. $ids = quickInput('apiID');
  715. $arr = json_decode($ids);
  716. $arr = preg_grep('/^[0-9]{1,11}$/', $arr); // 去掉数组中不是数字的ID
  717. if (!preg_match('/^[0-9]{1,11}$/', $project_id)) {
  718. $this->returnJson['statusCode'] = '160003';
  719. }// 判断ID数组是否为空
  720. elseif (empty($arr)) {
  721. // apiID格式不合法
  722. $this->returnJson['statusCode'] = '160001';
  723. } else {
  724. $project_module = new ProjectModule();
  725. $user_type = $project_module->getUserType($project_id);
  726. if ($user_type < 0 || $user_type > 2) {
  727. $this->returnJson['statusCode'] = '120007';
  728. } else {
  729. $api_ids = implode(',', $arr);
  730. $api_module = new ApiModule();
  731. $result = $api_module->exportApi($project_id, $api_ids);
  732. // 判断结果是否成功
  733. if ($result) {
  734. $this->returnJson['statusCode'] = '000000';
  735. $this->returnJson['fileName'] = $result;
  736. } else {
  737. $this->returnJson['statusCode'] = '160000';
  738. }
  739. }
  740. }
  741. exitOutput($this->returnJson);
  742. }
  743. /**
  744. * 批量导入接口
  745. */
  746. public function importApi()
  747. {
  748. $json = quickInput('data');
  749. $data = json_decode($json, TRUE);
  750. $group_id = securelyInput('groupID');
  751. // 判断分组ID是否合法
  752. if (!preg_match('/^[0-9]{1,11}$/', $group_id)) {
  753. // 分组ID格式不合法
  754. $this->returnJson['statusCode'] = '160005';
  755. } //判断导入数据是否为空
  756. elseif (empty($data)) {
  757. $this->returnJson['statusCode'] = '160006';
  758. exitOutput($this->returnJson);
  759. } else {
  760. $group_module = new GroupModule();
  761. $user_type = $group_module->getUserType($group_id);
  762. if ($user_type < 0 || $user_type > 2) {
  763. $this->returnJson['statusCode'] = '120007';
  764. } else {
  765. $server = new ApiModule();
  766. $result = $server->importApi($group_id, $data);
  767. //验证结果
  768. if ($result) {
  769. $this->returnJson['statusCode'] = '000000';
  770. } else {
  771. $this->returnJson['statusCode'] = '160000';
  772. }
  773. }
  774. }
  775. exitOutput($this->returnJson);
  776. }
  777. }
  778. ?>