ApiDao.class.php 66 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408140914101411141214131414141514161417141814191420142114221423142414251426142714281429143014311432143314341435143614371438143914401441144214431444144514461447144814491450145114521453145414551456145714581459146014611462146314641465146614671468146914701471147214731474147514761477147814791480148114821483148414851486148714881489149014911492149314941495149614971498149915001501150215031504150515061507150815091510151115121513151415151516151715181519152015211522152315241525152615271528152915301531153215331534153515361537
  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 ApiDao
  19. {
  20. /**
  21. * add api
  22. * 添加api
  23. *
  24. * @param $apiName string
  25. * 接口名称
  26. * @param $apiURI string
  27. * 接口地址
  28. * @param $apiProtocol int
  29. * 请求协议 [0/1]=>[HTTP/HTTPS]
  30. * @param $apiSuccessMock string
  31. * 访问成功结果,默认为NULL
  32. * @param $apiFailureMock string
  33. * 访问失败结果,默认为NULL
  34. * @param $apiRequestType int
  35. * 请求类型 [0/1/2/3/4/5/6]=>[POST/GET/PUT/DELETE/HEAD/OPTIONS/PATCH]
  36. * @param $apiStatus int
  37. * 接口状态 [0/1/2]=>[启用/维护/弃用]
  38. * @param $groupID int
  39. * 接口分组ID
  40. * @param $apiHeader string
  41. * 请求头(JSON格式) [{"headerName":"","headerValue":""]
  42. * @param $apiRequestParam string
  43. * 请求参数(JSON格式) [{"paramName":"","paramKey":"","paramType":"","paramLimit":"","paramValue":"","paramNotNull":"","paramValueList":[]}]
  44. * @param $apiResultParam string
  45. * 返回参数(JSON格式) ["paramKey":"","paramName":"","paramNotNull":"","paramValueList":[]]
  46. * @param $starred int
  47. * 是否加星标 [0/1]=>[否/是],默认为0
  48. * @param $apiNoteType int
  49. * 备注类型 [0/1]=>[富文本/markdown],默认为0
  50. * @param $apiNoteRaw string
  51. * 备注(markdown),默认为NULL
  52. * @param $apiNote string
  53. * 备注(富文本),默认为NULL
  54. * @param $apiRequestParamType int
  55. * 请求参数类型 [0/1]=>[表单类型/源数据类型],默认为0
  56. * @param $apiRequestRaw string
  57. * 请求参数源数据,默认为NULL
  58. * @param $cacheJson string
  59. * 接口缓存数据
  60. * @param $updateTime string
  61. * 更新时间
  62. * @param $updateUserID int 更新者用户ID
  63. * @param $mockRule array mock规则
  64. * @param $mockResult string mock结果
  65. * @param $mockConfig array mock配置
  66. * @param $success_status_code
  67. * @param $failure_status_code
  68. * @param $before_inject
  69. * @param $after_inject
  70. * @return bool|array
  71. */
  72. public function addApi(&$apiName, &$apiURI, &$apiProtocol, &$apiSuccessMock = '', &$apiFailureMock = '', &$apiRequestType, &$apiStatus, &$groupID, &$apiHeader, &$apiRequestParam, &$apiResultParam, &$starred, &$apiNoteType, &$apiNoteRaw, &$apiNote, &$projectID, &$apiRequestParamType, &$apiRequestRaw, &$cacheJson, &$updateTime, &$updateUserID, &$mockRule, &$mockResult, &$mockConfig, &$success_status_code, &$failure_status_code, &$before_inject, &$after_inject)
  73. {
  74. $db = getDatabase();
  75. try {
  76. // begin transaction
  77. // 开始事务
  78. $db->beginTransaction();
  79. // insert api base info
  80. // 插入api基本信息
  81. $db->prepareExecute('INSERT INTO eo_api (eo_api.apiName,eo_api.apiURI,eo_api.apiProtocol,eo_api.apiSuccessMock,eo_api.apiFailureMock,eo_api.apiRequestType,eo_api.apiStatus,eo_api.groupID,eo_api.projectID,eo_api.starred,eo_api.apiNoteType,eo_api.apiNoteRaw,eo_api.apiNote,eo_api.apiRequestParamType,eo_api.apiRequestRaw,eo_api.apiUpdateTime,eo_api.updateUserID,eo_api.mockRule,eo_api.mockResult,eo_api.mockConfig,apiSuccessStatusCode,apiFailureStatusCode,beforeInject,afterInject) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?);', array(
  82. $apiName,
  83. $apiURI,
  84. $apiProtocol,
  85. $apiSuccessMock,
  86. $apiFailureMock,
  87. $apiRequestType,
  88. $apiStatus,
  89. $groupID,
  90. $projectID,
  91. $starred,
  92. $apiNoteType,
  93. $apiNoteRaw,
  94. $apiNote,
  95. $apiRequestParamType,
  96. $apiRequestRaw,
  97. $updateTime,
  98. $updateUserID,
  99. json_encode($mockRule),
  100. $mockResult,
  101. $mockConfig,
  102. $success_status_code,
  103. $failure_status_code,
  104. $before_inject,
  105. $after_inject
  106. ));
  107. if ($db->getAffectRow() < 1)
  108. throw new \PDOException("addApi error");
  109. if ($db->getAffectRow() > 0) {
  110. $apiID = $db->getLastInsertID();
  111. // insert api header info
  112. // 插入header信息
  113. foreach ($apiHeader as $param) {
  114. $db->prepareExecute('INSERT INTO eo_api_header (eo_api_header.headerName,eo_api_header.headerValue,eo_api_header.apiID) VALUES (?,?,?);', array(
  115. $param['headerName'],
  116. $param['headerValue'],
  117. $apiID
  118. ));
  119. if ($db->getAffectRow() < 1)
  120. throw new \PDOException("addHeader error");
  121. }
  122. // insert api request param info
  123. // 插入api请求值信息
  124. foreach ($apiRequestParam as $param) {
  125. $db->prepareExecute('INSERT INTO eo_api_request_param (eo_api_request_param.apiID,eo_api_request_param.paramName,eo_api_request_param.paramKey,eo_api_request_param.paramValue,eo_api_request_param.paramLimit,eo_api_request_param.paramNotNull,eo_api_request_param.paramType) VALUES (?,?,?,?,?,?,?);', array(
  126. $apiID,
  127. $param['paramName'],
  128. $param['paramKey'],
  129. $param['paramValue'],
  130. $param['paramLimit'],
  131. $param['paramNotNull'],
  132. $param['paramType']
  133. ));
  134. if ($db->getAffectRow() < 1)
  135. throw new \PDOException("addRequestParam error");
  136. $paramID = $db->getLastInsertID();
  137. foreach ($param['paramValueList'] as $value) {
  138. $db->prepareExecute('INSERT INTO eo_api_request_value (eo_api_request_value.paramID,eo_api_request_value.`value`,eo_api_request_value.valueDescription) VALUES (?,?,?);', array(
  139. $paramID,
  140. $value['value'],
  141. $value['valueDescription']
  142. ));
  143. if ($db->getAffectRow() < 1)
  144. throw new \PDOException("addApi error");
  145. };
  146. };
  147. // insert api result param info
  148. // 插入api返回值信息
  149. foreach ($apiResultParam as $param) {
  150. $db->prepareExecute('INSERT INTO eo_api_result_param (eo_api_result_param.apiID,eo_api_result_param.paramName,eo_api_result_param.paramKey,eo_api_result_param.paramNotNull) VALUES (?,?,?,?);', array(
  151. $apiID,
  152. $param['paramName'],
  153. $param['paramKey'],
  154. $param['paramNotNull']
  155. ));
  156. if ($db->getAffectRow() < 1)
  157. throw new \PDOException("addResultParam error");
  158. $paramID = $db->getLastInsertID();
  159. foreach ($param['paramValueList'] as $value) {
  160. $db->prepareExecute('INSERT INTO eo_api_result_value (eo_api_result_value.paramID,eo_api_result_value.`value`,eo_api_result_value.valueDescription) VALUES (?,?,?);', array(
  161. $paramID,
  162. $value['value'],
  163. $value['valueDescription']
  164. ));
  165. if ($db->getAffectRow() < 1)
  166. throw new \PDOException("addApi error");
  167. };
  168. };
  169. // insert api cache json which used for exportation
  170. // 插入api缓存数据用于导出
  171. $db->prepareExecute("INSERT INTO eo_api_cache (eo_api_cache.projectID,eo_api_cache.groupID,eo_api_cache.apiID,eo_api_cache.apiJson,eo_api_cache.starred,eo_api_cache.updateUserID) VALUES (?,?,?,?,?,?);", array(
  172. $projectID,
  173. $groupID,
  174. $apiID,
  175. $cacheJson,
  176. $starred,
  177. $updateUserID
  178. ));
  179. if ($db->getAffectRow() < 1) {
  180. throw new \PDOException("addApiCache error");
  181. }
  182. $db->commit();
  183. $result['apiID'] = $apiID;
  184. $result['groupID'] = $groupID;
  185. return $result;
  186. } else {
  187. throw new \PDOException("addApi error");
  188. }
  189. } catch (\PDOException $e) {
  190. var_dump($e -> getMessage());
  191. $db->rollBack();
  192. return FALSE;
  193. }
  194. }
  195. /**
  196. * edit api
  197. * 修改api
  198. *
  199. * @param $apiID int
  200. * 接口ID
  201. * @param $apiName string
  202. * 接口名称
  203. * @param $apiURI string
  204. * 接口地址
  205. * @param $apiProtocol int
  206. * 请求协议 [0/1]=>[HTTP/HTTPS]
  207. * @param $apiSuccessMock string
  208. * 访问成功结果,默认为NULL
  209. * @param $apiFailureMock string
  210. * 访问失败结果,默认为NULL
  211. * @param $apiRequestType int
  212. * 请求类型 [0/1/2/3/4/5/6]=>[POST/GET/PUT/DELETE/HEAD/OPTIONS/PATCH]
  213. * @param $apiStatus int
  214. * 接口状态 [0/1/2]=>[启用/维护/弃用]
  215. * @param $groupID int
  216. * 接口分组ID
  217. * @param $apiHeader string
  218. * 请求头(JSON格式) [{"headerName":"","headerValue":""]
  219. * @param $apiRequestParam string
  220. * 请求参数(JSON格式) [{"paramName":"","paramKey":"","paramType":"","paramLimit":"","paramValue":"","paramNotNull":"","paramValueList":[]}]
  221. * @param $apiResultParam string
  222. * 返回参数(JSON格式) ["paramKey":"","paramName":"","paramNotNull":"","paramValueList":[]]
  223. * @param $starred int
  224. * 是否加星标 [0/1]=>[否/是],默认为0
  225. * @param $apiNoteType int
  226. * 备注类型 [0/1]=>[富文本/markdown],默认为0
  227. * @param $apiNoteRaw string
  228. * 备注(markdown),默认为NULL
  229. * @param $apiNote string
  230. * 备注(富文本),默认为NULL
  231. * @param $apiRequestParamType int
  232. * 请求参数类型 [0/1]=>[表单类型/源数据类型],默认为0
  233. * @param $apiRequestRaw string
  234. * 请求参数源数据,默认为NULL
  235. * @param $cacheJson string
  236. * 接口缓存数据
  237. * @param $updateTime string
  238. * 更新时间
  239. * @param $updateUserID int 更新者用户ID
  240. * @param $mockRule array mock规则
  241. * @param $mockResult string mock结果
  242. * @param $mockConfig array mock配置
  243. * @param $success_status_code
  244. * @param $failure_status_code
  245. * @param $before_inject
  246. * @param $after_inject
  247. * @return bool
  248. */
  249. public function editApi(&$apiID, &$apiName, &$apiURI, &$apiProtocol, &$apiSuccessMock, &$apiFailureMock, &$apiRequestType, &$apiStatus, &$groupID, &$apiHeader, &$apiRequestParam, &$apiResultParam, &$starred, &$apiNoteType, &$apiNoteRaw, &$apiNote, &$apiRequestParamType, &$apiRequestRaw, &$cacheJson, &$updateTime, &$updateUserID, &$mockRule, &$mockResult, &$mockConfig, &$success_status_code, &$failure_status_code, &$before_inject, &$after_inject)
  250. {
  251. $db = getDatabase();
  252. try {
  253. $db->beginTransaction();
  254. $db->prepareExecute('UPDATE eo_api SET eo_api.apiName = ?,eo_api.apiURI = ?,eo_api.apiProtocol = ?,eo_api.apiSuccessMock = ?,eo_api.apiFailureMock = ?,eo_api.apiRequestType = ?,eo_api.apiStatus = ?,eo_api.starred = ?,eo_api.groupID = ?,eo_api.apiNoteType = ?,eo_api.apiNoteRaw = ?,eo_api.apiNote = ?,eo_api.apiUpdateTime = ?,eo_api.apiRequestParamType = ?,eo_api.apiRequestRaw = ?,eo_api.updateUserID = ?,eo_api.mockRule = ?,eo_api.mockResult = ?,eo_api.mockConfig = ?,eo_api.apiSuccessStatusCode = ?,eo_api.apiFailureStatusCode = ?,eo_api.beforeInject = ?,eo_api.afterInject = ? WHERE eo_api.apiID = ?;', array(
  255. $apiName,
  256. $apiURI,
  257. $apiProtocol,
  258. $apiSuccessMock,
  259. $apiFailureMock,
  260. $apiRequestType,
  261. $apiStatus,
  262. $starred,
  263. $groupID,
  264. $apiNoteType,
  265. $apiNoteRaw,
  266. $apiNote,
  267. $updateTime,
  268. $apiRequestParamType,
  269. $apiRequestRaw,
  270. $updateUserID,
  271. json_encode($mockRule),
  272. $mockResult,
  273. $mockConfig,
  274. $success_status_code,
  275. $failure_status_code,
  276. $before_inject,
  277. $after_inject,
  278. $apiID
  279. ));
  280. if ($db->getAffectRow() < 1)
  281. throw new \PDOException("edit Api error");
  282. $db->prepareExecute('DELETE FROM eo_api_header WHERE eo_api_header.apiID = ?;', array(
  283. $apiID
  284. ));
  285. $db->prepareExecute('DELETE FROM eo_api_request_param WHERE eo_api_request_param.apiID = ?;', array(
  286. $apiID
  287. ));
  288. $db->prepareExecute('DELETE FROM eo_api_result_param WHERE eo_api_result_param.apiID = ?;', array(
  289. $apiID
  290. ));
  291. // insert api header info
  292. // 插入header信息
  293. foreach ($apiHeader as $param) {
  294. $db->prepareExecute('INSERT INTO eo_api_header (eo_api_header.headerName,eo_api_header.headerValue,eo_api_header.apiID) VALUES (?,?,?);', array(
  295. $param['headerName'],
  296. $param['headerValue'],
  297. $apiID
  298. ));
  299. if ($db->getAffectRow() < 1)
  300. throw new \PDOException("addApi error");
  301. };
  302. // insert api request param info
  303. // 插入api请求值信息
  304. foreach ($apiRequestParam as $param) {
  305. $db->prepareExecute('INSERT INTO eo_api_request_param (eo_api_request_param.apiID,eo_api_request_param.paramName,eo_api_request_param.paramKey,eo_api_request_param.paramValue,eo_api_request_param.paramLimit,eo_api_request_param.paramNotNull,eo_api_request_param.paramType) VALUES (?,?,?,?,?,?,?);', array(
  306. $apiID,
  307. $param['paramName'],
  308. $param['paramKey'],
  309. $param['paramValue'],
  310. $param['paramLimit'],
  311. $param['paramNotNull'],
  312. $param['paramType']
  313. ));
  314. if ($db->getAffectRow() < 1)
  315. throw new \PDOException("addApi error");
  316. $paramID = $db->getLastInsertID();
  317. if (is_array($param['paramValueList'])) {
  318. foreach ($param['paramValueList'] as $value) {
  319. $db->prepareExecute('INSERT INTO eo_api_request_value (eo_api_request_value.paramID,eo_api_request_value.`value`,eo_api_request_value.valueDescription) VALUES (?,?,?);', array(
  320. $paramID,
  321. $value['value'],
  322. $value['valueDescription']
  323. ));
  324. if ($db->getAffectRow() < 1)
  325. throw new \PDOException("addApi error");
  326. };
  327. }
  328. };
  329. // insert api result param info
  330. // 插入api返回值信息
  331. foreach ($apiResultParam as $param) {
  332. $db->prepareExecute('INSERT INTO eo_api_result_param (eo_api_result_param.apiID,eo_api_result_param.paramName,eo_api_result_param.paramKey,eo_api_result_param.paramNotNull) VALUES (?,?,?,?);', array(
  333. $apiID,
  334. $param['paramName'],
  335. $param['paramKey'],
  336. $param['paramNotNull']
  337. ));
  338. if ($db->getAffectRow() < 1)
  339. throw new \PDOException("addApi error");
  340. $paramID = $db->getLastInsertID();
  341. if (is_array($param['paramValueList'])) {
  342. foreach ($param['paramValueList'] as $value) {
  343. $db->prepareExecute('INSERT INTO eo_api_result_value (eo_api_result_value.paramID,eo_api_result_value.`value`,eo_api_result_value.valueDescription) VALUES (?,?,?);', array(
  344. $paramID,
  345. $value['value'],
  346. $value['valueDescription']
  347. ));
  348. if ($db->getAffectRow() < 1)
  349. throw new \PDOException("addApi error");
  350. };
  351. }
  352. };
  353. // update api cache json
  354. // 更新api缓存
  355. $db->prepareExecute("UPDATE eo_api_cache SET eo_api_cache.apiJson = ?,eo_api_cache.groupID = ?,eo_api_cache.starred = ?,eo_api_cache.updateUserID = ? WHERE eo_api_cache.apiID = ?;", array(
  356. $cacheJson,
  357. $groupID,
  358. $starred,
  359. $updateUserID,
  360. $apiID
  361. ));
  362. if ($db->getAffectRow() < 1) {
  363. throw new \PDOException("updateApiCache error");
  364. }
  365. $db->commit();
  366. $result['apiID'] = $apiID;
  367. $result['groupID'] = $groupID;
  368. return $result;
  369. } catch (\PDOException $e) {
  370. $db->rollBack();
  371. return FALSE;
  372. }
  373. }
  374. /**
  375. * delete api and move the api into recycling station
  376. * 删除api,将其移入回收站
  377. *
  378. * @param $apiID int
  379. * 接口ID
  380. * @return bool
  381. */
  382. public function removeApi(&$apiID)
  383. {
  384. $db = getDatabase();
  385. $db->beginTransaction();
  386. $db->prepareExecute('UPDATE eo_api SET eo_api.removed = 1 ,eo_api.removeTime = ? WHERE eo_api.apiID = ?;', array(
  387. date("Y-m-d H:i:s", time()),
  388. $apiID
  389. ));
  390. if ($db->getAffectRow() > 0) {
  391. $db->commit();
  392. return TRUE;
  393. } else {
  394. $db->rollback();
  395. return FALSE;
  396. }
  397. }
  398. /**
  399. * recover api
  400. * 恢复api
  401. *
  402. * @param $apiID int
  403. * 接口ID
  404. * @return bool
  405. */
  406. public function recoverApi(&$apiID)
  407. {
  408. $db = getDatabase();
  409. $db->beginTransaction();
  410. $db->prepareExecute('UPDATE eo_api SET eo_api.removed = 0 WHERE eo_api.apiID = ?;', array(
  411. $apiID
  412. ));
  413. if ($db->getAffectRow() > 0) {
  414. $db->commit();
  415. return TRUE;
  416. } else {
  417. $db->rollback();
  418. return FALSE;
  419. }
  420. }
  421. /**
  422. * remove api
  423. * 彻底删除api
  424. *
  425. * @param $apiID int
  426. * 接口ID
  427. * @return bool
  428. */
  429. public function deleteApi(&$apiID)
  430. {
  431. $db = getDatabase();
  432. try {
  433. $db->beginTransaction();
  434. $db->prepareExecute('DELETE FROM eo_api WHERE eo_api.apiID = ? AND eo_api.removed = 1;', array(
  435. $apiID
  436. ));
  437. if ($db->getAffectRow() < 1)
  438. throw new \PDOException("deleteApi error");
  439. $db->prepareExecute('DELETE FROM eo_api_cache WHERE eo_api_cache.apiID = ?;', array(
  440. $apiID
  441. ));
  442. $db->prepareExecute('DELETE FROM eo_api_header WHERE eo_api_header.apiID = ?;', array(
  443. $apiID
  444. ));
  445. $db->prepareExecute('DELETE FROM eo_api_request_value WHERE eo_api_request_value.paramID IN (SELECT eo_api_request_param.paramID FROM eo_api_request_param WHERE eo_api_request_param.apiID = ?);', array(
  446. $apiID
  447. ));
  448. $db->prepareExecute('DELETE FROM eo_api_request_param WHERE eo_api_request_param.apiID = ?;', array(
  449. $apiID
  450. ));
  451. $db->prepareExecute('DELETE FROM eo_api_result_value WHERE eo_api_result_value.paramID IN (SELECT eo_api_result_param.paramID FROM eo_api_result_param WHERE eo_api_result_param.apiID = ?);', array(
  452. $apiID
  453. ));
  454. $db->prepareExecute('DELETE FROM eo_api_result_param WHERE eo_api_result_param.apiID = ?;', array(
  455. $apiID
  456. ));
  457. $db->commit();
  458. return TRUE;
  459. } catch (\PDOException $e) {
  460. $db->rollBack();
  461. return FALSE;
  462. }
  463. }
  464. /**
  465. * clean up recycling station
  466. * 清空回收站
  467. *
  468. * @param $projectID int
  469. * 项目ID
  470. * @return bool
  471. */
  472. public function cleanRecyclingStation(&$projectID)
  473. {
  474. $db = getDatabase();
  475. $db->prepareExecute('DELETE FROM eo_api WHERE eo_api.projectID= ? AND eo_api.removed = 1;', array(
  476. $projectID
  477. ));
  478. if ($db->getAffectRow() > 0)
  479. return TRUE;
  480. else
  481. return FALSE;
  482. }
  483. /**
  484. * get api list by group and order by apiName
  485. * 获取api列表并按照名称排序
  486. *
  487. * @param $groupID int
  488. * 接口分组ID
  489. * @param $asc string
  490. * 排序 [0/1]=>[升序/降序]
  491. * @return bool|array
  492. */
  493. public function getApiListOrderByName(&$groupID, &$asc = 'ASC')
  494. {
  495. $db = getDatabase();
  496. $result = $db->prepareExecuteAll("SELECT eo_api.apiID,eo_api.apiName,eo_api.apiURI,eo_api.apiStatus,eo_api.apiRequestType,eo_api.apiUpdateTime,eo_api.starred,eo_api_group.groupID,eo_api_group.parentGroupID,eo_api_group.groupName,eo_api.updateUserID,eo_conn_project.partnerNickName,eo_user.userNickName,eo_user.userName FROM eo_api LEFT JOIN eo_api_group ON eo_api.groupID = eo_api_group.groupID LEFT JOIN eo_conn_project ON eo_api.updateUserID = eo_conn_project.userID AND eo_api.projectID = eo_conn_project.projectID LEFT JOIN eo_user ON eo_api.updateUserID = eo_user.userID WHERE (eo_api_group.groupID = ? OR eo_api_group.parentGroupID = ?) AND eo_api.removed = 0 ORDER BY eo_api.apiName $asc;", array(
  497. $groupID,
  498. $groupID
  499. ));
  500. if (empty($result))
  501. return FALSE;
  502. else
  503. return $result;
  504. }
  505. /**
  506. * get api list by group and order by upodate time
  507. * 获取api列表并按照更新时间排序
  508. *
  509. * @param $groupID int
  510. * 接口分组ID
  511. * @param $asc string
  512. * 排序 [0/1]=>[升序/降序]
  513. * @return bool|array
  514. */
  515. public function getApiListOrderByTime(&$groupID, &$asc = 'ASC')
  516. {
  517. $db = getDatabase();
  518. $result = $db->prepareExecuteAll("SELECT eo_api.apiID,eo_api.apiName,eo_api.apiURI,eo_api.apiStatus,eo_api.apiRequestType,eo_api.apiUpdateTime,eo_api.starred,eo_api_group.groupID,eo_api_group.parentGroupID,eo_api_group.groupName,eo_api.updateUserID,eo_conn_project.partnerNickName,eo_user.userNickName,eo_user.userName FROM eo_api LEFT JOIN eo_api_group ON eo_api.groupID = eo_api_group.groupID LEFT JOIN eo_conn_project ON eo_api.updateUserID = eo_conn_project.userID AND eo_api.projectID = eo_conn_project.projectID LEFT JOIN eo_user ON eo_api.updateUserID = eo_user.userID WHERE (eo_api_group.groupID = ? OR eo_api_group.parentGroupID = ?) AND eo_api.removed = 0 ORDER BY eo_api.apiUpdateTime $asc;", array(
  519. $groupID,
  520. $groupID
  521. ));
  522. if (empty($result))
  523. return FALSE;
  524. else
  525. return $result;
  526. }
  527. /**
  528. * get api list by group and order by starred
  529. * 获取api列表并按照星标排序
  530. *
  531. * @param $groupID int
  532. * 接口分组ID
  533. * @param $asc string
  534. * 排序 [0/1]=>[升序/降序]
  535. * @return bool|array
  536. */
  537. public function getApiListOrderByStarred(&$groupID, &$asc = 'ASC')
  538. {
  539. $db = getDatabase();
  540. $result = $db->prepareExecuteAll("SELECT DISTINCT eo_api.apiID,eo_api.apiName,eo_api.apiURI,eo_api.apiStatus,eo_api.apiRequestType,eo_api.apiUpdateTime,eo_api.starred,eo_api_group.groupID,eo_api_group.parentGroupID,eo_api_group.groupName,eo_api.updateUserID,eo_conn_project.partnerNickName,eo_user.userNickName,eo_user.userName FROM eo_api LEFT JOIN eo_api_group ON eo_api.groupID = eo_api_group.groupID LEFT JOIN eo_conn_project ON eo_api.updateUserID = eo_conn_project.userID AND eo_api.projectID = eo_conn_project.projectID LEFT JOIN eo_user ON eo_api.updateUserID = eo_user.userID WHERE (eo_api_group.groupID = ? OR eo_api_group.parentGroupID = ?) AND eo_api.removed = 0 ORDER BY eo_api.starred $asc;", array(
  541. $groupID,
  542. $groupID
  543. ));
  544. if (empty($result))
  545. return FALSE;
  546. else
  547. return $result;
  548. }
  549. /**
  550. * get api list by group and order by starred
  551. * 获取api列表并按照星标排序
  552. *
  553. * @param $groupID int
  554. * 接口分组ID
  555. * @param $asc string
  556. * 排序 [0/1]=>[升序/降序]
  557. * @return bool|array
  558. */
  559. public function getApiListOrderByUri(&$groupID, &$asc = 'ASC')
  560. {
  561. $db = getDatabase();
  562. $result = $db->prepareExecuteAll("SELECT DISTINCT eo_api.apiID,eo_api.apiName,eo_api.apiURI,eo_api.apiStatus,eo_api.apiRequestType,eo_api.apiUpdateTime,eo_api.starred,eo_api_group.groupID,eo_api_group.parentGroupID,eo_api_group.groupName,eo_api.updateUserID,eo_conn_project.partnerNickName,eo_user.userNickName,eo_user.userName FROM eo_api LEFT JOIN eo_api_group ON eo_api.groupID = eo_api_group.groupID LEFT JOIN eo_conn_project ON eo_api.updateUserID = eo_conn_project.userID AND eo_api.projectID = eo_conn_project.projectID LEFT JOIN eo_user ON eo_api.updateUserID = eo_user.userID WHERE (eo_api_group.groupID = ? OR eo_api_group.parentGroupID = ?) AND eo_api.removed = 0 ORDER BY eo_api.apiURI $asc;", array(
  563. $groupID,
  564. $groupID
  565. ));
  566. if (empty($result))
  567. return FALSE;
  568. else
  569. return $result;
  570. }
  571. /**
  572. * get api list by group and order by create time
  573. * 获取api列表并按照创建时间排序
  574. *
  575. * @param $groupID int
  576. * 接口分组ID
  577. * @param $asc string
  578. * 排序 [0/1]=>[升序/降序]
  579. * @return bool|array
  580. */
  581. public function getApiListOrderByCreateTime(&$groupID, &$asc = 'ASC')
  582. {
  583. $db = getDatabase();
  584. $result = $db->prepareExecuteAll("SELECT DISTINCT eo_api.apiID,eo_api.apiName,eo_api.apiURI,eo_api.apiStatus,eo_api.apiRequestType,eo_api.apiUpdateTime,eo_api.starred,eo_api_group.groupID,eo_api_group.parentGroupID,eo_api_group.groupName,eo_api.updateUserID,eo_conn_project.partnerNickName,eo_user.userNickName,eo_user.userName FROM eo_api LEFT JOIN eo_api_group ON eo_api.groupID = eo_api_group.groupID LEFT JOIN eo_conn_project ON eo_api.updateUserID = eo_conn_project.userID AND eo_api.projectID = eo_conn_project.projectID LEFT JOIN eo_user ON eo_api.updateUserID = eo_user.userID WHERE (eo_api_group.groupID = ? OR eo_api_group.parentGroupID = ?) AND eo_api.removed = 0 ORDER BY eo_api.apiID $asc;", array(
  585. $groupID,
  586. $groupID
  587. ));
  588. if (empty($result))
  589. return FALSE;
  590. else
  591. return $result;
  592. }
  593. /**
  594. * get api detail
  595. * 获取api详情
  596. *
  597. * @param $apiID int
  598. * 接口ID
  599. * @return array|bool
  600. */
  601. public function getApi(&$apiID)
  602. {
  603. $db = getDatabase();
  604. $apiInfo = $db->prepareExecute('SELECT eo_api_cache.*,eo_api_group.parentGroupID FROM eo_api_cache LEFT JOIN eo_api_group ON eo_api_cache.groupID = eo_api_group.groupID WHERE eo_api_cache.apiID = ?;', array(
  605. $apiID
  606. ));
  607. $apiJson = json_decode($apiInfo['apiJson'], TRUE);
  608. $apiJson['baseInfo']['mockCode'] = "&projectID={$apiInfo['projectID']}&uri={$apiJson['baseInfo']['apiURI']}";
  609. $apiJson['baseInfo']['successMockURL'] = (is_https() ? 'https://' : 'http://') . $_SERVER['HTTP_HOST'] . $_SERVER['SCRIPT_NAME'] . '?g=Web&c=Mock&o=simple' . $apiJson['baseInfo']['mockCode'];
  610. $apiJson['baseInfo']['failureMockURL'] = (is_https() ? 'https://' : 'http://') . $_SERVER['HTTP_HOST'] . $_SERVER['SCRIPT_NAME'] . '?g=Web&c=Mock&o=simple&resultType=failure' . $apiJson['baseInfo']['mockCode'];
  611. $apiJson['baseInfo']['starred'] = $apiInfo['starred'];
  612. $apiJson['baseInfo']['groupID'] = $apiInfo['groupID'];
  613. $apiJson['baseInfo']['parentGroupID'] = $apiInfo['parentGroupID'];
  614. $apiJson['baseInfo']['projectID'] = $apiInfo['projectID'];
  615. $apiJson['baseInfo']['apiID'] = $apiInfo['apiID'];
  616. $apiJson['mockInfo']['mockURL'] = (is_https() ? 'https://' : 'http://') . $_SERVER['HTTP_HOST'] . $_SERVER['SCRIPT_NAME'] . '?g=Web&c=Mock&o=mock' . $apiJson['baseInfo']['mockCode'];
  617. $test_history = $db->prepareExecuteAll('SELECT eo_api_test_history.testID,eo_api_test_history.requestInfo,eo_api_test_history.resultInfo,eo_api_test_history.testTime FROM eo_api_test_history WHERE eo_api_test_history.apiID = ? ORDER BY eo_api_test_history.testTime DESC LIMIT 10;', array(
  618. $apiID
  619. ));
  620. $apiJson['testHistory'] = $test_history;
  621. return $apiJson;
  622. }
  623. /**
  624. * get all api list by project and order by apiName
  625. * 获取所有api列表
  626. *
  627. * @param $projectID int
  628. * 项目ID
  629. * @param $asc string
  630. * 排序 [0/1]=>[升序/降序]
  631. * @return bool|array
  632. */
  633. public function getAllApiListOrderByName(&$projectID, &$asc = 'ASC')
  634. {
  635. $db = getDatabase();
  636. $result = $db->prepareExecuteAll("SELECT DISTINCT eo_api.apiID,eo_api.apiName,eo_api.apiURI,eo_api_group.groupID,eo_api_group.parentGroupID,eo_api_group.groupName,eo_api.apiStatus,eo_api.apiRequestType,eo_api.apiUpdateTime,eo_api.starred,eo_conn_project.partnerNickName,eo_user.userNickName,eo_user.userName FROM eo_api LEFT JOIN eo_api_group ON eo_api.groupID = eo_api_group.groupID LEFT JOIN eo_conn_project ON eo_api.updateUserID = eo_conn_project.userID AND eo_api.projectID = eo_conn_project.projectID LEFT JOIN eo_user ON eo_api.updateUserID = eo_user.userID WHERE eo_api_group.projectID = ? AND eo_api.removed = 0 ORDER BY eo_api.apiName $asc;", array(
  637. $projectID
  638. ));
  639. if (empty($result))
  640. return FALSE;
  641. else
  642. return $result;
  643. }
  644. /**
  645. * get all api list by project and order by URI
  646. * 获取所有api列表
  647. *
  648. * @param $projectID int
  649. * 项目ID
  650. * @param $asc string
  651. * 排序 [0/1]=>[升序/降序]
  652. * @return bool|array
  653. */
  654. public function getAllApiListOrderByUri(&$projectID, &$asc = 'ASC')
  655. {
  656. $db = getDatabase();
  657. $result = $db->prepareExecuteAll("SELECT DISTINCT eo_api.apiID,eo_api.apiName,eo_api.apiURI,eo_api_group.groupID,eo_api_group.parentGroupID,eo_api_group.groupName,eo_api.apiStatus,eo_api.apiRequestType,eo_api.apiUpdateTime,eo_api.starred,eo_conn_project.partnerNickName,eo_user.userNickName,eo_user.userName FROM eo_api LEFT JOIN eo_api_group ON eo_api.groupID = eo_api_group.groupID LEFT JOIN eo_conn_project ON eo_api.updateUserID = eo_conn_project.userID AND eo_api.projectID = eo_conn_project.projectID LEFT JOIN eo_user ON eo_api.updateUserID = eo_user.userID WHERE eo_api_group.projectID = ? AND eo_api.removed = 0 ORDER BY eo_api.apiURI $asc;", array(
  658. $projectID
  659. ));
  660. if (empty($result))
  661. return FALSE;
  662. else
  663. return $result;
  664. }
  665. /**
  666. * get all api list by project and order by create time
  667. * 获取所有api列表
  668. *
  669. * @param $projectID int
  670. * 项目ID
  671. * @param $asc string
  672. * 排序 [0/1]=>[升序/降序]
  673. * @return bool|array
  674. */
  675. public function getAllApiListOrderByCreateTime(&$projectID, &$asc = 'ASC')
  676. {
  677. $db = getDatabase();
  678. $result = $db->prepareExecuteAll("SELECT DISTINCT eo_api.apiID,eo_api.apiName,eo_api.apiURI,eo_api_group.groupID,eo_api_group.parentGroupID,eo_api_group.groupName,eo_api.apiStatus,eo_api.apiRequestType,eo_api.apiUpdateTime,eo_api.starred,eo_conn_project.partnerNickName,eo_user.userNickName,eo_user.userName FROM eo_api LEFT JOIN eo_api_group ON eo_api.groupID = eo_api_group.groupID LEFT JOIN eo_conn_project ON eo_api.updateUserID = eo_conn_project.userID AND eo_api.projectID = eo_conn_project.projectID LEFT JOIN eo_user ON eo_api.updateUserID = eo_user.userID WHERE eo_api_group.projectID = ? AND eo_api.removed = 0 ORDER BY eo_api.apiID $asc;", array(
  679. $projectID
  680. ));
  681. if (empty($result))
  682. return FALSE;
  683. else
  684. return $result;
  685. }
  686. /**
  687. * get all api list by project and order by update time
  688. * 获取所有api列表
  689. *
  690. * @param $projectID int
  691. * 项目ID
  692. * @param $asc string
  693. * 排序 [0/1]=>[升序/降序]
  694. * @return bool|array
  695. */
  696. public function getAllApiListOrderByTime(&$projectID, &$asc = 'ASC')
  697. {
  698. $db = getDatabase();
  699. $result = $db->prepareExecuteAll("SELECT DISTINCT eo_api.apiID,eo_api.apiName,eo_api.apiURI,eo_api_group.groupID,eo_api_group.parentGroupID,eo_api_group.groupName,eo_api.apiStatus,eo_api.apiRequestType,eo_api.apiUpdateTime,eo_api.starred,eo_conn_project.partnerNickName,eo_user.userNickName,eo_user.userName FROM eo_api LEFT JOIN eo_api_group ON eo_api.groupID = eo_api_group.groupID LEFT JOIN eo_conn_project ON eo_api.updateUserID = eo_conn_project.userID AND eo_api.projectID = eo_conn_project.projectID LEFT JOIN eo_user ON eo_api.updateUserID = eo_user.userID WHERE eo_api_group.projectID = ? AND eo_api.removed = 0 ORDER BY eo_api.apiUpdateTime $asc;", array(
  700. $projectID
  701. ));
  702. if (empty($result))
  703. return FALSE;
  704. else
  705. return $result;
  706. }
  707. /**
  708. * get all api list by project and order by starred
  709. * 获取所有api列表
  710. *
  711. * @param $projectID int
  712. * 项目ID
  713. * @param $asc string
  714. * 排序 [0/1]=>[升序/降序]
  715. * @return bool|array
  716. */
  717. public function getAllApiListOrderByStarred(&$projectID, &$asc = 'ASC')
  718. {
  719. $db = getDatabase();
  720. $result = $db->prepareExecuteAll("SELECT DISTINCT eo_api.apiID,eo_api.apiName,eo_api.apiURI,eo_api_group.groupID,eo_api_group.parentGroupID,eo_api_group.groupName,eo_api.apiStatus,eo_api.apiRequestType,eo_api.apiUpdateTime,eo_api.starred,eo_conn_project.partnerNickName,eo_user.userNickName,eo_user.userName FROM eo_api LEFT JOIN eo_api_group ON eo_api.groupID = eo_api_group.groupID LEFT JOIN eo_conn_project ON eo_api.updateUserID = eo_conn_project.userID AND eo_api.projectID = eo_conn_project.projectID LEFT JOIN eo_user ON eo_api.updateUserID = eo_user.userID WHERE eo_api_group.projectID = ? AND eo_api.removed = 0 ORDER BY eo_api.starred $asc;", array(
  721. $projectID
  722. ));
  723. if (empty($result))
  724. return FALSE;
  725. else
  726. return $result;
  727. }
  728. /**
  729. * get api list from recycling station and order by apiName
  730. * 获取回收站中所有api列表按名称排序
  731. *
  732. * @param $projectID int
  733. * 项目ID
  734. * @param $asc string
  735. * 排序 [0/1]=>[升序/降序]
  736. * @return bool|array
  737. */
  738. public function getRecyclingStationApiListOrderByName(&$projectID, &$asc = 'ASC')
  739. {
  740. $db = getDatabase();
  741. $result = $db->prepareExecuteAll("SELECT DISTINCT eo_api.apiID,eo_api.apiName,eo_api.apiURI,eo_api.apiStatus,eo_api.apiRequestType,eo_api.apiUpdateTime,eo_api.removeTime,eo_api.starred,eo_conn_project.partnerNickName,eo_user.userNickName,eo_user.userName FROM eo_api LEFT JOIN eo_conn_project ON eo_api.updateUserID = eo_conn_project.userID AND eo_api.projectID = eo_conn_project.projectID LEFT JOIN eo_user ON eo_api.updateUserID = eo_user.userID WHERE eo_api.projectID = ? AND eo_api.removed = 1 ORDER BY eo_api.apiName $asc;", array(
  742. $projectID
  743. ));
  744. if (empty($result))
  745. return FALSE;
  746. else
  747. return $result;
  748. }
  749. /**
  750. * get api list from recycling station and order by URI
  751. * 获取回收站中所有api列表按名称排序
  752. *
  753. * @param $projectID int
  754. * 项目ID
  755. * @param $asc string
  756. * 排序 [0/1]=>[升序/降序]
  757. * @return bool|array
  758. */
  759. public function getRecyclingStationApiListOrderByUri(&$projectID, &$asc = 'ASC')
  760. {
  761. $db = getDatabase();
  762. $result = $db->prepareExecuteAll("SELECT DISTINCT eo_api.apiID,eo_api.apiName,eo_api.apiURI,eo_api.apiStatus,eo_api.apiRequestType,eo_api.apiUpdateTime,eo_api.removeTime,eo_api.starred,eo_conn_project.partnerNickName,eo_user.userNickName,eo_user.userName FROM eo_api LEFT JOIN eo_conn_project ON eo_api.updateUserID = eo_conn_project.userID AND eo_api.projectID = eo_conn_project.projectID LEFT JOIN eo_user ON eo_api.updateUserID = eo_user.userID WHERE eo_api.projectID = ? AND eo_api.removed = 1 ORDER BY eo_api.apiURI $asc;", array(
  763. $projectID
  764. ));
  765. if (empty($result))
  766. return FALSE;
  767. else
  768. return $result;
  769. }
  770. /**
  771. * get api list from recycling station and order by create time
  772. * 获取回收站中所有api列表按创建时间排序
  773. *
  774. * @param $projectID int
  775. * 项目ID
  776. * @param $asc string
  777. * 排序 [0/1]=>[升序/降序]
  778. * @return bool|array
  779. */
  780. public function getRecyclingStationApiListOrderByCreateTime(&$projectID, &$asc = 'ASC')
  781. {
  782. $db = getDatabase();
  783. $result = $db->prepareExecuteAll("SELECT DISTINCT eo_api.apiID,eo_api.apiName,eo_api.apiURI,eo_api.apiStatus,eo_api.apiRequestType,eo_api.apiUpdateTime,eo_api.removeTime,eo_api.starred,eo_conn_project.partnerNickName,eo_user.userNickName,eo_user.userName FROM eo_api LEFT JOIN eo_conn_project ON eo_api.updateUserID = eo_conn_project.userID AND eo_api.projectID = eo_conn_project.projectID LEFT JOIN eo_user ON eo_api.updateUserID = eo_user.userID WHERE eo_api.projectID = ? AND eo_api.removed = 1 ORDER BY eo_api.apiID $asc;", array(
  784. $projectID
  785. ));
  786. if (empty($result))
  787. return FALSE;
  788. else
  789. return $result;
  790. }
  791. /**
  792. * get api list from recycling station and order by remove time
  793. * 获取回收站中所有api列表按移除时间排序
  794. *
  795. * @param $projectID int
  796. * 项目ID
  797. * @param $asc string
  798. * 排序 [0/1]=>[升序/降序]
  799. * @return bool|array
  800. */
  801. public function getRecyclingStationApiListOrderByRemoveTime(&$projectID, &$asc = 'ASC')
  802. {
  803. $db = getDatabase();
  804. $result = $db->prepareExecuteAll("SELECT DISTINCT eo_api.apiID,eo_api.apiName,eo_api.apiURI,eo_api.apiStatus,eo_api.apiRequestType,eo_api.apiUpdateTime,eo_api.removeTime,eo_api.starred,eo_conn_project.partnerNickName,eo_user.userNickName,eo_user.userName FROM eo_api LEFT JOIN eo_conn_project ON eo_api.updateUserID = eo_conn_project.userID AND eo_api.projectID = eo_conn_project.projectID LEFT JOIN eo_user ON eo_api.updateUserID = eo_user.userID WHERE eo_api.projectID = ? AND eo_api.removed = 1 ORDER BY eo_api.removeTime $asc;", array(
  805. $projectID
  806. ));
  807. if (empty($result))
  808. return FALSE;
  809. else
  810. return $result;
  811. }
  812. /**
  813. * get api list from recycling station and order by starree
  814. * 获取回收站中所有api列表按星标排序
  815. *
  816. * @param $projectID int
  817. * 项目ID
  818. * @param $asc string
  819. * 排序 [0/1]=>[升序/降序]
  820. * @return bool|array
  821. */
  822. public function getRecyclingStationApiListOrderByStarred(&$projectID, &$asc = 'ASC')
  823. {
  824. $db = getDatabase();
  825. $result = $db->prepareExecuteAll("SELECT DISTINCT eo_api.apiID,eo_api.apiName,eo_api.apiURI,eo_api.apiStatus,eo_api.apiRequestType,eo_api.apiUpdateTime,eo_api.removeTime,eo_api.starred,eo_conn_project.partnerNickName,eo_user.userNickName,eo_user.userName FROM eo_api LEFT JOIN eo_conn_project ON eo_api.updateUserID = eo_conn_project.userID AND eo_api.projectID = eo_conn_project.projectID LEFT JOIN eo_user ON eo_api.updateUserID = eo_user.userID WHERE eo_api.projectID = ? AND eo_api.removed = 1 ORDER BY eo_api.starred $asc;", array(
  826. $projectID
  827. ));
  828. if (empty($result))
  829. return FALSE;
  830. else
  831. return $result;
  832. }
  833. /**
  834. * search api
  835. * 搜索api
  836. *
  837. * @param $tips string
  838. * 搜索关键字
  839. * @param $projectID int
  840. * 项目ID
  841. * @return bool|array
  842. */
  843. public function searchApi(&$tips, &$projectID)
  844. {
  845. $db = getDatabase();
  846. $result = $db->prepareExecuteAll('SELECT DISTINCT eo_api.apiID,eo_api.apiName,eo_api.apiURI,eo_api_group.groupID,eo_api_group.parentGroupID,eo_api_group.groupName,eo_api.apiStatus,eo_api.apiRequestType,eo_api.apiUpdateTime FROM eo_api LEFT JOIN eo_api_group ON eo_api.groupID = eo_api_group.groupID WHERE eo_api_group.projectID = ? AND eo_api.removed = 0 AND (eo_api.apiName LIKE ? OR eo_api.apiURI LIKE ?)ORDER BY eo_api.apiName;', array(
  847. $projectID,
  848. '%' . $tips . '%',
  849. '%' . $tips . '%'
  850. ));
  851. if (empty($result))
  852. return FALSE;
  853. else
  854. return $result;
  855. }
  856. /**
  857. * check api permission
  858. * 判断api与用户是否匹配
  859. *
  860. * @param $apiID int
  861. * 接口ID
  862. * @param $userID int
  863. * 用户ID
  864. * @return bool|int
  865. */
  866. public function checkApiPermission(&$apiID, &$userID)
  867. {
  868. $db = getDatabase();
  869. $result = $db->prepareExecute('SELECT eo_conn_project.projectID FROM eo_api LEFT JOIN eo_api_group ON eo_api.groupID = eo_api_group.groupID LEFT JOIN eo_conn_project ON eo_conn_project.projectID = eo_api.projectID WHERE eo_conn_project.userID = ? AND eo_api.apiID = ?;', array(
  870. $userID,
  871. $apiID
  872. ));
  873. if (empty($result))
  874. return FALSE;
  875. else
  876. return $result['projectID'];
  877. }
  878. /**
  879. * add star
  880. * 添加星标
  881. *
  882. * @param $apiID int
  883. * 接口ID
  884. * @return bool
  885. */
  886. public function addStar(&$apiID)
  887. {
  888. $db = getDatabase();
  889. $db->prepareExecute("UPDATE eo_api SET eo_api.starred = 1 WHERE eo_api.apiID = ?", array($apiID));
  890. $db->prepareExecute("UPDATE eo_api_cache SET eo_api_cache.starred = 1 WHERE eo_api_cache.apiID = ?;", array($apiID));
  891. if ($db->getAffectRow() > 0)
  892. return TRUE;
  893. else
  894. return FALSE;
  895. }
  896. /**
  897. * remove star
  898. * 去除星标
  899. *
  900. * @param $apiID int
  901. * 接口ID
  902. * @return bool
  903. */
  904. public function removeStar(&$apiID)
  905. {
  906. $db = getDatabase();
  907. $db->prepareExecute("UPDATE eo_api SET eo_api.starred = 0 WHERE eo_api.apiID = ?", array($apiID));
  908. $db->prepareExecute("UPDATE eo_api_cache SET eo_api_cache.starred = 0 WHERE eo_api_cache.apiID = ?", array($apiID));
  909. if ($db->getAffectRow() > 0)
  910. return TRUE;
  911. else
  912. return FALSE;
  913. }
  914. /**
  915. * Delete apis in batches and move them into recycling station
  916. * 批量将api移入回收站
  917. *
  918. * @param $projectID int
  919. * 项目ID
  920. * @param $apiIDs string
  921. * 接口ID列表
  922. * @return bool
  923. */
  924. public function removeApis(&$projectID, &$apiIDs)
  925. {
  926. $db = getDatabase();
  927. $db->prepareExecuteAll("UPDATE eo_api SET eo_api.removed = 1, eo_api.removeTime = ? WHERE eo_api.apiID IN ($apiIDs) AND projectID = ?;", array(
  928. date("Y-m-d H:i:s", time()),
  929. $projectID
  930. ));
  931. if ($db->getAffectRow() > 0) {
  932. return TRUE;
  933. } else {
  934. return FALSE;
  935. }
  936. }
  937. /**
  938. * Remove apis in batches from recycling station
  939. * 批量删除api
  940. *
  941. * @param $projectID int
  942. * 项目ID
  943. * @param $apiIDs string
  944. * 接口ID列表
  945. * @return bool
  946. */
  947. public function deleteApis(&$projectID, &$apiIDs)
  948. {
  949. $db = getDatabase();
  950. $db->beginTransaction();
  951. $db->prepareExecuteAll("DELETE FROM eo_api WHERE apiID IN ($apiIDs) AND projectID = ?;", array(
  952. $projectID
  953. ));
  954. if ($db->getAffectRow() > 0) {
  955. $db->prepareExecute("DELETE FROM eo_api_cache WHERE eo_api_cache.apiID IN ($apiIDs);", array());
  956. $db->prepareExecute("DELETE FROM eo_api_header WHERE eo_api_header.apiID IN ($apiIDs);", array());
  957. $db->prepareExecute("DELETE FROM eo_api_request_value WHERE eo_api_request_value.paramID IN (SELECT eo_api_request_param.paramID FROM eo_api_request_param WHERE eo_api_request_param.apiID IN ($apiIDs));", array());
  958. $db->prepareExecute("DELETE FROM eo_api_request_param WHERE eo_api_request_param.apiID IN ($apiIDs);", array());
  959. $db->prepareExecute("DELETE FROM eo_api_result_value WHERE eo_api_result_value.paramID IN (SELECT eo_api_result_param.paramID FROM eo_api_result_param WHERE eo_api_result_param.apiID IN ($apiIDs));", array());
  960. $db->prepareExecute("DELETE FROM eo_api_result_param WHERE eo_api_result_param.apiID IN ($apiIDs);", array());
  961. $db->commit();
  962. return TRUE;
  963. } else {
  964. $db->rollback();
  965. return FALSE;
  966. }
  967. }
  968. /**
  969. * Recover api in batches
  970. * 批量恢复api
  971. *
  972. * @param $groupID int
  973. * 分组ID
  974. * @param $apiIDs string
  975. * 接口ID列表
  976. * @return bool
  977. */
  978. public function recoverApis(&$groupID, &$apiIDs)
  979. {
  980. $db = getDatabase();
  981. $db->prepareExecuteAll("UPDATE eo_api SET eo_api.removed = 0, eo_api.groupID = ? WHERE eo_api.apiID IN ($apiIDs);", array(
  982. $groupID
  983. ));
  984. if ($db->getAffectRow() < 1) {
  985. return FALSE;
  986. } else {
  987. return TRUE;
  988. }
  989. }
  990. /**
  991. * 获取接口名称
  992. *
  993. * @param string $apiIDs
  994. * @return boolean|mixed
  995. */
  996. public function getApiName(&$apiIDs)
  997. {
  998. $db = getDatabase();
  999. $result = $db->prepareExecute("SELECT GROUP_CONCAT(DISTINCT eo_api.apiName) AS apiName FROM eo_api WHERE eo_api.apiID IN ($apiIDs);", array());
  1000. if (empty($result)) {
  1001. return FALSE;
  1002. } else {
  1003. return $result['apiName'];
  1004. }
  1005. }
  1006. /**
  1007. * 添加历史记录
  1008. * @param $project_id
  1009. * @param $group_id
  1010. * @param $api_id
  1011. * @param $history_json
  1012. * @param $update_desc
  1013. * @param $update_user_id
  1014. * @param $update_time
  1015. * @return bool
  1016. */
  1017. public function addApiHistory(&$project_id, &$group_id, &$api_id, &$history_json, $update_desc, &$update_user_id, &$update_time)
  1018. {
  1019. $db = getDatabase();
  1020. $db->beginTransaction();
  1021. //直接插入缓存数据
  1022. $db->prepareExecute("UPDATE eo_api_history SET eo_api_history.isNow = 0 WHERE eo_api_history.apiID = ?;", array($api_id));
  1023. $db->prepareExecute("INSERT INTO eo_api_history (eo_api_history.projectID,eo_api_history.groupID,eo_api_history.apiID,eo_api_history.historyJson,eo_api_history.updateDesc,eo_api_history.updateUserID,eo_api_history.updateTime,eo_api_history.isNow) VALUES (?,?,?,?,?,?,?,1);", array(
  1024. $project_id,
  1025. $group_id,
  1026. $api_id,
  1027. $history_json,
  1028. $update_desc,
  1029. $update_user_id,
  1030. $update_time
  1031. ));
  1032. if ($db->getAffectRow() > 0) {
  1033. $db->commit();
  1034. return TRUE;
  1035. } else {
  1036. $db->rollback();
  1037. return FALSE;
  1038. }
  1039. }
  1040. /**
  1041. * 删除历史记录
  1042. * @param $api_history_id
  1043. * @param $api_id
  1044. * @return bool
  1045. */
  1046. public function deleteApiHistory(&$api_history_id, &$api_id)
  1047. {
  1048. $db = getDatabase();
  1049. $db->prepareExecute("DELETE FROM eo_api_history WHERE eo_api_history.historyID = ? AND eo_api_history.isNow = 0 AND eo_api_history.apiID = ?;", array($api_history_id, $api_id));
  1050. if ($db->getAffectRow() > 0)
  1051. return TRUE;
  1052. else
  1053. return FALSE;
  1054. }
  1055. /**
  1056. * 获取接口修改历史列表
  1057. * @param $api_id
  1058. * @param $num_limit
  1059. * @return bool
  1060. */
  1061. public function getApiHistoryList(&$api_id, $num_limit)
  1062. {
  1063. $db = getDatabase();
  1064. $result = $db->prepareExecuteAll('SELECT eo_api_history.historyID,eo_api_history.apiID,eo_api_history.groupID,eo_api_history.projectID,eo_api_history.updateDesc,eo_user.userNickName,eo_api_history.updateTime,eo_api_history.isNow FROM eo_api_history INNER JOIN eo_user ON eo_api_history.updateUserID = eo_user.userID WHERE eo_api_history.apiID = ? ORDER BY eo_api_history.updateTime DESC LIMIT ?;', array(
  1065. $api_id,
  1066. $num_limit
  1067. ));
  1068. if (empty($result))
  1069. return FALSE;
  1070. else
  1071. return $result;
  1072. }
  1073. /**
  1074. * 切换接口历史版本
  1075. * @param $api_id
  1076. * @param $api_history_id
  1077. * @return bool
  1078. */
  1079. public function toggleApiHistory(&$api_id, &$api_history_id)
  1080. {
  1081. $db = getDatabase();
  1082. try {
  1083. //开始事务
  1084. $db->beginTransaction();
  1085. $result = $db->prepareExecute('SELECT eo_api_history.projectID FROM eo_api_history WHERE eo_api_history.apiID = ? AND eo_api_history.historyID = ?;', array(
  1086. $api_id,
  1087. $api_history_id
  1088. ));
  1089. if (empty($result)) {
  1090. $db->rollback();
  1091. return FALSE;
  1092. }
  1093. $db->prepareExecute("UPDATE eo_api_history SET eo_api_history.isNow = 0 WHERE eo_api_history.apiID = ?;", array($api_id));
  1094. $db->prepareExecute("UPDATE eo_api_history SET eo_api_history.isNow = 1 WHERE eo_api_history.historyID = ?;", array($api_history_id));
  1095. //更新接口的缓存数据
  1096. $api_info = $db->prepareExecute('SELECT eo_api_history.historyJson,eo_api_history.groupID,eo_api_history.updateUserID FROM eo_api_history WHERE eo_api_history.historyID = ?;', array($api_history_id));
  1097. $group_id = $api_info['groupID'];
  1098. $update_user_id = $api_info['updateUserID'];
  1099. $db->prepareExecute('UPDATE eo_api_cache SET eo_api_cache.groupID = ?, eo_api_cache.apiJson = ?,eo_api_cache.updateUserID = ? WHERE eo_api_cache.apiID = ?;', array(
  1100. $group_id,
  1101. $api_info['historyJson'],
  1102. $update_user_id,
  1103. $api_id
  1104. ));
  1105. $api_info = json_decode($api_info['historyJson'], TRUE);
  1106. //删除旧的接口参数信息
  1107. $db->prepareExecute('DELETE FROM eo_api_header WHERE eo_api_header.apiID = ?;', array($api_id));
  1108. $db->prepareExecute('DELETE FROM eo_api_request_param WHERE eo_api_request_param.apiID = ?;', array($api_id));
  1109. $db->prepareExecute('DELETE FROM eo_api_result_param WHERE eo_api_result_param.apiID = ?;', array($api_id));
  1110. $db->prepareExecute('UPDATE eo_api SET eo_api.apiName = ?,eo_api.apiURI = ?,eo_api.apiProtocol = ?,eo_api.apiSuccessMock = ?,eo_api.apiFailureMock = ?,eo_api.apiRequestType = ?,eo_api.apiStatus = ?,eo_api.starred = ?,eo_api.groupID = ?,eo_api.apiNoteType = ?,eo_api.apiNoteRaw = ?,eo_api.apiNote = ?,eo_api.apiUpdateTime = ?,eo_api.apiRequestParamType = ?,eo_api.apiRequestRaw = ?,eo_api.updateUserID = ? WHERE eo_api.apiID = ?;', array(
  1111. $api_info['baseInfo']['apiName'],
  1112. $api_info['baseInfo']['apiURI'],
  1113. $api_info['baseInfo']['apiProtocol'],
  1114. $api_info['baseInfo']['apiSuccessMock'],
  1115. $api_info['baseInfo']['apiFailureMock'],
  1116. $api_info['baseInfo']['apiRequestType'],
  1117. $api_info['baseInfo']['apiStatus'],
  1118. $api_info['baseInfo']['starred'],
  1119. $group_id,
  1120. $api_info['baseInfo']['apiNoteType'],
  1121. $api_info['baseInfo']['apiNoteRaw'],
  1122. $api_info['baseInfo']['apiNote'],
  1123. $api_info['baseInfo']['apiUpdateTime'],
  1124. $api_info['baseInfo']['apiRequestParamType'],
  1125. $api_info['baseInfo']['apiRequestRaw'],
  1126. $update_user_id,
  1127. $api_id
  1128. ));
  1129. //插入header信息
  1130. foreach ($api_info['headerInfo'] as $param) {
  1131. $db->prepareExecute('INSERT INTO eo_api_header (eo_api_header.headerName,eo_api_header.headerValue,eo_api_header.apiID) VALUES (?,?,?);', array(
  1132. $param['headerName'],
  1133. $param['headerValue'],
  1134. $api_id
  1135. ));
  1136. if ($db->getAffectRow() < 1)
  1137. throw new \PDOException("toggleApiHistory error");
  1138. };
  1139. //插入api请求值信息
  1140. foreach ($api_info['requestInfo'] as $param) {
  1141. $db->prepareExecute('INSERT INTO eo_api_request_param (eo_api_request_param.apiID,eo_api_request_param.paramName,eo_api_request_param.paramKey,eo_api_request_param.paramValue,eo_api_request_param.paramLimit,eo_api_request_param.paramNotNull,eo_api_request_param.paramType) VALUES (?,?,?,?,?,?,?);', array(
  1142. $api_id,
  1143. $param['paramName'],
  1144. $param['paramKey'],
  1145. $param['paramValue'],
  1146. $param['paramLimit'],
  1147. $param['paramNotNull'],
  1148. $param['paramType']
  1149. ));
  1150. if ($db->getAffectRow() < 1)
  1151. throw new \PDOException("toggleApiHistory error");
  1152. $param_id = $db->getLastInsertID();
  1153. foreach ($param['paramValueList'] as $value) {
  1154. $db->prepareExecute('INSERT INTO eo_api_request_value (eo_api_request_value.paramID,eo_api_request_value.`value`,eo_api_request_value.valueDescription) VALUES (?,?,?);', array(
  1155. $param_id,
  1156. $value['value'],
  1157. $value['valueDescription']
  1158. ));
  1159. if ($db->getAffectRow() < 1)
  1160. throw new \PDOException("toggleApiHistory error");
  1161. };
  1162. };
  1163. //插入api返回值信息
  1164. foreach ($api_info['resultInfo'] as $param) {
  1165. $db->prepareExecute('INSERT INTO eo_api_result_param (eo_api_result_param.apiID,eo_api_result_param.paramName,eo_api_result_param.paramKey,eo_api_result_param.paramNotNull) VALUES (?,?,?,?);', array(
  1166. $api_id,
  1167. $param['paramName'],
  1168. $param['paramKey'],
  1169. $param['paramNotNull']
  1170. ));
  1171. if ($db->getAffectRow() < 1)
  1172. throw new \PDOException("toggleApiHistory error");
  1173. $param_id = $db->getLastInsertID();
  1174. foreach ($param['paramValueList'] as $value) {
  1175. $db->prepareExecute('INSERT INTO eo_api_result_value (eo_api_result_value.paramID,eo_api_result_value.`value`,eo_api_result_value.valueDescription) VALUES (?,?,?);', array(
  1176. $param_id,
  1177. $value['value'],
  1178. $value['valueDescription']
  1179. ));
  1180. if ($db->getAffectRow() < 1)
  1181. throw new \PDOException("toggleApiHistory error");
  1182. };
  1183. }
  1184. $db->commit();
  1185. return TRUE;
  1186. } catch (\PDOException $e) {
  1187. $db->rollBack();
  1188. return FALSE;
  1189. }
  1190. }
  1191. /**
  1192. * 获取接口mock数据
  1193. * @param $api_id
  1194. * @return bool
  1195. */
  1196. public function getApiMockData(&$api_id)
  1197. {
  1198. $db = getDatabase();
  1199. $result = $db->prepareExecute('SELECT eo_api.apiName,eo_api.projectID,eo_api.apiID,eo_api.apiURI,eo_api.mockRule,eo_api.mockResult,eo_api.mockConfig FROM eo_api WHERE eo_api.apiID = ?;', array(
  1200. $api_id
  1201. ));
  1202. if (empty($result)) {
  1203. return FALSE;
  1204. } else {
  1205. $result['mockRule'] = json_decode($result['mockRule']);
  1206. $result['mockConfig'] = json_decode($result['mockConfig']);
  1207. $mockCode = "&projectID={$result['projectID']}&uri={$result['apiURI']}";
  1208. $result['mockURL'] = (is_https() ? 'https://' : 'http://') . $_SERVER['HTTP_HOST'] . $_SERVER['SCRIPT_NAME'] . '?g=Web&c=Mock&o=mock' . $mockCode;
  1209. return $result;
  1210. }
  1211. }
  1212. /**
  1213. * 编辑接口mock数据
  1214. * @param $api_id
  1215. * @param $mock_rule
  1216. * @param $mock_result
  1217. * @param $mock_config
  1218. * @return bool
  1219. */
  1220. public function editApiMockData(&$api_id, &$mock_rule, &$mock_result, &$mock_config)
  1221. {
  1222. $db = getDatabase();
  1223. $db->prepareExecute('UPDATE eo_api SET eo_api.mockRule = ?,eo_api.mockResult = ?,eo_api.mockConfig = ? WHERE eo_api.apiID = ?;', array(
  1224. $mock_rule,
  1225. $mock_result,
  1226. $mock_config,
  1227. $api_id
  1228. ));
  1229. if ($db->getAffectRow() < 1) {
  1230. return FALSE;
  1231. } else {
  1232. return TRUE;
  1233. }
  1234. }
  1235. /**
  1236. * 批量修改接口分组
  1237. * @param $api_ids
  1238. * @param $project_id
  1239. * @param $group_id
  1240. * @return bool
  1241. */
  1242. public function changeApiGroup(&$api_ids, &$project_id, &$group_id)
  1243. {
  1244. $db = getDatabase();
  1245. $db->beginTransaction();
  1246. $db->prepareExecuteAll("UPDATE eo_api_cache SET eo_api_cache.groupID = ? WHERE eo_api_cache.apiID IN ($api_ids) AND eo_api_cache.projectID = ?;", array(
  1247. $group_id,
  1248. $project_id
  1249. ));
  1250. if ($db->getAffectRow() < 1) {
  1251. $db->rollback();
  1252. return FALSE;
  1253. }
  1254. $db->prepareExecuteAll("UPDATE eo_api SET eo_api.groupID = ? WHERE eo_api.apiID IN ($api_ids) AND eo_api.projectID = ?;", array(
  1255. $group_id,
  1256. $project_id
  1257. ));
  1258. if ($db->getAffectRow() < 1) {
  1259. $db->rollback();
  1260. return FALSE;
  1261. }
  1262. $db->commit();
  1263. return TRUE;
  1264. }
  1265. /**
  1266. * 批量获取接口数据
  1267. * @param $project_id
  1268. * @param $api_ids
  1269. * @return array|bool
  1270. */
  1271. public function getApiData(&$project_id, &$api_ids)
  1272. {
  1273. $db = getDatabase();
  1274. $result = $db->prepareExecuteAll("SELECT eo_api_cache.apiID,eo_api_cache.apiJson,eo_api_cache.starred FROM eo_api_cache WHERE eo_api_cache.projectID = ? AND eo_api_cache.apiID in ($api_ids);", array(
  1275. $project_id
  1276. ));
  1277. $api_list = array();
  1278. $i = 0;
  1279. foreach ($result as $api) {
  1280. $api_list[$i] = json_decode($api['apiJson'], TRUE);
  1281. $api_list[$i]['baseInfo']['starred'] = $api['starred'];
  1282. ++$i;
  1283. }
  1284. if ($api_list)
  1285. return $api_list;
  1286. else
  1287. return FALSE;
  1288. }
  1289. /**
  1290. * 批量导入接口
  1291. * @param $group_id
  1292. * @param $project_id
  1293. * @param $data
  1294. * @param $user_id
  1295. * @return bool
  1296. */
  1297. public function importApi(&$group_id, &$project_id, &$data, &$user_id)
  1298. {
  1299. $db = getDatabase();
  1300. try {
  1301. $db->beginTransaction();
  1302. if (is_array($data)) {
  1303. foreach ($data as $api) {
  1304. // 插入api基本信息
  1305. $db->prepareExecute('INSERT INTO eo_api (eo_api.apiName,eo_api.apiURI,eo_api.apiProtocol,eo_api.apiSuccessMock,eo_api.apiFailureMock,eo_api.apiRequestType,eo_api.apiStatus,eo_api.groupID,eo_api.projectID,eo_api.starred,eo_api.apiNoteType,eo_api.apiNoteRaw,eo_api.apiNote,eo_api.apiRequestParamType,eo_api.apiRequestRaw,eo_api.apiUpdateTime,eo_api.updateUserID) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?);', array(
  1306. $api['baseInfo']['apiName'],
  1307. $api['baseInfo']['apiURI'],
  1308. $api['baseInfo']['apiProtocol'],
  1309. $api['baseInfo']['apiSuccessMock'],
  1310. $api['baseInfo']['apiFailureMock'],
  1311. $api['baseInfo']['apiRequestType'],
  1312. $api['baseInfo']['apiStatus'],
  1313. $group_id,
  1314. $project_id,
  1315. $api['baseInfo']['starred'],
  1316. $api['baseInfo']['apiNoteType'],
  1317. $api['baseInfo']['apiNoteRaw'],
  1318. $api['baseInfo']['apiNote'],
  1319. $api['baseInfo']['apiRequestParamType'],
  1320. $api['baseInfo']['apiRequestRaw'],
  1321. $api['baseInfo']['apiUpdateTime'],
  1322. $user_id
  1323. ));
  1324. if ($db->getAffectRow() < 1)
  1325. throw new \PDOException("addApi error");
  1326. $api_id = $db->getLastInsertID();
  1327. // 插入header信息
  1328. foreach ($api['headerInfo'] as $header) {
  1329. $db->prepareExecute('INSERT INTO eo_api_header (eo_api_header.headerName,eo_api_header.headerValue,eo_api_header.apiID) VALUES (?,?,?);', array(
  1330. $header['headerName'],
  1331. $header['headerValue'],
  1332. $api_id
  1333. ));
  1334. if ($db->getAffectRow() < 1)
  1335. throw new \PDOException("addHeader error");
  1336. }
  1337. // 插入api请求值信息
  1338. foreach ($api['requestInfo'] as $request) {
  1339. $db->prepareExecute('INSERT INTO eo_api_request_param (eo_api_request_param.apiID,eo_api_request_param.paramName,eo_api_request_param.paramKey,eo_api_request_param.paramValue,eo_api_request_param.paramLimit,eo_api_request_param.paramNotNull,eo_api_request_param.paramType) VALUES (?,?,?,?,?,?,?);', array(
  1340. $api_id,
  1341. $request['paramName'],
  1342. $request['paramKey'],
  1343. $request['paramValue'],
  1344. $request['paramLimit'],
  1345. $request['paramNotNull'],
  1346. $request['paramType']
  1347. ));
  1348. if ($db->getAffectRow() < 1)
  1349. throw new \PDOException("addRequestParam error");
  1350. $param_id = $db->getLastInsertID();
  1351. foreach ($request['paramValueList'] as $value) {
  1352. $db->prepareExecute('INSERT INTO eo_api_request_value (eo_api_request_value.paramID,eo_api_request_value.`value`,eo_api_request_value.valueDescription) VALUES (?,?,?);', array(
  1353. $param_id,
  1354. $value['value'],
  1355. $value['valueDescription']
  1356. ));
  1357. if ($db->getAffectRow() < 1)
  1358. throw new \PDOException("addApi error");
  1359. };
  1360. };
  1361. // 插入api返回值信息
  1362. foreach ($api['resultInfo'] as $result) {
  1363. $db->prepareExecute('INSERT INTO eo_api_result_param (eo_api_result_param.apiID,eo_api_result_param.paramName,eo_api_result_param.paramKey,eo_api_result_param.paramNotNull) VALUES (?,?,?,?);', array(
  1364. $api_id,
  1365. $result['paramName'],
  1366. $result['paramKey'],
  1367. $result['paramNotNull']
  1368. ));
  1369. if ($db->getAffectRow() < 1)
  1370. throw new \PDOException("addResultParam error");
  1371. $param_id = $db->getLastInsertID();
  1372. foreach ($result['paramValueList'] as $value) {
  1373. $db->prepareExecute('INSERT INTO eo_api_result_value (eo_api_result_value.paramID,eo_api_result_value.`value`,eo_api_result_value.valueDescription) VALUES (?,?,?);;', array(
  1374. $param_id,
  1375. $value['value'],
  1376. $value['valueDescription']
  1377. ));
  1378. if ($db->getAffectRow() < 1)
  1379. throw new \PDOException("addApi error");
  1380. };
  1381. };
  1382. // 插入api缓存数据用于导出
  1383. $db->prepareExecute("INSERT INTO eo_api_cache (eo_api_cache.projectID,eo_api_cache.groupID,eo_api_cache.apiID,eo_api_cache.apiJson,eo_api_cache.starred) VALUES (?,?,?,?,?);", array(
  1384. $project_id,
  1385. $group_id,
  1386. $api_id,
  1387. json_encode($api),
  1388. $api['baseInfo']['starred']
  1389. ));
  1390. if ($db->getAffectRow() < 1) {
  1391. throw new \PDOException("addApiCache error");
  1392. }
  1393. }
  1394. }
  1395. $db->commit();
  1396. return TRUE;
  1397. } catch (\Exception $e) {
  1398. $db->rollback();
  1399. return FALSE;
  1400. }
  1401. }
  1402. }
  1403. ?>