mirror of
https://github.com/YMFE/yapi.git
synced 2025-01-30 13:20:24 +08:00
139 lines
3.4 KiB
JavaScript
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;
|