diff --git a/api/app/lib/controllers/latestMetadata/index.js b/api/app/lib/controllers/latestMetadata/index.js index cb8d6c3..6cac397 100644 --- a/api/app/lib/controllers/latestMetadata/index.js +++ b/api/app/lib/controllers/latestMetadata/index.js @@ -167,17 +167,17 @@ async function getMetadataDatabases(ctx) { async function getMetadataFiles(ctx) { try { const models = ctx.fs.dc.models; - const { catalog, limit, offset, keywords, orderBy = 'createAt', orderDirection = 'desc' } = ctx.query; + const { catalog, limit, offset, keywords, orderBy = 'updateAt', orderDirection = 'desc' } = ctx.query; const where = { catalog: catalog }; if (keywords) { where['$or'] = [{ name: { $iLike: `%${keywords}%` } }, { type: { $iLike: `%${keywords}%` } }] } const findObj = { include: [ - { - model: models.User, - attributes: ['id', 'name', 'username'], - }, + // { + // model: models.User, + // attributes: ['id', 'name', 'username'], + // }, { model: models.TagFile, include: [{ @@ -248,11 +248,14 @@ async function getMetadataModels(ctx) { try { const models = ctx.fs.dc.models; const { modelTypes } = ctx.query; - const rslt = await models.MetaModel.findAll({ - where: { - modelType: { $in: modelTypes } - } - }); + let rslt = []; + if (modelTypes) { + rslt = await models.MetaModel.findAll({ + where: { + modelType: { $in: modelTypes.split(',') } + } + }); + } ctx.status = 200; ctx.body = rslt; } catch (error) { @@ -307,7 +310,7 @@ async function putMetadataDatabases(ctx) { ctx.status = 400; ctx.body = { message: '该元数据名称或代码已存在' } } else { - await models.MetadataDatabase.update(ctx.request.body, { where: { id: id } }); + await models.MetadataDatabase.update({ updateAt: moment(), ...ctx.request.body }, { where: { id: id } }); ctx.status = 200; ctx.body = { message: '修改元数据成功' } } @@ -544,6 +547,113 @@ async function getMetadataResourceApplications(ctx) { } } } + +//新建文件元数据 +async function postMetadataFiles(ctx) { + try { + const { name, catalog, type, size } = ctx.request.body; + const models = ctx.fs.dc.models; + const postOne = await models.MetadataFile.findOne({ + where: { name: name, catalog: catalog } + }); + if (postOne) { + ctx.status = 400; + ctx.body = { message: '该资源目录下元数据名称已存在' } + } else { + if (!name || !catalog || !type) { + ctx.body = { message: '参数不全,请重新配置' } + ctx.status = 400; + } else { + await models.MetadataFile.create({ createAt: 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 putMetadataFiles(ctx) { + try { + const { id } = ctx.params; + const { catalog, name } = ctx.request.body; + const models = ctx.fs.dc.models; + let metadataFileInfo = await models.MetadataFile.findOne({ where: { id } }); + if (metadataFileInfo) { + const putOne = await models.MetadataFile.findOne({ where: { id: { $not: id }, catalog: catalog, name: name } }); + if (putOne) { + ctx.status = 400; + ctx.body = { message: '该元数据名称已存在' } + } else { + await models.MetadataFile.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 delMetadataFiles(ctx) { + const transaction = await ctx.fs.dc.orm.transaction(); + try { + const models = ctx.fs.dc.models; + const { id } = ctx.params; + let metadataFileInfo = await models.MetadataFile.findOne({ where: { id } }); + if (metadataFileInfo) { + let deletable = true; + let tagFileInfo = await models.TagFile.findOne({ where: { file: id } }); + if (tagFileInfo) { + ctx.status = 400; + ctx.body = { message: '该元数据已被打标' } + deletable = false; + } else { + let resourceConsumptionInfo = await models.ResourceConsumption.findOne({ + where: { + resourceName: metadataFileInfo.name, + resourceType: '文件' + } + }); + if (resourceConsumptionInfo) { + ctx.status = 400; + ctx.body = { message: '该元数据存在资源申请' } + deletable = false; + } + } + if (deletable) { + await models.MetadataFile.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 = { getResourceCatalog, postResourceCatalog, @@ -560,5 +670,8 @@ module.exports = { postTagMetadata, getTagMetadata, postMetadataResourceApplications, - getMetadataResourceApplications + getMetadataResourceApplications, + postMetadataFiles, + putMetadataFiles, + delMetadataFiles } \ No newline at end of file diff --git a/api/app/lib/routes/latestMetadata/index.js b/api/app/lib/routes/latestMetadata/index.js index af86797..50e4d4c 100644 --- a/api/app/lib/routes/latestMetadata/index.js +++ b/api/app/lib/routes/latestMetadata/index.js @@ -50,4 +50,13 @@ module.exports = function (app, router, opts) { app.fs.api.logAttr['GET/resource-consumption/applications'] = { content: '获取元数据资源申请记录', visible: true }; router.get('/resource-consumption/applications', latestMetadata.getMetadataResourceApplications); + + app.fs.api.logAttr['POST/metadata/files'] = { content: '新建文件元数据', visible: true }; + router.post('/metadata/files', latestMetadata.postMetadataFiles); + + app.fs.api.logAttr['PUT/metadata/files/:id'] = { content: '修改文件元数据', visible: true }; + router.put('/metadata/files/:id', latestMetadata.putMetadataFiles); + + app.fs.api.logAttr['DEL/metadata/files/:id'] = { content: '删除文件元数据', visible: true }; + router.delete('/metadata/files/:id', latestMetadata.delMetadataFiles); }; \ No newline at end of file