zmh
2 years ago
6 changed files with 185 additions and 4 deletions
@ -0,0 +1,154 @@ |
|||||
|
'use strict'; |
||||
|
|
||||
|
const moment = require("moment/moment"); |
||||
|
|
||||
|
//获取表业务元数据列表
|
||||
|
async function getBusinessMetadataDatabases(ctx) { |
||||
|
try { |
||||
|
const models = ctx.fs.dc.models; |
||||
|
const { catalog, limit, offset, keywords, orderBy = 'updateAt', orderDirection = 'desc', id = null } = ctx.query; |
||||
|
const where = { type: '表' }; |
||||
|
if (catalog) { |
||||
|
where.catalog = catalog; |
||||
|
} |
||||
|
if (id) { |
||||
|
where.parent = id; |
||||
|
} |
||||
|
if (keywords) { |
||||
|
where['$or'] = [{ name: { $iLike: `%${keywords}%` } }, |
||||
|
{ code: { $iLike: `%${keywords}%` } }, |
||||
|
{ type: { $iLike: `%${keywords}%` } }] |
||||
|
} |
||||
|
const findObj = { |
||||
|
include: [{ |
||||
|
model: models.BusinessMetadataDatabase, |
||||
|
include: [ |
||||
|
{ |
||||
|
model: models.User, |
||||
|
attributes: ['id', 'name', 'username'], |
||||
|
}] |
||||
|
}], |
||||
|
attributes: { exclude: ['catalogKey', 'createAt', 'createBy', 'updateAt'] }, |
||||
|
where: where, |
||||
|
order: [[models.BusinessMetadataDatabase, orderBy, orderDirection + ' NULLS LAST']], |
||||
|
distinct: true |
||||
|
} |
||||
|
if (Number(limit) > 0 && Number(offset) >= 0) { |
||||
|
findObj.offset = Number(offset) * Number(limit); |
||||
|
findObj.limit = Number(limit); |
||||
|
} |
||||
|
const rslt = await models.MetadataDatabase.findAndCountAll(findObj); |
||||
|
let parentIds = rslt.rows.reduce((p, c) => p = p.concat(c.parent), []); |
||||
|
parentIds = [...new Set(parentIds)] |
||||
|
const parentData = await models.MetadataDatabase.findAll({ |
||||
|
where: { id: { $in: parentIds } }, |
||||
|
attributes: ['id', 'name'], |
||||
|
}); |
||||
|
rslt.rows.map(d => { |
||||
|
if (d.parent) { |
||||
|
let data = parentData.filter(p => |
||||
|
p.dataValues.id === d.parent); |
||||
|
if (data && data.length) { |
||||
|
d.dataValues.parentDataName = data[0].dataValues.name; |
||||
|
} |
||||
|
} |
||||
|
}) |
||||
|
ctx.status = 200; |
||||
|
ctx.body = rslt; |
||||
|
} catch (error) { |
||||
|
ctx.fs.logger.error(`path: ${ctx.path}, error: ${error}`); |
||||
|
ctx.status = 400; |
||||
|
ctx.body = { |
||||
|
"message": "获取业务元数据列表失败" |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
//新建表业务元数据
|
||||
|
async function postBusinessMetadataDatabases(ctx) { |
||||
|
try { |
||||
|
const { resourceName, resourceAbstract, resourceProvider, resourceCategory, resourceId, metadataId, |
||||
|
createBy, metadataDatabaseId } = ctx.request.body; |
||||
|
const models = ctx.fs.dc.models; |
||||
|
if (!resourceName || !resourceAbstract || !resourceProvider || |
||||
|
!resourceCategory || !resourceId || !metadataId || |
||||
|
!createBy || !metadataDatabaseId) { |
||||
|
ctx.body = { message: '参数不全,请重新配置' } |
||||
|
ctx.status = 400; |
||||
|
} else { |
||||
|
await models.BusinessMetadataDatabase.create({ createAt: moment(), updateAt: moment(), ...ctx.request.body }); |
||||
|
ctx.body = { message: '新建业务元数据成功' } |
||||
|
ctx.status = 200; |
||||
|
} |
||||
|
|
||||
|
} catch (error) { |
||||
|
ctx.fs.logger.error(`path: ${ctx.path}, error: ${error}`); |
||||
|
ctx.status = 400; |
||||
|
ctx.body = { |
||||
|
"message": "新建业务元数据失败" |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
//修改表业务元数据
|
||||
|
async function putBusinessMetadataDatabases(ctx) { |
||||
|
try { |
||||
|
const { id } = ctx.params; |
||||
|
const models = ctx.fs.dc.models; |
||||
|
let businessMetadataInfo = await models.BusinessMetadataDatabase.findOne({ where: { id } }); |
||||
|
if (businessMetadataInfo) { |
||||
|
const { resourceName, resourceAbstract, resourceProvider, resourceCategory, resourceId, metadataId } = ctx.request.body; |
||||
|
if (!resourceName || !resourceAbstract || !resourceProvider || |
||||
|
!resourceCategory || !resourceId || !metadataId) { |
||||
|
ctx.body = { message: '参数不全,请重新配置' } |
||||
|
ctx.status = 400; |
||||
|
} else { |
||||
|
await models.BusinessMetadataDatabase.update({ updateAt: moment(), ...ctx.request.body }, { where: { id: id } }); |
||||
|
ctx.status = 200; |
||||
|
ctx.body = { message: '修改业务元数据成功' } |
||||
|
} |
||||
|
} else { |
||||
|
ctx.status = 400; |
||||
|
ctx.body = { message: '该业务元数据不存在' } |
||||
|
} |
||||
|
} catch (error) { |
||||
|
ctx.fs.logger.error(`path: ${ctx.path}, error: ${error}`); |
||||
|
ctx.status = 400; |
||||
|
ctx.body = { |
||||
|
"message": "修改业务元数据失败" |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
//删除表业务元数据
|
||||
|
async function delBusinessMetadataDatabases(ctx) { |
||||
|
const transaction = await ctx.fs.dc.orm.transaction(); |
||||
|
try { |
||||
|
const models = ctx.fs.dc.models; |
||||
|
const { id } = ctx.params; |
||||
|
let businessMetadataInfo = await models.BusinessMetadataDatabase.findOne({ where: { id } }); |
||||
|
if (businessMetadataInfo) { |
||||
|
await models.BusinessMetadataDatabase.destroy({ |
||||
|
where: { id: id }, |
||||
|
transaction |
||||
|
}) |
||||
|
await transaction.commit(); |
||||
|
ctx.status = 200; |
||||
|
ctx.body = { message: '删除业务元数据成功' } |
||||
|
} else { |
||||
|
ctx.status = 400; |
||||
|
ctx.body = { message: '该业务元数据不存在' } |
||||
|
} |
||||
|
} catch (error) { |
||||
|
await transaction.rollback(); |
||||
|
ctx.fs.logger.error(`path: ${ctx.path}, error: ${error}`); |
||||
|
ctx.status = 400; |
||||
|
ctx.body = { message: '删除业务元数据失败' } |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
module.exports = { |
||||
|
getBusinessMetadataDatabases, |
||||
|
postBusinessMetadataDatabases, |
||||
|
putBusinessMetadataDatabases, |
||||
|
delBusinessMetadataDatabases, |
||||
|
} |
@ -0,0 +1,17 @@ |
|||||
|
'use strict'; |
||||
|
|
||||
|
const businessMetadata = require('../../controllers/businessMetadata'); |
||||
|
|
||||
|
module.exports = function (app, router, opts) { |
||||
|
app.fs.api.logAttr['GET/business/metadata/databases'] = { content: '获取表业务元数据列表', visible: false }; |
||||
|
router.get('/business/metadata/databases', businessMetadata.getBusinessMetadataDatabases); |
||||
|
|
||||
|
app.fs.api.logAttr['POST/business/metadata/databases'] = { content: '新建表业务元数据', visible: true }; |
||||
|
router.post('/business/metadata/databases', businessMetadata.postBusinessMetadataDatabases); |
||||
|
|
||||
|
app.fs.api.logAttr['PUT/business/metadata/databases/:id'] = { content: '修改表业务元数据', visible: true }; |
||||
|
router.put('/business/metadata/databases/:id', businessMetadata.putBusinessMetadataDatabases); |
||||
|
|
||||
|
app.fs.api.logAttr['DEL/business/metadata/databases/:id'] = { content: '删除表业务元数据', visible: true }; |
||||
|
router.delete('/business/metadata/databases/:id', businessMetadata.delBusinessMetadataDatabases); |
||||
|
}; |
Loading…
Reference in new issue