yapi/common/HandleImportData.js
2018-04-28 14:03:47 +08:00

139 lines
3.4 KiB
JavaScript

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 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 res => {
const cats = await handleAddCat(res.cats);
if (cats === false) {
return;
}
res = res.apis;
let len = res.length;
let count = 0;
let successNum = len;
let existNum = 0;
if (len === 0) {
messageError(`解析数据为空`);
return;
}
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) {
// 开启同步功能
count++;
let apipath = "/api/interface/save"
if(isNode){
apipath = 'http://127.0.0.1:' + port + apipath
}
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 await handleAddInterface(res);
}
module.exports = handle;