feat(teacher-bff): 添加考试作业成绩聚合端点

env.ts 新增 CoreEduServiceUrl
teacher.service 新增 listExamsByClass/listHomeworkByClass/listGradesByExam 三个聚合方法
teacher.controller 暴露 3 个 GET 端点:
  /teacher/classes/:classId/exams
  /teacher/classes/:classId/homework
  /teacher/exams/:examId/grades

验证: 3 端点全部 200 返回 core-edu 数据
This commit is contained in:
SpecialX
2026-07-09 08:05:24 +08:00
parent beb204c00f
commit 6215f4e21f
3 changed files with 80 additions and 10 deletions

View File

@@ -1,4 +1,10 @@
import { Controller, Get, Req, UnauthorizedException } from "@nestjs/common";
import {
Controller,
Get,
Param,
Req,
UnauthorizedException,
} from "@nestjs/common";
import type { Request } from "express";
import { TeacherService } from "./teacher.service.js";
@@ -25,4 +31,25 @@ export class TeacherController {
const data = await this.service.getViewports(userId);
return { success: true as const, data };
}
// 聚合班级下的考试列表core-edu
@Get("classes/:classId/exams")
async listExamsByClass(@Param("classId") classId: string) {
const data = await this.service.listExamsByClass(classId);
return { success: true as const, data };
}
// 聚合班级下的作业列表core-edu
@Get("classes/:classId/homework")
async listHomeworkByClass(@Param("classId") classId: string) {
const data = await this.service.listHomeworkByClass(classId);
return { success: true as const, data };
}
// 聚合考试下的成绩列表core-edu
@Get("exams/:examId/grades")
async listGradesByExam(@Param("examId") examId: string) {
const data = await this.service.listGradesByExam(examId);
return { success: true as const, data };
}
}

View File

@@ -49,4 +49,43 @@ export class TeacherService {
};
return json.data ?? [];
}
// 聚合班级下的考试列表core-edu
async listExamsByClass(classId: string): Promise<unknown> {
const res = await fetch(
`${env.CoreEduServiceUrl}/exams/class/${encodeURIComponent(classId)}`,
{ headers: { "x-user-id": "bff" } },
);
if (!res.ok) {
return [];
}
const json = (await res.json()) as { success: boolean; data?: unknown };
return json.data ?? [];
}
// 聚合班级下的作业列表core-edu
async listHomeworkByClass(classId: string): Promise<unknown> {
const res = await fetch(
`${env.CoreEduServiceUrl}/homework/class/${encodeURIComponent(classId)}`,
{ headers: { "x-user-id": "bff" } },
);
if (!res.ok) {
return [];
}
const json = (await res.json()) as { success: boolean; data?: unknown };
return json.data ?? [];
}
// 聚合考试下的成绩列表core-edu
async listGradesByExam(examId: string): Promise<unknown> {
const res = await fetch(
`${env.CoreEduServiceUrl}/grades/exam/${encodeURIComponent(examId)}`,
{ headers: { "x-user-id": "bff" } },
);
if (!res.ok) {
return [];
}
const json = (await res.json()) as { success: boolean; data?: unknown };
return json.data ?? [];
}
}