Files
Edu/services/teacher-bff/src/admin/admin.resolver.ts

409 lines
11 KiB
TypeScript
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
// Admin ResolverP6 重构ARB-001 裁决:扁平命名)
// admin-portal operations 直接消费根 Query/Mutation 字段(不再使用 AdminQuery/AdminMutation 命名空间)
// 对齐 admin-portal/src/lib/graphql-client.ts 中实际发送的 operations
import type { IResolvers } from "@graphql-tools/utils";
import { AdminService } from "./admin.service.js";
import type { GraphQLOperationContext } from "../graphql/context.js";
/**
* 构建 Admin Resolvers扁平命名挂载在根 Query/Mutation
* 与 teacher.resolver.ts 的 buildResolvers() 合并使用:
* const resolvers = mergeResolvers(buildResolvers(...), buildAdminResolvers(...))
*/
export function buildAdminResolvers(service: AdminService): IResolvers {
return {
Query: {
// ===== 用户与权限管理 =====
currentUser: async (
_parent: unknown,
_args: unknown,
ctx: GraphQLOperationContext,
) => {
return service.getCurrentUser(ctx.callCtx);
},
adminUsers: async (
_parent: unknown,
args: { filter?: unknown },
ctx: GraphQLOperationContext,
) => {
return service.listAdminUsers(ctx.callCtx, args.filter as never);
},
adminUser: async (
_parent: unknown,
args: { id: string },
ctx: GraphQLOperationContext,
) => {
return service.getAdminUser(ctx.callCtx, args.id);
},
adminRoles: async (
_parent: unknown,
_args: unknown,
ctx: GraphQLOperationContext,
) => {
return service.listAdminRoles(ctx.callCtx);
},
adminPermissions: async (
_parent: unknown,
_args: unknown,
ctx: GraphQLOperationContext,
) => {
return service.listAdminPermissions(ctx.callCtx);
},
adminViewports: async (
_parent: unknown,
args: { scope?: string },
ctx: GraphQLOperationContext,
) => {
return service.listAdminViewports(ctx.callCtx, args.scope);
},
// ===== 组织架构 =====
adminOrganization: async (
_parent: unknown,
args: { parentId?: string },
ctx: GraphQLOperationContext,
) => {
return service.listAdminOrganizations(ctx.callCtx, args.parentId);
},
adminClasses: async (
_parent: unknown,
args: { filter?: unknown },
ctx: GraphQLOperationContext,
) => {
return service.listAdminClasses(ctx.callCtx, args.filter as never);
},
adminTeachers: async (
_parent: unknown,
args: { filter?: unknown },
ctx: GraphQLOperationContext,
) => {
return service.listAdminTeachers(ctx.callCtx, args.filter as never);
},
adminStudents: async (
_parent: unknown,
args: { filter?: unknown },
ctx: GraphQLOperationContext,
) => {
return service.listAdminStudents(ctx.callCtx, args.filter as never);
},
// ===== 审计与日志 =====
auditLogs: async (
_parent: unknown,
args: { filter?: unknown },
ctx: GraphQLOperationContext,
) => {
return service.listAuditLogs(ctx.callCtx, args.filter as never);
},
auditOverviewStats: async (
_parent: unknown,
_args: unknown,
ctx: GraphQLOperationContext,
) => {
return service.getAuditOverviewStats(ctx.callCtx);
},
auditTrend: async (
_parent: unknown,
args: { days?: number },
ctx: GraphQLOperationContext,
) => {
return service.getAuditTrend(ctx.callCtx, args.days);
},
dataChangeLogs: async (
_parent: unknown,
args: { filter?: unknown },
ctx: GraphQLOperationContext,
) => {
return service.listDataChangeLogs(ctx.callCtx, args.filter as never);
},
loginLogs: async (
_parent: unknown,
args: { filter?: unknown },
ctx: GraphQLOperationContext,
) => {
return service.listLoginLogs(ctx.callCtx, args.filter as never);
},
// ===== 仪表盘与设置 =====
adminDashboard: async (
_parent: unknown,
_args: unknown,
ctx: GraphQLOperationContext,
) => {
return service.getAdminDashboard(ctx.callCtx);
},
systemSettings: async (
_parent: unknown,
_args: unknown,
ctx: GraphQLOperationContext,
) => {
return service.getSystemSettings(ctx.callCtx);
},
// ===== 学校 / 年级 / 部门 / 学年 =====
adminSchools: async (
_parent: unknown,
_args: unknown,
ctx: GraphQLOperationContext,
) => {
return service.listAdminSchools(ctx.callCtx);
},
adminGrades: async (
_parent: unknown,
args: { schoolId?: string },
ctx: GraphQLOperationContext,
) => {
return service.listAdminGrades(ctx.callCtx, args.schoolId);
},
adminGradeInsights: async (
_parent: unknown,
args: { gradeId: string },
ctx: GraphQLOperationContext,
) => {
return service.getAdminGradeInsights(ctx.callCtx, args.gradeId);
},
adminDepartments: async (
_parent: unknown,
args: { schoolId?: string },
ctx: GraphQLOperationContext,
) => {
return service.listAdminDepartments(ctx.callCtx, args.schoolId);
},
adminAcademicYears: async (
_parent: unknown,
_args: unknown,
ctx: GraphQLOperationContext,
) => {
return service.listAdminAcademicYears(ctx.callCtx);
},
// ===== 公告 / 邀请码 / 文件 / AI =====
adminAnnouncements: async (
_parent: unknown,
args: { filter?: unknown },
ctx: GraphQLOperationContext,
) => {
return service.listAdminAnnouncements(
ctx.callCtx,
args.filter as never,
);
},
adminInvitationCodes: async (
_parent: unknown,
args: { filter?: unknown },
ctx: GraphQLOperationContext,
) => {
return service.listAdminInvitationCodes(
ctx.callCtx,
args.filter as never,
);
},
adminFiles: async (
_parent: unknown,
args: { filter?: unknown },
ctx: GraphQLOperationContext,
) => {
return service.listAdminFiles(ctx.callCtx, args.filter as never);
},
adminFileStats: async (
_parent: unknown,
_args: unknown,
ctx: GraphQLOperationContext,
) => {
return service.getAdminFileStats(ctx.callCtx);
},
aiProviders: async (
_parent: unknown,
_args: unknown,
ctx: GraphQLOperationContext,
) => {
return service.listAiProviders(ctx.callCtx);
},
aiUsage: async (
_parent: unknown,
_args: unknown,
ctx: GraphQLOperationContext,
) => {
return service.getAiUsage(ctx.callCtx);
},
},
Mutation: {
// ===== 用户与角色管理 =====
createUser: async (
_parent: unknown,
args: { input: unknown },
ctx: GraphQLOperationContext,
) => {
return service.createUser(ctx.callCtx, args.input as never);
},
updateUser: async (
_parent: unknown,
args: { id: string; input: unknown },
ctx: GraphQLOperationContext,
) => {
return service.updateUser(ctx.callCtx, args.id, args.input as never);
},
toggleUserStatus: async (
_parent: unknown,
args: { id: string; status: string },
ctx: GraphQLOperationContext,
) => {
return service.toggleUserStatus(ctx.callCtx, args.id, args.status);
},
createRole: async (
_parent: unknown,
args: { input: unknown },
ctx: GraphQLOperationContext,
) => {
return service.createRole(ctx.callCtx, args.input as never);
},
updateRolePermissions: async (
_parent: unknown,
args: { roleId: string; permissionCodes: string[] },
ctx: GraphQLOperationContext,
) => {
return service.updateRolePermissions(
ctx.callCtx,
args.roleId,
args.permissionCodes,
);
},
updateViewport: async (
_parent: unknown,
args: { id: string; input: unknown },
ctx: GraphQLOperationContext,
) => {
return service.updateViewport(
ctx.callCtx,
args.id,
args.input as never,
);
},
// ===== 系统设置 =====
updateSystemSettings: async (
_parent: unknown,
args: { input: unknown },
ctx: GraphQLOperationContext,
) => {
return service.updateSystemSettings(ctx.callCtx, args.input as never);
},
// ===== 公告管理 =====
createAnnouncement: async (
_parent: unknown,
args: { input: unknown },
ctx: GraphQLOperationContext,
) => {
return service.createAnnouncement(ctx.callCtx, args.input as never);
},
publishAnnouncement: async (
_parent: unknown,
args: { id: string },
ctx: GraphQLOperationContext,
) => {
return service.publishAnnouncement(ctx.callCtx, args.id);
},
archiveAnnouncement: async (
_parent: unknown,
args: { id: string },
ctx: GraphQLOperationContext,
) => {
return service.archiveAnnouncement(ctx.callCtx, args.id);
},
toggleAnnouncementPin: async (
_parent: unknown,
args: { id: string },
ctx: GraphQLOperationContext,
) => {
return service.toggleAnnouncementPin(ctx.callCtx, args.id);
},
// ===== 邀请码 =====
generateInvitationCodes: async (
_parent: unknown,
args: { input: unknown },
ctx: GraphQLOperationContext,
) => {
return service.generateInvitationCodes(
ctx.callCtx,
args.input as never,
);
},
deleteInvitationCodes: async (
_parent: unknown,
args: { ids: string[] },
ctx: GraphQLOperationContext,
) => {
return service.deleteInvitationCodes(ctx.callCtx, args.ids);
},
// ===== 文件管理 =====
deleteFiles: async (
_parent: unknown,
args: { ids: string[] },
ctx: GraphQLOperationContext,
) => {
return service.deleteFiles(ctx.callCtx, args.ids);
},
// ===== AI 提供商 =====
updateAiProvider: async (
_parent: unknown,
args: { id: string; input: unknown },
ctx: GraphQLOperationContext,
) => {
return service.updateAiProvider(
ctx.callCtx,
args.id,
args.input as never,
);
},
},
};
}