diff --git a/src/app/(protected)/dashboard/actions/student-dashboard.ts b/src/app/(protected)/dashboard/actions/student-dashboard.ts index 071780b..e7f0ecd 100644 --- a/src/app/(protected)/dashboard/actions/student-dashboard.ts +++ b/src/app/(protected)/dashboard/actions/student-dashboard.ts @@ -65,7 +65,12 @@ export async function getStudentDashboardData() { // 获取当前学生的所有提交记录(包含题目英文标题) const userSubmissions = await prisma.submission.findMany({ - where: { userId: userId }, + where: { + userId: userId, + problem: { + isPublished: true, + }, + }, include: { problem: { select: { diff --git a/src/app/(protected)/dashboard/page.tsx b/src/app/(protected)/dashboard/page.tsx index a24c98c..4f01488 100644 --- a/src/app/(protected)/dashboard/page.tsx +++ b/src/app/(protected)/dashboard/page.tsx @@ -130,16 +130,21 @@ export default async function DashboardPage() { // 学生统计 const [ totalProblems, - completedProblems, + completedProblemRows, totalSubmissions, recentSubmissions, ] = await Promise.all([ prisma.problem.count({ where: { isPublished: true } }), - prisma.submission.count({ + prisma.submission.findMany({ where: { userId: user.id, status: "AC", + problem: { + isPublished: true, + }, }, + distinct: ["problemId"], + select: { problemId: true }, }), prisma.submission.count({ where: { userId: user.id } }), prisma.submission.findMany({ @@ -160,7 +165,11 @@ export default async function DashboardPage() { }), ]); - stats = { totalProblems, completedProblems, totalSubmissions }; + stats = { + totalProblems, + completedProblems: completedProblemRows.length, + totalSubmissions, + }; recentActivity = recentSubmissions.map((sub) => ({ type: "我的提交", title: `题目 ${sub.problem.displayId}`,