ImportDao.class.php 45 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794
  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 ImportDao
  19. {
  20. /**
  21. * 导入eolinker
  22. * @param $data array 从eolinker导出的json格式数据
  23. * @param $user_id int 用户ID
  24. * @return bool
  25. */
  26. public function importEoapi(&$data, &$user_id)
  27. {
  28. $db = getDatabase();
  29. try {
  30. // 开始事务
  31. $db->beginTransaction();
  32. // 插入项目
  33. $db->prepareExecute('INSERT INTO eo_project(eo_project.projectName,eo_project.projectType,eo_project.projectVersion,eo_project.projectUpdateTime) VALUES (?,?,?,?);', array(
  34. $data['projectInfo']['projectName'],
  35. $data['projectInfo']['projectType'],
  36. $data['projectInfo']['projectVersion'],
  37. date('Y-m-d H:i:s', time())
  38. ));
  39. if ($db->getAffectRow() < 1)
  40. throw new \PDOException("addProject error");
  41. // 获取projectID
  42. $project_id = $db->getLastInsertID();
  43. // 生成项目与用户的联系
  44. $db->prepareExecute('INSERT INTO eo_conn_project(eo_conn_project.projectID,eo_conn_project.userID,eo_conn_project.userType) VALUES (?,?,0);', array(
  45. $project_id,
  46. $user_id
  47. ));
  48. if ($db->getAffectRow() < 1)
  49. throw new \PDOException("addConnProject error");
  50. if (!empty($data['apiGroupList'])) {
  51. // 插入接口分组信息
  52. foreach ($data['apiGroupList'] as $api_group) {
  53. $db->prepareExecute('INSERT INTO eo_api_group (eo_api_group.groupName,eo_api_group.projectID) VALUES (?,?);', array(
  54. $api_group['groupName'],
  55. $project_id
  56. ));
  57. if ($db->getAffectRow() < 1)
  58. throw new \PDOException("addGroup error");
  59. $group_id = $db->getLastInsertID();
  60. if ($api_group['apiList']) {
  61. foreach ($api_group['apiList'] as $api) {
  62. // 插入api基本信息
  63. $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(
  64. $api['baseInfo']['apiName'],
  65. $api['baseInfo']['apiURI'],
  66. $api['baseInfo']['apiProtocol'],
  67. $api['baseInfo']['apiSuccessMock'],
  68. $api['baseInfo']['apiFailureMock'],
  69. $api['baseInfo']['apiRequestType'],
  70. $api['baseInfo']['apiStatus'],
  71. $group_id,
  72. $project_id,
  73. $api['baseInfo']['starred'],
  74. $api['baseInfo']['apiNoteType'],
  75. $api['baseInfo']['apiNoteRaw'],
  76. $api['baseInfo']['apiNote'],
  77. $api['baseInfo']['apiRequestParamType'],
  78. $api['baseInfo']['apiRequestRaw'],
  79. $api['baseInfo']['apiUpdateTime'],
  80. $user_id
  81. ));
  82. if ($db->getAffectRow() < 1)
  83. throw new \PDOException("addApi error");
  84. $api_id = $db->getLastInsertID();
  85. // 插入header信息
  86. foreach ($api['headerInfo'] as $header) {
  87. $db->prepareExecute('INSERT INTO eo_api_header (eo_api_header.headerName,eo_api_header.headerValue,eo_api_header.apiID) VALUES (?,?,?);', array(
  88. $header['headerName'],
  89. $header['headerValue'],
  90. $api_id
  91. ));
  92. if ($db->getAffectRow() < 1)
  93. throw new \PDOException("addHeader error");
  94. }
  95. // 插入api请求值信息
  96. foreach ($api['requestInfo'] as $request) {
  97. $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(
  98. $api_id,
  99. $request['paramName'],
  100. $request['paramKey'],
  101. $request['paramValue'],
  102. $request['paramLimit'],
  103. $request['paramNotNull'],
  104. $request['paramType']
  105. ));
  106. if ($db->getAffectRow() < 1)
  107. throw new \PDOException("addRequestParam error");
  108. $param_id = $db->getLastInsertID();
  109. foreach ($request['paramValueList'] as $value) {
  110. $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(
  111. $param_id,
  112. $value['value'],
  113. $value['valueDescription']
  114. ));
  115. if ($db->getAffectRow() < 1)
  116. throw new \PDOException("addApi error");
  117. };
  118. };
  119. // 插入api返回值信息
  120. foreach ($api['resultInfo'] as $result) {
  121. $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(
  122. $api_id,
  123. $result['paramName'],
  124. $result['paramKey'],
  125. $result['paramNotNull']
  126. ));
  127. if ($db->getAffectRow() < 1)
  128. throw new \PDOException("addResultParam error");
  129. $param_id = $db->getLastInsertID();
  130. foreach ($result['paramValueList'] as $value) {
  131. $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(
  132. $param_id,
  133. $value['value'],
  134. $value['valueDescription']
  135. ));
  136. if ($db->getAffectRow() < 1)
  137. throw new \PDOException("addApi error");
  138. };
  139. };
  140. // 插入api缓存数据用于导出
  141. $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(
  142. $project_id,
  143. $group_id,
  144. $api_id,
  145. json_encode($api),
  146. $api['baseInfo']['starred']
  147. ));
  148. if ($db->getAffectRow() < 1) {
  149. throw new \PDOException("addApiCache error");
  150. }
  151. }
  152. }
  153. // 二级分组代码
  154. if ($api_group['apiGroupChildList']) {
  155. $group_parent_id = $group_id;
  156. foreach ($api_group['apiGroupChildList'] as $api_group_child) {
  157. $db->prepareExecute('INSERT INTO eo_api_group (eo_api_group.groupName,eo_api_group.projectID,eo_api_group.parentGroupID, eo_api_group.isChild) VALUES (?,?,?,?);', array(
  158. $api_group_child['groupName'],
  159. $project_id,
  160. $group_parent_id,
  161. 1
  162. ));
  163. if ($db->getAffectRow() < 1)
  164. throw new \PDOException("addChildGroup error");
  165. $group_id = $db->getLastInsertID();
  166. // 如果当前分组没有接口,则跳过到下一分组
  167. if (empty($api_group_child['apiList']))
  168. continue;
  169. foreach ($api_group_child['apiList'] as $api) {
  170. // 插入api基本信息
  171. $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(
  172. $api['baseInfo']['apiName'],
  173. $api['baseInfo']['apiURI'],
  174. $api['baseInfo']['apiProtocol'],
  175. $api['baseInfo']['apiSuccessMock'],
  176. $api['baseInfo']['apiFailureMock'],
  177. $api['baseInfo']['apiRequestType'],
  178. $api['baseInfo']['apiStatus'],
  179. $group_id,
  180. $project_id,
  181. $api['baseInfo']['starred'],
  182. $api['baseInfo']['apiNoteType'],
  183. $api['baseInfo']['apiNoteRaw'],
  184. $api['baseInfo']['apiNote'],
  185. $api['baseInfo']['apiRequestParamType'],
  186. $api['baseInfo']['apiRequestRaw'],
  187. $api['baseInfo']['apiUpdateTime'],
  188. $user_id
  189. ));
  190. if ($db->getAffectRow() < 1)
  191. throw new \PDOException("addChildApi error");
  192. $api_id = $db->getLastInsertID();
  193. // 插入header信息
  194. foreach ($api['headerInfo'] as $header) {
  195. $db->prepareExecute('INSERT INTO eo_api_header (eo_api_header.headerName,eo_api_header.headerValue,eo_api_header.apiID) VALUES (?,?,?);', array(
  196. $header['headerName'],
  197. $header['headerValue'],
  198. $api_id
  199. ));
  200. if ($db->getAffectRow() < 1)
  201. throw new \PDOException("addChildHeader error");
  202. }
  203. // 插入api请求值信息
  204. foreach ($api['requestInfo'] as $request) {
  205. $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(
  206. $api_id,
  207. $request['paramName'],
  208. $request['paramKey'],
  209. $request['paramValue'],
  210. $request['paramLimit'],
  211. $request['paramNotNull'],
  212. $request['paramType']
  213. ));
  214. if ($db->getAffectRow() < 1)
  215. throw new \PDOException("addChildRequestParam error");
  216. $param_id = $db->getLastInsertID();
  217. if ($request['paramValueList']) {
  218. foreach ($request['paramValueList'] as $value) {
  219. $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(
  220. $param_id,
  221. $value['value'],
  222. $value['valueDescription']
  223. ));
  224. if ($db->getAffectRow() < 1)
  225. throw new \PDOException("addChildApi error");
  226. };
  227. }
  228. };
  229. // 插入api返回值信息
  230. foreach ($api['resultInfo'] as $result) {
  231. $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(
  232. $api_id,
  233. $result['paramName'],
  234. $result['paramKey'],
  235. $result['paramNotNull']
  236. ));
  237. if ($db->getAffectRow() < 1)
  238. throw new \PDOException("addChildResultParam error");
  239. $param_id = $db->getLastInsertID();
  240. if ($result['paramValueList']) {
  241. foreach ($result['paramValueList'] as $value) {
  242. $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(
  243. $param_id,
  244. $value['value'],
  245. $value['valueDescription']
  246. ));
  247. if ($db->getAffectRow() < 1)
  248. throw new \PDOException("addChildParamValue error");
  249. };
  250. }
  251. };
  252. // 插入api缓存数据用于导出
  253. $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(
  254. $project_id,
  255. $group_id,
  256. $api_id,
  257. json_encode($api),
  258. $api['baseInfo']['starred']
  259. ));
  260. if ($db->getAffectRow() < 1) {
  261. throw new \PDOException("addChildApiCache error");
  262. }
  263. }
  264. }
  265. }
  266. }
  267. }
  268. //插入状态码
  269. if (!empty($data['statusCodeGroupList'])) {
  270. // 导入状态码
  271. foreach ($data['statusCodeGroupList'] as $status_codeGroup) {
  272. // 插入分组
  273. $db->prepareExecute('INSERT INTO eo_project_status_code_group (eo_project_status_code_group.projectID,eo_project_status_code_group.groupName) VALUES (?,?);', array(
  274. $project_id,
  275. $status_codeGroup['groupName']
  276. ));
  277. if ($db->getAffectRow() < 1) {
  278. throw new \PDOException("addChildstatusCodeGroup error");
  279. }
  280. $group_id = $db->getLastInsertID();
  281. if (empty($status_codeGroup['statusCodeList']))
  282. continue;
  283. // 插入状态码
  284. foreach ($status_codeGroup['statusCodeList'] as $status_code) {
  285. $db->prepareExecute('INSERT INTO eo_project_status_code (eo_project_status_code.groupID,eo_project_status_code.code,eo_project_status_code.codeDescription) VALUES (?,?,?);', array(
  286. $group_id,
  287. $status_code['code'],
  288. $status_code['codeDescription']
  289. ));
  290. if ($db->getAffectRow() < 1) {
  291. throw new \PDOException("add statusCode error");
  292. }
  293. }
  294. if ($status_codeGroup['statusCodeGroupChildList']) {
  295. $group_id_parent = $group_id;
  296. foreach ($status_codeGroup['statusCodeGroupChildList'] as $status_codeGroup_child) {
  297. // 插入分组
  298. $db->prepareExecute('INSERT INTO eo_project_status_code_group (eo_project_status_code_group.projectID,eo_project_status_code_group.groupName,eo_project_status_code_group.parentGroupID,eo_project_status_code_group.isChild) VALUES (?,?,?,?);', array(
  299. $project_id,
  300. $status_codeGroup_child['groupName'],
  301. $group_id_parent,
  302. 1
  303. ));
  304. if ($db->getAffectRow() < 1) {
  305. throw new \PDOException("addChildStatusCodeGroup error");
  306. }
  307. $group_id = $db->getLastInsertID();
  308. if (empty($status_codeGroup_child['statusCodeList']))
  309. continue;
  310. // 插入状态码
  311. foreach ($status_codeGroup_child['statusCodeList'] as $status_code) {
  312. $db->prepareExecute('INSERT INTO eo_project_status_code (eo_project_status_code.groupID,eo_project_status_code.code,eo_project_status_code.codeDescription) VALUES (?,?,?);', array(
  313. $group_id,
  314. $status_code['code'],
  315. $status_code['codeDescription']
  316. ));
  317. if ($db->getAffectRow() < 1) {
  318. throw new \PDOException("addChildStatusCode error");
  319. }
  320. }
  321. }
  322. }
  323. }
  324. }
  325. //插入文档信息
  326. if (!empty($data['pageGroupList'])) {
  327. //导入状态码
  328. foreach ($data['pageGroupList'] as $pageGroup) {
  329. //插入分组
  330. $db->prepareExecute('INSERT INTO eo_project_document_group(eo_project_document_group.projectID,eo_project_document_group.groupName) VALUES (?,?);', array(
  331. $project_id,
  332. $pageGroup['groupName']
  333. ));
  334. if ($db->getAffectRow() < 1) {
  335. throw new \PDOException("add pageGroup error");
  336. }
  337. $group_id = $db->getLastInsertID();
  338. //插入状态码
  339. foreach ($pageGroup['pageList'] as $page) {
  340. $db->prepareExecute('INSERT INTO eo_project_document(eo_project_document.groupID,eo_project_document.projectID,eo_project_document.contentType,eo_project_document.contentRaw,eo_project_document.content,eo_project_document.title,eo_project_document.updateTime,eo_project_document.userID) VALUES (?,?,?,?,?,?,?,?);', array(
  341. $group_id,
  342. $project_id,
  343. $page['contentType'],
  344. $page['contentRaw'],
  345. $page['content'],
  346. $page['title'],
  347. $page['updateTime'],
  348. $user_id,
  349. ));
  350. if ($db->getAffectRow() < 1) {
  351. throw new \PDOException("add page error");
  352. }
  353. }
  354. if ($pageGroup['pageGroupChildList']) {
  355. $group_id_parent = $group_id;
  356. foreach ($pageGroup['pageGroupChildList'] as $page_group_child) {
  357. //插入分组
  358. $db->prepareExecute('INSERT INTO eo_project_document_group(eo_project_document_group.projectID,eo_project_document_group.groupName,eo_project_document_group.parentGroupID,eo_project_document_group.isChild) VALUES (?,?,?,?);', array(
  359. $project_id,
  360. $page_group_child['groupName'],
  361. $group_id_parent,
  362. 1,
  363. ));
  364. if ($db->getAffectRow() < 1) {
  365. throw new \PDOException("add pageGroup error");
  366. }
  367. $group_id = $db->getLastInsertID();
  368. //插入状态码
  369. foreach ($page_group_child['pageList'] as $page) {
  370. $db->prepareExecute('INSERT INTO eo_project_document(eo_project_document.groupID,eo_project_document.projectID,eo_project_document.contentType,eo_project_document.contentRaw,eo_project_document.content,eo_project_document.title,eo_project_document.updateTime,eo_project_document.userID) VALUES (?,?,?,?,?,?,?,?);', array(
  371. $group_id,
  372. $project_id,
  373. $page['contentType'],
  374. $page['contentRaw'],
  375. $page['content'],
  376. $page['title'],
  377. $page['updateTime'],
  378. $user_id,
  379. ));
  380. if ($db->getAffectRow() < 1)
  381. throw new \PDOException("add page error");
  382. }
  383. }
  384. }
  385. }
  386. }
  387. //插入环境信息
  388. if (!empty($data['env'])) {
  389. foreach ($data['env'] as $env) {
  390. $db->prepareExecute("INSERT INTO eo_api_env (eo_api_env.envName,eo_api_env.projectID) VALUES (?,?);", array(
  391. $env['envName'],
  392. $project_id
  393. ));
  394. if ($db->getAffectRow() < 1)
  395. throw new \PDOException("add env error");
  396. $env_id = $db->getLastInsertID();
  397. $db->prepareExecute("INSERT INTO eo_api_env_front_uri (eo_api_env_front_uri.envID,eo_api_env_front_uri.applyProtocol,eo_api_env_front_uri.uri) VALUES (?,?,?);", array(
  398. $env_id,
  399. $env['frontURI']['applyProtocol'],
  400. $env['frontURI']['uri']
  401. ));
  402. foreach ($env['headerList'] as $header) {
  403. $db->prepareExecute("INSERT INTO eo_api_env_header (eo_api_env_header.envID,eo_api_env_header.applyProtocol,eo_api_env_header.headerName,eo_api_env_header.headerValue) VALUES (?,?,?,?);", array(
  404. $env_id,
  405. $header['applyProtocol'],
  406. $header['headerName'],
  407. $header['headerValue']
  408. ));
  409. }
  410. foreach ($env['paramList'] as $param) {
  411. $db->prepareExecute("INSERT INTO eo_api_env_param (eo_api_env_param.envID,eo_api_env_param.paramKey,eo_api_env_param.paramValue) VALUES (?,?,?);", array(
  412. $env_id,
  413. $param['paramKey'],
  414. $param['paramValue']
  415. ));
  416. }
  417. }
  418. }
  419. } catch (\PDOException $e) {
  420. $db->rollBack();
  421. return FALSE;
  422. }
  423. $db->commit();
  424. return TRUE;
  425. }
  426. /**
  427. * 导入其他
  428. * @param $projectInfo array 项目信息
  429. * @param $groupInfoList array 分组信息
  430. * @param $userID int 用户ID
  431. * @return bool
  432. */
  433. public function importOther(&$projectInfo, &$groupInfoList, &$userID)
  434. {
  435. $db = getDatabase();
  436. try {
  437. // 开始事务
  438. $db->beginTransaction();
  439. // 插入项目
  440. $db->prepareExecute('INSERT INTO eo_project(eo_project.projectName,eo_project.projectType,eo_project.projectVersion,eo_project.projectUpdateTime) VALUES (?,?,?,?);', array(
  441. $projectInfo['projectName'],
  442. $projectInfo['projectType'],
  443. $projectInfo['projectVersion'],
  444. date('Y-m-d H:i:s', time())
  445. ));
  446. if ($db->getAffectRow() < 1)
  447. throw new \PDOException("addProject error");
  448. $projectID = $db->getLastInsertID();
  449. // 生成项目与用户的联系
  450. $db->prepareExecute('INSERT INTO eo_conn_project (eo_conn_project.projectID,eo_conn_project.userID,eo_conn_project.userType) VALUES (?,?,0);', array(
  451. $projectID,
  452. $userID
  453. ));
  454. if ($db->getAffectRow() < 1)
  455. throw new \PDOException("addConnProject error");
  456. if (is_array($groupInfoList)) {
  457. foreach ($groupInfoList as $groupInfo) {
  458. $db->prepareExecute('INSERT INTO eo_api_group (eo_api_group.groupName,eo_api_group.projectID) VALUES (?,?);', array(
  459. $groupInfo['groupName'],
  460. $projectID
  461. ));
  462. if ($db->getAffectRow() < 1)
  463. throw new \PDOException("addGroup error");
  464. $groupID = $db->getLastInsertID();
  465. if (is_array($groupInfo['apiList'])) {
  466. foreach ($groupInfo['apiList'] as $api) {
  467. // 插入api基本信息
  468. $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(
  469. $api['baseInfo']['apiName'],
  470. $api['baseInfo']['apiURI'],
  471. $api['baseInfo']['apiProtocol'],
  472. $api['baseInfo']['apiSuccessMock'],
  473. $api['baseInfo']['apiFailureMock'],
  474. $api['baseInfo']['apiRequestType'],
  475. $api['baseInfo']['apiStatus'],
  476. $groupID,
  477. $projectID,
  478. $api['baseInfo']['starred'],
  479. $api['baseInfo']['apiNoteType'],
  480. $api['baseInfo']['apiNoteRaw'],
  481. $api['baseInfo']['apiNote'],
  482. $api['baseInfo']['apiRequestParamType'],
  483. $api['baseInfo']['apiRequestRaw'],
  484. $api['baseInfo']['apiUpdateTime'],
  485. $userID
  486. ));
  487. if ($db->getAffectRow() < 1)
  488. throw new \PDOException("addApi error");
  489. $apiID = $db->getLastInsertID();
  490. // 插入header信息
  491. if (is_array($api['headerInfo'])) {
  492. foreach ($api['headerInfo'] as $param) {
  493. $db->prepareExecute('INSERT INTO eo_api_header (eo_api_header.headerName,eo_api_header.headerValue,eo_api_header.apiID) VALUES (?,?,?);', array(
  494. $param['headerName'],
  495. $param['headerValue'],
  496. $apiID
  497. ));
  498. if ($db->getAffectRow() < 1)
  499. throw new \PDOException("addHeader error");
  500. }
  501. }
  502. // 插入api请求值信息
  503. if (is_array($api['requestInfo'])) {
  504. foreach ($api['requestInfo'] as $param) {
  505. $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(
  506. $apiID,
  507. $param['paramName'],
  508. $param['paramKey'],
  509. ($param['paramValue']) ? $param['paramValue'] : "",
  510. $param['paramLimit'],
  511. $param['paramNotNull'],
  512. $param['paramType']
  513. ));
  514. if ($db->getAffectRow() < 1)
  515. throw new \PDOException("addRequestParam error");
  516. $paramID = $db->getLastInsertID();
  517. if (is_array($param['paramValueList'])) {
  518. foreach ($param['paramValueList'] as $value) {
  519. $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(
  520. $paramID,
  521. $value['value'],
  522. $value['valueDescription']
  523. ));
  524. if ($db->getAffectRow() < 1)
  525. throw new \PDOException("addRequestParamValue error");
  526. };
  527. }
  528. };
  529. }
  530. // 插入api返回值信息
  531. if (is_array($api['resultInfo'])) {
  532. foreach ($api['resultInfo'] as $param) {
  533. $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(
  534. $apiID,
  535. $param['paramName'],
  536. $param['paramKey'],
  537. $param['paramNotNull']
  538. ));
  539. if ($db->getAffectRow() < 1)
  540. throw new \PDOException("addResultParam error");
  541. $paramID = $db->getLastInsertID();
  542. if (is_array($param['paramValueList'])) {
  543. foreach ($param['paramValueList'] as $value) {
  544. $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(
  545. $paramID,
  546. $value['value'],
  547. $value['valueDescription']
  548. ));
  549. if ($db->getAffectRow() < 1)
  550. throw new \PDOException("addResultParamValue error");
  551. };
  552. }
  553. };
  554. }
  555. // 插入api缓存数据用于导出
  556. $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(
  557. $projectID,
  558. $groupID,
  559. $apiID,
  560. json_encode($api),
  561. 0
  562. ));
  563. if ($db->getAffectRow() < 1) {
  564. throw new \PDOException("addApiCache error");
  565. }
  566. }
  567. }
  568. if (is_array($groupInfo['childGroupList'])) {
  569. foreach ($groupInfo['childGroupList'] as $childGroupInfo) {
  570. $db->prepareExecute('INSERT INTO eo_api_group (eo_api_group.groupName,eo_api_group.projectID,eo_api_group.parentGroupID,eo_api_group.isChild) VALUES (?,?,?,?);', array(
  571. $childGroupInfo['groupName'],
  572. $projectID,
  573. $groupID,
  574. 1
  575. ));
  576. if ($db->getAffectRow() < 1)
  577. throw new \PDOException("addChildGroup error");
  578. $childGroupID = $db->getLastInsertID();
  579. if (is_array($childGroupInfo['apiList'])) {
  580. foreach ($childGroupInfo['apiList'] as $api) {
  581. // 插入api基本信息
  582. $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(
  583. $api['baseInfo']['apiName'],
  584. $api['baseInfo']['apiURI'],
  585. $api['baseInfo']['apiProtocol'],
  586. $api['baseInfo']['apiSuccessMock'],
  587. $api['baseInfo']['apiFailureMock'],
  588. $api['baseInfo']['apiRequestType'],
  589. $api['baseInfo']['apiStatus'],
  590. $childGroupID,
  591. $projectID,
  592. $api['baseInfo']['starred'],
  593. $api['baseInfo']['apiNoteType'],
  594. $api['baseInfo']['apiNoteRaw'],
  595. $api['baseInfo']['apiNote'],
  596. $api['baseInfo']['apiRequestParamType'],
  597. $api['baseInfo']['apiRequestRaw'],
  598. $api['baseInfo']['apiUpdateTime'],
  599. $userID
  600. ));
  601. if ($db->getAffectRow() < 1)
  602. throw new \PDOException("addChildGroupApi error");
  603. $apiID = $db->getLastInsertID();
  604. // 插入header信息
  605. if (is_array($api['headerInfo'])) {
  606. foreach ($api['headerInfo'] as $param) {
  607. $db->prepareExecute('INSERT INTO eo_api_header (eo_api_header.headerName,eo_api_header.headerValue,eo_api_header.apiID) VALUES (?,?,?);', array(
  608. $param['headerName'],
  609. $param['headerValue'],
  610. $apiID
  611. ));
  612. if ($db->getAffectRow() < 1)
  613. throw new \PDOException("addChildGroupHeader error");
  614. }
  615. }
  616. // 插入api请求值信息
  617. if (is_array($api['requestInfo'])) {
  618. foreach ($api['requestInfo'] as $param) {
  619. $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(
  620. $apiID,
  621. $param['paramName'],
  622. $param['paramKey'],
  623. ($param['paramValue']) ? $param['paramValue'] : "",
  624. $param['paramLimit'],
  625. $param['paramNotNull'],
  626. $param['paramType']
  627. ));
  628. if ($db->getAffectRow() < 1)
  629. throw new \PDOException("addChildGroupRequestParam error");
  630. $paramID = $db->getLastInsertID();
  631. if (is_array($param['paramValueList'])) {
  632. foreach ($param['paramValueList'] as $value) {
  633. $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(
  634. $paramID,
  635. $value['value'],
  636. $value['valueDescription']
  637. ));
  638. if ($db->getAffectRow() < 1)
  639. throw new \PDOException("addChildGroupRequestParamValue error");
  640. };
  641. }
  642. };
  643. }
  644. // 插入api返回值信息
  645. if (is_array($api['resultInfo'])) {
  646. foreach ($api['resultInfo'] as $param) {
  647. $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(
  648. $apiID,
  649. $param['paramName'],
  650. $param['paramKey'],
  651. $param['paramNotNull']
  652. ));
  653. if ($db->getAffectRow() < 1)
  654. throw new \PDOException("addChildGroupResultParam error");
  655. $paramID = $db->getLastInsertID();
  656. if (is_array($param['paramValueList'])) {
  657. foreach ($param['paramValueList'] as $value) {
  658. $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(
  659. $paramID,
  660. $value['value'],
  661. $value['valueDescription']
  662. ));
  663. if ($db->getAffectRow() < 1)
  664. throw new \PDOException("addChildGroupResultParamValue error");
  665. };
  666. }
  667. };
  668. }
  669. // 插入api缓存数据用于导出
  670. $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(
  671. $projectID,
  672. $childGroupID,
  673. $apiID,
  674. json_encode($api),
  675. 0
  676. ));
  677. if ($db->getAffectRow() < 1) {
  678. throw new \PDOException("addChildGroupApiCache error");
  679. }
  680. }
  681. }
  682. }
  683. }
  684. }
  685. }
  686. } catch (\PDOException $e) {
  687. var_dump($e->getMessage());
  688. $db->rollBack();
  689. return FALSE;
  690. }
  691. $db->commit();
  692. return TRUE;
  693. }
  694. }
  695. ?>