yemeishu 1 nedēļu atpakaļ
vecāks
revīzija
53f6e06332
1 mainītis faili ar 21 papildinājumiem un 3 dzēšanām
  1. 21 3
      app/Http/Controllers/Api/IntelligentExamController.php

+ 21 - 3
app/Http/Controllers/Api/IntelligentExamController.php

@@ -43,7 +43,7 @@ class IntelligentExamController extends Controller
             'grade' => 'nullable|string|max:50',
             'total_questions' => 'required|integer|min:6|max:100',
             'difficulty_category' => 'nullable|string',
-            'kp_codes' => 'required|array|min:1',
+            'kp_codes' => 'nullable|array',
             'kp_codes.*' => 'string',
             'skills' => 'array',
             'skills.*' => 'string',
@@ -62,6 +62,12 @@ class IntelligentExamController extends Controller
 
         $data = $validator->validated();
 
+        // 确保 kp_codes 是数组,如果为空则设置为空数组
+        $data['kp_codes'] = $data['kp_codes'] ?? [];
+        if (!is_array($data['kp_codes'])) {
+            $data['kp_codes'] = [];
+        }
+
         $questionTypeRatio = $this->normalizeQuestionTypeRatio($data['question_type_ratio'] ?? []);
         $difficultyRatio = $this->normalizeDifficultyRatio($data['difficulty_ratio'] ?? []);
         $paperName = $data['paper_name'] ?? ('智能试卷_' . now()->format('Ymd_His'));
@@ -172,8 +178,20 @@ class IntelligentExamController extends Controller
      */
     private function normalizePayload(array $payload): array
     {
-        if (isset($payload['kp_codes']) && is_string($payload['kp_codes'])) {
-            $payload['kp_codes'] = array_values(array_filter(array_map('trim', explode(',', $payload['kp_codes']))));
+        // 处理 kp_codes:空字符串或null转换为空数组
+        if (isset($payload['kp_codes'])) {
+            if (is_string($payload['kp_codes'])) {
+                $kpCodes = trim($payload['kp_codes']);
+                if (empty($kpCodes)) {
+                    $payload['kp_codes'] = [];
+                } else {
+                    $payload['kp_codes'] = array_values(array_filter(array_map('trim', explode(',', $kpCodes))));
+                }
+            } elseif (!is_array($payload['kp_codes'])) {
+                $payload['kp_codes'] = [];
+            }
+        } else {
+            $payload['kp_codes'] = [];
         }
 
         if (isset($payload['skills']) && is_string($payload['skills'])) {