mock平台

HandleImportData.js 3.5KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137
  1. const _ = require('underscore');
  2. const axios = require('axios');
  3. const isNode = typeof global == 'object' && global.global === global;
  4. async function handle(
  5. res,
  6. projectId,
  7. selectCatid,
  8. menuList,
  9. basePath,
  10. dataSync,
  11. messageError,
  12. messageSuccess,
  13. callback,
  14. token,
  15. port
  16. ) {
  17. const handleAddCat = async cats => {
  18. let catsObj = {};
  19. if (cats && Array.isArray(cats)) {
  20. for (let i = 0; i < cats.length; i++) {
  21. let cat = cats[i];
  22. let findCat = _.find(menuList, menu => menu.name === cat.name);
  23. catsObj[cat.name] = cat;
  24. if (findCat) {
  25. cat.id = findCat._id;
  26. } else {
  27. let apipath = '/api/interface/add_cat';
  28. if (isNode) {
  29. apipath = 'http://127.0.0.1:' + port + apipath;
  30. }
  31. let data = {
  32. name: cat.name,
  33. project_id: projectId,
  34. desc: cat.desc,
  35. token
  36. };
  37. let result = await axios.post(apipath, data);
  38. if (result.data.errcode) {
  39. messageError(result.data.errmsg);
  40. callback({ showLoading: false });
  41. return false;
  42. }
  43. cat.id = result.data.data._id;
  44. }
  45. }
  46. }
  47. return catsObj;
  48. };
  49. const handleAddInterface = async res => {
  50. const cats = await handleAddCat(res.cats);
  51. if (cats === false) {
  52. return;
  53. }
  54. res = res.apis;
  55. let len = res.length;
  56. let count = 0;
  57. let successNum = len;
  58. let existNum = 0;
  59. if (len === 0) {
  60. messageError(`解析数据为空`);
  61. callback({ showLoading: false });
  62. return;
  63. }
  64. for (let index = 0; index < res.length; index++) {
  65. let item = res[index];
  66. let data = Object.assign(item, {
  67. project_id: projectId,
  68. catid: selectCatid
  69. });
  70. if (basePath) {
  71. data.path =
  72. data.path.indexOf(basePath) === 0 ? data.path.substr(basePath.length) : data.path;
  73. }
  74. if (
  75. data.catname &&
  76. cats[data.catname] &&
  77. typeof cats[data.catname] === 'object' &&
  78. cats[data.catname].id
  79. ) {
  80. data.catid = cats[data.catname].id;
  81. }
  82. data.token = token;
  83. if (dataSync !== 'normal') {
  84. // 开启同步功能
  85. count++;
  86. let apipath = '/api/interface/save';
  87. if (isNode) {
  88. apipath = 'http://127.0.0.1:' + port + apipath;
  89. }
  90. data.dataSync = dataSync;
  91. let result = await axios.post(apipath, data);
  92. if (result.data.errcode) {
  93. successNum--;
  94. callback({ showLoading: false });
  95. messageError(result.data.errmsg);
  96. } else {
  97. existNum = existNum + result.data.data.length;
  98. }
  99. } else {
  100. // 未开启同步功能
  101. count++;
  102. let apipath = '/api/interface/add';
  103. if (isNode) {
  104. apipath = 'http://127.0.0.1:' + port + apipath;
  105. }
  106. let result = await axios.post(apipath, data);
  107. if (result.data.errcode) {
  108. successNum--;
  109. if (result.data.errcode == 40022) {
  110. existNum++;
  111. }
  112. if (result.data.errcode == 40033) {
  113. callback({ showLoading: false });
  114. messageError('没有权限');
  115. break;
  116. }
  117. }
  118. }
  119. if (count === len) {
  120. callback({ showLoading: false });
  121. messageSuccess(`成功导入接口 ${successNum} 个, 已存在的接口 ${existNum} 个`);
  122. }
  123. }
  124. };
  125. return await handleAddInterface(res);
  126. }
  127. module.exports = handle;