فهرست منبع

学情生成pdf效果制作

yemeishu 2 هفته پیش
والد
کامیت
be2f6bb28b
2فایلهای تغییر یافته به همراه95 افزوده شده و 0 حذف شده
  1. 64 0
      app/Http/Controllers/Api/ExamAnalysisApiController.php
  2. 31 0
      app/Http/Controllers/ExamAnalysisPdfController.php

+ 64 - 0
app/Http/Controllers/Api/ExamAnalysisApiController.php

@@ -0,0 +1,64 @@
+<?php
+
+namespace App\Http\Controllers\Api;
+
+use App\Http\Controllers\Controller;
+use App\Models\Paper;
+use App\Services\ExamPdfExportService;
+use Illuminate\Http\JsonResponse;
+use Illuminate\Http\Request;
+use Illuminate\Support\Facades\URL;
+
+class ExamAnalysisApiController extends Controller
+{
+    public function store(Request $request, ExamPdfExportService $pdfExportService): JsonResponse
+    {
+        $data = $request->validate([
+            'paper_id' => 'required|string',
+            'student_id' => 'nullable|string',
+        ]);
+
+        $paperId = $data['paper_id'];
+        $studentId = $data['student_id'] ?? null;
+
+        $paper = Paper::find($paperId);
+        if (!$paper) {
+            return response()->json([
+                'success' => false,
+                'message' => '未找到试卷',
+            ], 404);
+        }
+
+        if (!$studentId) {
+            $studentId = $paper->student_id;
+        }
+
+        if (!$studentId) {
+            return response()->json([
+                'success' => false,
+                'message' => '缺少 student_id',
+            ], 422);
+        }
+
+        $pdfUrl = $pdfExportService->generateAnalysisReportPdf($paperId, $studentId);
+        if (!$pdfUrl) {
+            return response()->json([
+                'success' => false,
+                'message' => '生成学情报告失败',
+            ], 500);
+        }
+
+        $viewUrl = URL::to("/admin/exam-analysis?paperId={$paperId}&studentId={$studentId}");
+
+        return response()->json([
+            'success' => true,
+            'message' => '学情报告生成成功',
+            'data' => [
+                'paper_id' => $paperId,
+                'student_id' => $studentId,
+                'pdf_url' => $pdfUrl,
+                'analysis_url' => $viewUrl,
+            ],
+        ], 200, [], JSON_UNESCAPED_SLASHES);
+    }
+}

+ 31 - 0
app/Http/Controllers/ExamAnalysisPdfController.php

@@ -0,0 +1,31 @@
+<?php
+
+namespace App\Http\Controllers;
+
+use App\Services\ExamPdfExportService;
+use Illuminate\Http\Request;
+use Illuminate\Support\Facades\Log;
+
+class ExamAnalysisPdfController extends Controller
+{
+    public function show(Request $request, ExamPdfExportService $pdfExportService)
+    {
+        $paperId = $request->query('paperId');
+        $studentId = $request->query('studentId');
+
+        if (!$paperId || !$studentId) {
+            return response('paperId 和 studentId 不能为空', 400);
+        }
+
+        $pdfUrl = $pdfExportService->generateAnalysisReportPdf($paperId, $studentId);
+        if (!$pdfUrl) {
+            Log::error('ExamAnalysisPdfController: 学情报告生成失败', [
+                'paper_id' => $paperId,
+                'student_id' => $studentId,
+            ]);
+            return response('生成学情报告失败,请稍后重试', 500);
+        }
+
+        return redirect($pdfUrl);
+    }
+}