运维服务中台
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 

85 lines
2.3 KiB

'use strict';
async function bindAnxin2pep (ctx) {
const transaction = await ctx.fs.dc.orm.transaction();
try {
const models = ctx.fs.dc.models;
const { clickHouse } = ctx.app.fs
const { bindId, name, pepProjectId, anxinProjectId = [], app = [] } = ctx.request.body
let bindId_ = bindId
const existRes = await models.ProjectCorrelation.findOne({
where: {
pepProjectId: pepProjectId
}
})
let storageData = {
name, pepProjectId, anxinProjectId,
}
if (bindId_) {
if (!existRes) {
throw '尚无已绑定的项企项目'
}
// 修改
await models.ProjectCorrelation.update(storageData, {
where: {
pepProjectId: pepProjectId
},
transaction
})
} else {
// 新增
if (existRes) {
// 但是有之前的数据
if (existRes.del) {
// 不过之前的删除了
} else {
// 没有删除 重复添加
throw '当前项企项目已绑定'
}
} else {
const createRes = await models.ProjectCorrelation.create(storageData, {
transaction
})
bindId_ = createRes.id
await models.ProjectApp.bulkCreate(app.map((a, i, arr) => {
if (!a.name || !a.url) {
throw `${a.name} ${a.url} 缺少必要参数`
}
let curUrlArr = a.url.split('://')
if(curUrlArr.length < 2){
throw `${a.name} ${a.url} url 地址错误`
}
for (let ii = i; ii < arr.length; ii++) {
let
}
return {
name: a.name,
url: a.url,
projectId: bindId_,
lock: false,
}
}))
}
}
await transaction.commit();
ctx.status = 204;
} catch (error) {
await transaction.rollback();
ctx.fs.logger.error(`path: ${ctx.path}, error: ${error}`);
ctx.status = 400;
ctx.body = {
message: typeof error == 'string' ? error : undefined
}
}
}
module.exports = {
bindAnxin2pep
};