yemeishu 5 dní pred
rodič
commit
b091c7cf8e

+ 1 - 1
app/Http/Controllers/Api/MistakeBookController.php

@@ -545,7 +545,7 @@ class MistakeBookController extends Controller
     {
         try {
             $validated = $request->validate([
-                'action' => 'required|in:increment,reset',
+                'action' => 'required|in:increment,reset,mastered',
                 'force_review' => 'boolean',
             ]);
 

+ 8 - 0
app/Models/MistakeRecord.php

@@ -145,12 +145,17 @@ class MistakeRecord extends Model
      */
     public function markAsReviewed(): self
     {
+        // 先递增 review_count
         $this->increment('review_count');
+        // 然后更新其他字段
         $this->update([
             'review_status' => self::REVIEW_STATUS_REVIEWED,
             'reviewed_at' => now(),
         ]);
 
+        // ⚠️ 重要:重新加载模型数据
+        $this->refresh();
+
         // 根据复习次数计算下次复习时间
         $this->calculateNextReviewDate();
 
@@ -222,6 +227,9 @@ class MistakeRecord extends Model
             'next_review_at' => now()->addDays($days),
         ]);
 
+        // ⚠️ 重要:重新加载模型数据
+        $this->refresh();
+
         return $this;
     }
 

+ 7 - 2
app/Services/MistakeBookService.php

@@ -312,18 +312,23 @@ class MistakeBookService
                     'review_status' => MistakeRecord::REVIEW_STATUS_PENDING,
                     'review_count' => 0,
                     'mastery_level' => null,
+                    'reviewed_at' => null,
+                    'next_review_at' => null,
                 ]),
                 default => throw new \InvalidArgumentException('无效的操作类型'),
             };
 
-            // 清除缓存
-            $this->clearCache($mistake->student_id);
+            // ⚠️ 重要:重新加载模型数据以获取最新状态
+            $mistake->refresh();
 
             return [
                 'success' => true,
                 'mistake_id' => $mistakeId,
                 'review_status' => $mistake->review_status,
                 'review_count' => $mistake->review_count,
+                'reviewed_at' => $mistake->reviewed_at?->toISOString(),
+                'next_review_at' => $mistake->next_review_at?->toISOString(),
+                'mastery_level' => $mistake->mastery_level,
                 'message' => '复习状态更新成功',
             ];
 

+ 8 - 1
query_paper.php

@@ -5,7 +5,14 @@ $app = require_once __DIR__ . '/bootstrap/app.php';
 $kernel = $app->make(Illuminate\Contracts\Console\Kernel::class);
 $kernel->bootstrap();
 
-$pdo = new PDO('mysql:host=120.78.197.180;dbname=math;charset=utf8mb4', 'root', 'bamasoso902');
+// 使用 .env 配置
+$host = $_ENV['DB_HOST'] ?? getenv('DB_HOST');
+$port = $_ENV['DB_PORT'] ?? getenv('DB_PORT');
+$database = $_ENV['DB_DATABASE'] ?? getenv('DB_DATABASE');
+$username = $_ENV['DB_USERNAME'] ?? getenv('DB_USERNAME');
+$password = $_ENV['DB_PASSWORD'] ?? getenv('DB_PASSWORD');
+
+$pdo = new PDO("mysql:host={$host};port={$port};dbname={$database};charset=utf8mb4", $username, $password);
 $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
 
 $stmt = $pdo->prepare('SELECT * FROM papers WHERE paper_id = ?');