|
|
const { Dept } = require("../models/dept");const { validatedRequest } = require("../utils/middleware/validatedRequest");const { strictMultiUserRoleValid, ROLES} = require("../utils/middleware/multiUserProtected");function deptEndpoints(app) { if (!app) return;
app.get( "/dept/list", [validatedRequest, strictMultiUserRoleValid([ROLES.admin])], async (_request, response) => { try { const depts = await Dept.where(); response.status(200).json({ depts }); } catch (e) { console.error(e); response.sendStatus(500).end(); } } );
app.post("/dept/add", [validatedRequest, strictMultiUserRoleValid([ROLES.admin])], async (request, response) => { try { const dept = request.body; // 获取请求体中的部门数据
// 检查部门名称是否唯一
const isUnique = await Dept.checkDeptNameUnique(dept); if (!isUnique) { return response.status(400).json({ success: false, message: `新增部门 '${dept.deptName}' 失败,部门名称已存在`, }); }; // 按照deptId查询父部门
const parentDept = await Dept.get({ deptId: dept.parentId }); dept.ancestors = parentDept.dept.ancestors + ',' + dept.parentId; // 插入部门数据
const insertedDept = await Dept.insertDept(dept); // 返回成功响应
response.status(200).json({ success: true, data: insertedDept, }); } catch (error) { // 处理错误
console.error("添加部门失败:", error); response.status(500).json({ success: false, message: "添加部门失败,服务器内部错误", }); } });
app.post("/dept/edit", [validatedRequest, strictMultiUserRoleValid([ROLES.admin])], async (request, response) => { try { const dept = request.body; // 获取请求体中的部门数据
// 检查部门名称是否唯一
const isUnique = await Dept.checkDeptNameUnique(dept); if (!isUnique) { return response.status(400).json({ success: false, message: `修改部门 '${dept.deptName}' 失败,部门名称已存在`, }); }
// 检查上级部门是否是自己
if (dept.parentId === dept.deptId) { return response.status(400).json({ success: false, message: `修改部门 '${dept.deptName}' 失败,上级部门不能是自己`, }); }
// 检查部门是否包含未停用的子部门
if (dept.status === 1) { const normalChildrenCount = await Dept.selectNormalChildrenDeptById(dept.deptId); if (normalChildrenCount > 0) { return response.status(400).json({ success: false, message: "该部门包含未停用的子部门!", }); } } // 更新部门数据
const updatedDept = await Dept.update(dept); // 返回成功响应
response.status(200).json({ success: true, data: updatedDept, }); } catch (error) { // 处理错误
console.error("修改部门失败:", error); response.status(500).json({ success: false, message: "修改部门失败,服务器内部错误", }); } });
// 删除部门的接口
app.delete("/dept/:deptId", [validatedRequest, strictMultiUserRoleValid([ROLES.admin])], async (request, response) => { try { const deptId = parseInt(request.params.deptId); // 获取部门 ID
// 检查部门是否有子部门
const hasChild = await Dept.hasChildByDeptId(deptId); if (hasChild) { return response.status(400).json({ success: false, message: "存在下级部门,不允许删除", }); }
// 检查部门是否存在用户
const hasUser = await Dept.checkDeptExistUser(deptId); if (hasUser) { return response.status(400).json({ success: false, message: "部门存在用户,不允许删除", }); }
// // 检查部门数据权限
// const hasDataScope = await Dept.checkDeptDataScope(deptId);
// if (!hasDataScope) {
// return response.status(403).json({
// success: false,
// message: "无权限删除该部门",
// });
// }
// 删除部门
const deletedDept = await Dept.deleteDeptById(deptId);
// 返回成功响应
response.status(200).json({ success: true, data: deletedDept, }); } catch (error) { // 处理错误
console.error("删除部门失败:", error); response.status(500).json({ success: false, message: "删除部门失败,服务器内部错误", }); } });}
module.exports = { deptEndpoints };
|