KnowledgeRecommendController.php 1.1 KB

123456789101112131415161718192021222324252627282930313233343536
  1. <?php
  2. namespace App\Http\Controllers\Api;
  3. use App\Http\Controllers\Controller;
  4. use App\Models\KnowledgePoint;
  5. use Illuminate\Http\JsonResponse;
  6. use Illuminate\Http\Request;
  7. class KnowledgeRecommendController extends Controller
  8. {
  9. public function __invoke(Request $request): JsonResponse
  10. {
  11. $kpCode = $request->string('kp_code')->toString();
  12. if ($kpCode !== '') {
  13. $kp = KnowledgePoint::query()->where('kp_code', $kpCode)->first();
  14. if ($kp) {
  15. return response()->json([
  16. 'kp_code' => $kp->kp_code,
  17. 'related_kps' => $kp->related_kp_codes ?? [],
  18. 'prerequisite_kps' => $kp->prerequisite_kp_codes ?? [],
  19. 'post_kps' => $kp->dependent_kp_codes ?? [],
  20. ]);
  21. }
  22. }
  23. $fallback = KnowledgePoint::query()->limit(10)->get(['kp_code', 'name']);
  24. return response()->json([
  25. 'kp_code' => $kpCode,
  26. 'related_kps' => $fallback->pluck('kp_code'),
  27. 'prerequisite_kps' => [],
  28. 'post_kps' => [],
  29. ]);
  30. }
  31. }