|
@@ -118,6 +118,16 @@ class MistakeBookService
|
|
|
return [
|
|
return [
|
|
|
'data' => [],
|
|
'data' => [],
|
|
|
'meta' => ['total' => 0, 'page' => $page, 'per_page' => $perPage],
|
|
'meta' => ['total' => 0, 'page' => $page, 'per_page' => $perPage],
|
|
|
|
|
+ 'statistics' => [ // ✅ 无 student_id 时也返回空统计
|
|
|
|
|
+ 'total' => 0,
|
|
|
|
|
+ 'pending' => 0,
|
|
|
|
|
+ 'reviewed' => 0,
|
|
|
|
|
+ 'mastered' => 0,
|
|
|
|
|
+ 'favorites' => 0,
|
|
|
|
|
+ 'in_retry_list' => 0,
|
|
|
|
|
+ 'this_week' => 0,
|
|
|
|
|
+ 'mastery_rate' => 0.0,
|
|
|
|
|
+ ],
|
|
|
];
|
|
];
|
|
|
}
|
|
}
|
|
|
|
|
|
|
@@ -150,6 +160,9 @@ class MistakeBookService
|
|
|
return $this->transformMistakeRecord($mistake);
|
|
return $this->transformMistakeRecord($mistake);
|
|
|
})->toArray();
|
|
})->toArray();
|
|
|
|
|
|
|
|
|
|
+ // 获取统计信息
|
|
|
|
|
+ $summary = $this->summarize($studentId);
|
|
|
|
|
+
|
|
|
$result = [
|
|
$result = [
|
|
|
'data' => $data,
|
|
'data' => $data,
|
|
|
'meta' => [
|
|
'meta' => [
|
|
@@ -158,6 +171,7 @@ class MistakeBookService
|
|
|
'per_page' => $perPage,
|
|
'per_page' => $perPage,
|
|
|
'last_page' => (int) ceil($total / $perPage),
|
|
'last_page' => (int) ceil($total / $perPage),
|
|
|
],
|
|
],
|
|
|
|
|
+ 'statistics' => $summary, // ✅ 添加统计信息
|
|
|
];
|
|
];
|
|
|
|
|
|
|
|
// 缓存结果
|
|
// 缓存结果
|
|
@@ -175,6 +189,16 @@ class MistakeBookService
|
|
|
return [
|
|
return [
|
|
|
'data' => [],
|
|
'data' => [],
|
|
|
'meta' => ['total' => 0, 'page' => $page, 'per_page' => $perPage],
|
|
'meta' => ['total' => 0, 'page' => $page, 'per_page' => $perPage],
|
|
|
|
|
+ 'statistics' => [ // ✅ 错误时也返回空统计
|
|
|
|
|
+ 'total' => 0,
|
|
|
|
|
+ 'pending' => 0,
|
|
|
|
|
+ 'reviewed' => 0,
|
|
|
|
|
+ 'mastered' => 0,
|
|
|
|
|
+ 'favorites' => 0,
|
|
|
|
|
+ 'in_retry_list' => 0,
|
|
|
|
|
+ 'this_week' => 0,
|
|
|
|
|
+ 'mastery_rate' => 0.0,
|
|
|
|
|
+ ],
|
|
|
];
|
|
];
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|