fork from bc4552c5a8
This commit is contained in:
159
common/HandleImportData.js
Normal file
159
common/HandleImportData.js
Normal file
@@ -0,0 +1,159 @@
|
||||
const _ = require('underscore');
|
||||
const axios = require('axios');
|
||||
|
||||
|
||||
const isNode = typeof global == 'object' && global.global === global;
|
||||
|
||||
async function handle(
|
||||
res,
|
||||
projectId,
|
||||
selectCatid,
|
||||
menuList,
|
||||
basePath,
|
||||
dataSync,
|
||||
messageError,
|
||||
messageSuccess,
|
||||
callback,
|
||||
token,
|
||||
port
|
||||
) {
|
||||
|
||||
const taskNotice = _.throttle((index, len)=>{
|
||||
messageSuccess(`正在导入,已执行任务 ${index+1} 个,共 ${len} 个`)
|
||||
}, 3000)
|
||||
|
||||
const handleAddCat = async cats => {
|
||||
let catsObj = {};
|
||||
if (cats && Array.isArray(cats)) {
|
||||
for (let i = 0; i < cats.length; i++) {
|
||||
let cat = cats[i];
|
||||
let findCat = _.find(menuList, menu => menu.name === cat.name);
|
||||
catsObj[cat.name] = cat;
|
||||
if (findCat) {
|
||||
cat.id = findCat._id;
|
||||
} else {
|
||||
let apipath = '/api/interface/add_cat';
|
||||
if (isNode) {
|
||||
apipath = 'http://127.0.0.1:' + port + apipath;
|
||||
}
|
||||
|
||||
let data = {
|
||||
name: cat.name,
|
||||
project_id: projectId,
|
||||
desc: cat.desc,
|
||||
token
|
||||
};
|
||||
let result = await axios.post(apipath, data);
|
||||
|
||||
if (result.data.errcode) {
|
||||
messageError(result.data.errmsg);
|
||||
callback({ showLoading: false });
|
||||
return false;
|
||||
}
|
||||
cat.id = result.data.data._id;
|
||||
}
|
||||
}
|
||||
}
|
||||
return catsObj;
|
||||
};
|
||||
|
||||
const handleAddInterface = async info => {
|
||||
const cats = await handleAddCat(info.cats);
|
||||
if (cats === false) {
|
||||
return;
|
||||
}
|
||||
|
||||
const res = info.apis;
|
||||
let len = res.length;
|
||||
let count = 0;
|
||||
let successNum = len;
|
||||
let existNum = 0;
|
||||
if (len === 0) {
|
||||
messageError(`解析数据为空`);
|
||||
callback({ showLoading: false });
|
||||
return;
|
||||
}
|
||||
|
||||
if(info.basePath){
|
||||
let projectApiPath = '/api/project/up';
|
||||
if (isNode) {
|
||||
projectApiPath = 'http://127.0.0.1:' + port + projectApiPath;
|
||||
}
|
||||
|
||||
await axios.post(projectApiPath, {
|
||||
id: projectId,
|
||||
basepath: info.basePath,
|
||||
token
|
||||
})
|
||||
}
|
||||
|
||||
for (let index = 0; index < res.length; index++) {
|
||||
let item = res[index];
|
||||
let data = Object.assign(item, {
|
||||
project_id: projectId,
|
||||
catid: selectCatid
|
||||
});
|
||||
if (basePath) {
|
||||
data.path =
|
||||
data.path.indexOf(basePath) === 0 ? data.path.substr(basePath.length) : data.path;
|
||||
}
|
||||
if (
|
||||
data.catname &&
|
||||
cats[data.catname] &&
|
||||
typeof cats[data.catname] === 'object' &&
|
||||
cats[data.catname].id
|
||||
) {
|
||||
data.catid = cats[data.catname].id;
|
||||
}
|
||||
data.token = token;
|
||||
|
||||
if (dataSync !== 'normal') {
|
||||
// 开启同步功能
|
||||
count++;
|
||||
let apipath = '/api/interface/save';
|
||||
if (isNode) {
|
||||
apipath = 'http://127.0.0.1:' + port + apipath;
|
||||
}
|
||||
data.dataSync = dataSync;
|
||||
let result = await axios.post(apipath, data);
|
||||
if (result.data.errcode) {
|
||||
successNum--;
|
||||
callback({ showLoading: false });
|
||||
messageError(result.data.errmsg);
|
||||
} else {
|
||||
existNum = existNum + result.data.data.length;
|
||||
}
|
||||
} else {
|
||||
// 未开启同步功能
|
||||
count++;
|
||||
let apipath = '/api/interface/add';
|
||||
if (isNode) {
|
||||
apipath = 'http://127.0.0.1:' + port + apipath;
|
||||
}
|
||||
let result = await axios.post(apipath, data);
|
||||
if (result.data.errcode) {
|
||||
successNum--;
|
||||
if (result.data.errcode == 40022) {
|
||||
existNum++;
|
||||
}
|
||||
if (result.data.errcode == 40033) {
|
||||
callback({ showLoading: false });
|
||||
messageError('没有权限');
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
if (count === len) {
|
||||
callback({ showLoading: false });
|
||||
messageSuccess(`成功导入接口 ${successNum} 个, 已存在的接口 ${existNum} 个`);
|
||||
return;
|
||||
}
|
||||
|
||||
taskNotice(index, res.length)
|
||||
}
|
||||
};
|
||||
|
||||
return await handleAddInterface(res);
|
||||
}
|
||||
|
||||
module.exports = handle;
|
||||
Reference in New Issue
Block a user