PaperAssembleController.php 910 B

1234567891011121314151617181920212223242526272829303132333435
  1. <?php
  2. namespace App\Http\Controllers\Api;
  3. use App\Http\Controllers\Controller;
  4. use App\Models\Question;
  5. use Illuminate\Http\JsonResponse;
  6. use Illuminate\Http\Request;
  7. class PaperAssembleController extends Controller
  8. {
  9. public function __invoke(Request $request): JsonResponse
  10. {
  11. $count = max(1, min(200, (int) $request->input('count', 10)));
  12. $kpCodes = (array) $request->input('kp_codes', []);
  13. $types = (array) $request->input('question_types', []);
  14. $query = Question::query();
  15. if (!empty($kpCodes)) {
  16. $query->whereIn('kp_code', $kpCodes);
  17. }
  18. if (!empty($types)) {
  19. $query->whereIn('question_type', $types);
  20. }
  21. $questions = $query->inRandomOrder()->limit($count)->get();
  22. return response()->json([
  23. 'count' => $questions->count(),
  24. 'data' => $questions,
  25. ]);
  26. }
  27. }