GameEnterLogController.php 1.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758
  1. <?php
  2. namespace App\Http\Controllers\Game;
  3. use App\Http\Controllers\Controller;
  4. use App\Models\GameEnterLog;
  5. use Illuminate\Http\Request;
  6. class GameEnterLogController extends Controller
  7. {
  8. /**
  9. * Record game enter duration from client.
  10. * Params: userID, game_id, time (duration in milliseconds).
  11. */
  12. public function record(Request $request)
  13. {
  14. try {
  15. $userId = $request->input('userID') ?: $request->input('user_id');
  16. $gameId = $request->input('game_id') ?: $request->input('gameId');
  17. $durationMs = $request->input('time');
  18. if ($durationMs === null || $durationMs === '') {
  19. $durationMs = $request->input('duration');
  20. }
  21. if (empty($userId) || empty($gameId)) {
  22. return apiReturnFail('userID and game_id are required');
  23. }
  24. if ($durationMs === null || $durationMs === '' || !is_numeric($durationMs)) {
  25. return apiReturnFail('time is required (enter game duration in milliseconds)');
  26. }
  27. $durationMs = (int) $durationMs;
  28. if ($durationMs < 0) {
  29. return apiReturnFail('time must be a non-negative number');
  30. }
  31. $result = GameEnterLog::addLog([
  32. 'user_id' => $userId,
  33. 'game_id' => $gameId,
  34. 'duration_ms' => $durationMs,
  35. 'log_date' => $request->input('log_date') ?: date('Y-m-d'),
  36. ]);
  37. if ($result) {
  38. return apiReturnSuc(['message' => 'Recorded successfully']);
  39. }
  40. return apiReturnFail('Failed to record');
  41. } catch (\Exception $e) {
  42. \Log::error('Game enter log record error: ' . $e->getMessage(), [
  43. 'request' => $request->all(),
  44. 'trace' => $e->getTraceAsString(),
  45. ]);
  46. return apiReturnFail('Error: ' . $e->getMessage());
  47. }
  48. }
  49. }