wenlele 3 years ago
parent
commit
e7878c9ce0
  1. 22
      api/app/lib/controllers/alarm/app.js
  2. 62
      api/app/lib/controllers/project/bind.js
  3. 9
      api/app/lib/controllers/project/index.js
  4. 11
      api/app/lib/models/project_correlation.js
  5. 5
      script/0.0.3/2.alter_table_project_correlation.sql

22
api/app/lib/controllers/alarm/app.js

@ -198,7 +198,7 @@ async function apiErrorList (ctx) {
$or: []
},
include: [{
model: models.ProjectApp,
model: models.App,
where: {
},
@ -225,10 +225,10 @@ async function apiErrorList (ctx) {
if (projectRes.length) {
findOption.where.$or.push(
{
'$projectApp.projectCorrelation.pep_project_id$': {
'$app->projectCorrelations.pep_project_id$': {
$in: projectRes.map(p => p.id)
},
'$projectApp.name$': { $like: `%${keyword}%` }
'$app.name$': { $like: `%${keyword}%` }
}
)
}
@ -276,8 +276,10 @@ async function apiErrorList (ctx) {
// 没有关键字筛选 查询关联的项目信息
let pepProjectIds = new Set()
for (let lr of listRes.rows) {
if (lr.projectApp && lr.projectApp.projectCorrelation) {
pepProjectIds.add(lr.projectApp.projectCorrelation.pepProjectId)
if (lr.app && lr.app.projectCorrelations) {
for (let p of lr.app.projectCorrelations) {
pepProjectIds.add(p.pepProjectId)
}
}
}
if (pepProjectIds.size) {
@ -289,10 +291,12 @@ async function apiErrorList (ctx) {
}
for (let lr of listRes.rows) {
if (lr.projectApp && lr.projectApp.projectCorrelation) {
let corPepProject = projectRes.find(p => p.id == lr.projectApp.projectCorrelation.pepProjectId)
if (corPepProject) {
lr.projectApp.projectCorrelation.dataValues.pepProject = corPepProject
if (lr.app && lr.app.projectCorrelations) {
for (let p of lr.app.projectCorrelations) {
let corPepProject = projectRes.find(pr => pr.id == p.pepProjectId)
if (corPepProject) {
p.dataValues.pepProject = corPepProject
}
}
}
}

62
api/app/lib/controllers/project/bind.js

@ -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;

9
api/app/lib/controllers/project/index.js

@ -29,6 +29,7 @@ async function pomsProject (ctx) {
where: {
del: false
},
order: [['updateTime', 'desc']],
distinct: true,
include: {
model: models.App,
@ -47,9 +48,13 @@ async function pomsProject (ctx) {
let pepProjectIds = new Set()
let anxinProjectIds = new Set()
for (let p of proRes.rows) {
pepProjectIds.add(p.pepProjectId)
if (p.pepProjectId) {
pepProjectIds.add(p.pepProjectId)
}
for (let ap of p.anxinProjectId) {
anxinProjectIds.add(ap)
if (ap) {
anxinProjectIds.add(ap)
}
}
}
const pepProjectRes = pepProjectIds.size ?

11
api/app/lib/models/project_correlation.js

@ -68,7 +68,16 @@ module.exports = dc => {
primaryKey: false,
field: "del",
autoIncrement: false
}
},
updateTime: {
type: DataTypes.DATE,
allowNull: false,
defaultValue: null,
comment: null,
primaryKey: false,
field: "update_time",
autoIncrement: false
},
}, {
tableName: "project_correlation",
comment: "",

5
script/0.0.3/2.alter_table_project_correlation.sql

@ -6,4 +6,7 @@ alter table project_correlation
alter table project_correlation
add del bool default false;
alter table project_correlation alter column pep_project_id drop not null;
alter table project_correlation alter column pep_project_id drop not null;
alter table project_correlation
add update_time timestamp with time zone;
Loading…
Cancel
Save