const { DeptDocument } = require("../models/deptDocument"); const { validatedRequest } = require("../utils/middleware/validatedRequest"); const { strictMultiUserRoleValid, ROLES, } = require("../utils/middleware/multiUserProtected"); function deptDocumentEndpoints(app) { if (!app) return; // 获取组织机构文档列表 app.get( "/deptDocument/list", [validatedRequest, strictMultiUserRoleValid([ROLES.admin, ROLES.manager])], async (_request, response) => { try { const deptDocuments = await DeptDocument.where(); response.status(200).json({ deptDocuments }); } catch (e) { console.error(e); response.sendStatus(500).end(); } } ); // 添加组织机构文档 app.post( "/deptDocument/add", [validatedRequest, strictMultiUserRoleValid([ROLES.admin, ROLES.manager])], async (request, response) => { try { const documentData = request.body; // 获取请求体中的文档数据 // 检查文档路径是否唯一 const isDocpathUnique = await DeptDocument.checkDocpathUnique( documentData.docpath ); if (!isDocpathUnique) { return response.status(400).json({ success: false, message: `文档路径 '${documentData.docpath}' 已存在`, }); } // 插入文档数据 const { deptDocument, error } = await DeptDocument.create(documentData); if (error) { return response.status(500).json({ success: false, message: "添加组织机构文档失败", error: error, }); } // 返回成功响应 response.status(200).json({ success: true, data: deptDocument, }); } catch (error) { console.error("添加组织机构文档失败:", error); response.status(500).json({ success: false, message: "添加组织机构文档失败,服务器内部错误", }); } } ); // 编辑组织机构文档 app.post( "/deptDocument/edit", [validatedRequest, strictMultiUserRoleValid([ROLES.admin, ROLES.manager])], async (request, response) => { try { const documentData = request.body; // 获取请求体中的文档数据 // 检查文档是否存在 const existingDocument = await DeptDocument.get({ id: documentData.id }); if (!existingDocument) { return response.status(404).json({ success: false, message: "文档不存在", }); } // 更新文档数据 const { success, error, deptDocument } = await DeptDocument.update( documentData.id, documentData ); if (!success) { return response.status(500).json({ success: false, message: "编辑组织机构文档失败", error: error, }); } // 返回成功响应 response.status(200).json({ success: true, data: deptDocument, }); } catch (error) { console.error("编辑组织机构文档失败:", error); response.status(500).json({ success: false, message: "编辑组织机构文档失败,服务器内部错误", }); } } ); // 删除组织机构文档 app.delete( "/deptDocument/:id", [validatedRequest, strictMultiUserRoleValid([ROLES.admin, ROLES.manager])], async (request, response) => { try { const documentId = parseInt(request.params.id); // 获取文档 ID // 检查文档是否存在 const existingDocument = await DeptDocument.get({ id: documentId }); if (!existingDocument) { return response.status(404).json({ success: false, message: "文档不存在", }); } // 删除文档 const success = await DeptDocument.delete({ id: documentId }); if (!success) { return response.status(500).json({ success: false, message: "删除组织机构文档失败", }); } // 返回成功响应 response.status(200).json({ success: true, message: "文档删除成功", }); } catch (error) { console.error("删除组织机构文档失败:", error); response.status(500).json({ success: false, message: "删除组织机构文档失败,服务器内部错误", }); } } ); } module.exports = { deptDocumentEndpoints };