|
|
@ -9,37 +9,65 @@ async function bindAnxin2pep (ctx) { |
|
|
|
const { userId, pepUserId } = ctx.fs.api |
|
|
|
const { bindId, name, pepProjectId, anxinProjectId = [], appId = [] } = ctx.request.body |
|
|
|
|
|
|
|
if(name && pepProjectId){ |
|
|
|
if (name && pepProjectId) { |
|
|
|
throw '项企项目与自定义项目名称仅可选择一项' |
|
|
|
} |
|
|
|
|
|
|
|
let bindId_ = bindId |
|
|
|
const now = moment() |
|
|
|
const existRes = await models.ProjectCorrelation.findOne({ |
|
|
|
where: { |
|
|
|
pepProjectId: pepProjectId |
|
|
|
}, |
|
|
|
include: { |
|
|
|
model: models.ProjectApp |
|
|
|
// 仅限已有 pepProjectId 的项目
|
|
|
|
const existRes = pepProjectId ? await models.ProjectCorrelation.findOne({ |
|
|
|
where: Object.assign( |
|
|
|
{}, |
|
|
|
pepProjectId ? { |
|
|
|
pepProjectId: pepProjectId |
|
|
|
} : { |
|
|
|
name, |
|
|
|
} |
|
|
|
), |
|
|
|
}) : null |
|
|
|
|
|
|
|
if (name) { |
|
|
|
const pepRepeatNameCount = await clickHouse.projectManage.query(`SELECT COUNT(*) AS count FROM t_pim_project WHERE project_name='${name}'`).toPromise() |
|
|
|
if (pepRepeatNameCount[0].count) { |
|
|
|
throw `已有相同名称【${name}】的项企项目` |
|
|
|
} |
|
|
|
}) |
|
|
|
const pomsRepeatNameRes = await models.ProjectCorrelation.findAll({ |
|
|
|
where: { |
|
|
|
name |
|
|
|
} |
|
|
|
}) |
|
|
|
if (pomsRepeatNameRes.some((pr) => { |
|
|
|
return ( |
|
|
|
( |
|
|
|
// 有修改id但是不等于当前修改id的
|
|
|
|
bindId && pr.id != bindId && !pr.del |
|
|
|
) || ( |
|
|
|
!bindId && ( |
|
|
|
( |
|
|
|
existRes && pr.id != existRes.id && !pr.del |
|
|
|
) || ( |
|
|
|
!existRes && !pr.del |
|
|
|
) |
|
|
|
) |
|
|
|
) |
|
|
|
) |
|
|
|
})) { |
|
|
|
throw `已有相同名称【${name}】的自定义项目` |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
let storageData = { |
|
|
|
name, pepProjectId, anxinProjectId, |
|
|
|
updateTime: now, |
|
|
|
del: false, |
|
|
|
} |
|
|
|
|
|
|
|
if (bindId) { |
|
|
|
// 修改
|
|
|
|
if (!existRes) { |
|
|
|
throw '尚无已绑定的项企项目' |
|
|
|
} |
|
|
|
if (name) { |
|
|
|
|
|
|
|
} |
|
|
|
await models.ProjectCorrelation.update(storageData, { |
|
|
|
where: { |
|
|
|
pepProjectId: pepProjectId |
|
|
|
id: bindId |
|
|
|
}, |
|
|
|
transaction |
|
|
|
}) |
|
|
@ -102,7 +130,7 @@ async function bindAnxin2pep (ctx) { |
|
|
|
async function del (ctx) { |
|
|
|
try { |
|
|
|
const models = ctx.fs.dc.models; |
|
|
|
const { bindId } = ctx.query |
|
|
|
const { bindId } = ctx.params |
|
|
|
|
|
|
|
await models.ProjectCorrelation.update({ |
|
|
|
del: true |
|
|
@ -112,7 +140,7 @@ async function del (ctx) { |
|
|
|
} |
|
|
|
}) |
|
|
|
|
|
|
|
ctx.status = 20; |
|
|
|
ctx.status = 204; |
|
|
|
} catch (error) { |
|
|
|
ctx.fs.logger.error(`path: ${ctx.path}, error: error`); |
|
|
|
ctx.status = 400; |
|
|
|