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