WARCH2 增加企微审批历史只读查询

这个提交包含在:
2026-05-20 10:23:23 +08:00
父节点 7a32399ca9
当前提交 123ebc9c95
共修改 23 个文件,包含 1358 行新增和 36 行删除
+66
查看文件
@@ -0,0 +1,66 @@
const { getApprovalArchiveDetail, listApprovalArchives } = require("../services/integrations/wecomApprovalArchive");
const { AppError } = require("../utils/AppError");
const { sendData } = require("../utils/reply");
const ARCHIVE_VIEW_PERMISSIONS = new Set([
"leave.view_own",
"attendance.view_own",
"leave.view_all",
"attendance.view_all",
"*",
]);
function notFound() {
return new AppError({
code: "SYS_404",
message: "Not Found",
statusCode: 404,
});
}
function hasArchiveViewPermission(employee = {}) {
const roleCodes = employee.roleCodes || [];
const permissionCodes = employee.permissionCodes || [];
return roleCodes.includes("admin")
|| roleCodes.includes("hr")
|| permissionCodes.some((code) => ARCHIVE_VIEW_PERMISSIONS.has(code));
}
function ensureArchiveViewPermission(request) {
if (hasArchiveViewPermission(request.employee)) {
return;
}
throw new AppError({
code: "PERM_001",
message: "无权限",
statusCode: 403,
details: { permission: "leave.view_own|attendance.view_own" },
});
}
async function wecomApprovalArchiveRoutes(fastify) {
fastify.get("/wecom/approval-archive", { preHandler: fastify.authenticate }, async (request, reply) => {
ensureArchiveViewPermission(request);
const result = await listApprovalArchives({
prisma: fastify.prisma,
actor: request.employee,
query: request.query || {},
});
return sendData(reply, request, result);
});
fastify.get("/wecom/approval-archive/:id", { preHandler: fastify.authenticate }, async (request, reply) => {
ensureArchiveViewPermission(request);
const item = await getApprovalArchiveDetail({
prisma: fastify.prisma,
actor: request.employee,
archiveId: request.params?.id,
});
if (!item) {
throw notFound();
}
return sendData(reply, request, { item });
});
}
module.exports = wecomApprovalArchiveRoutes;