You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 

157 lines
4.5 KiB

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