GameEnterLogController.php 2.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162
  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. if ($durationMs > 1000*200) {
  32. return apiReturnFail('time must be a non-negative number');
  33. }
  34. $result = GameEnterLog::addLog([
  35. 'user_id' => $userId,
  36. 'game_id' => $gameId,
  37. 'duration_ms' => $durationMs,
  38. 'log_date' => $request->input('log_date') ?: date('Y-m-d'),
  39. ]);
  40. if ($result) {
  41. return apiReturnSuc(['message' => 'Recorded successfully']);
  42. }
  43. return apiReturnFail('Failed to record');
  44. } catch (\Exception $e) {
  45. \Log::error('Game enter log record error: ' . $e->getMessage(), [
  46. 'request' => $request->all(),
  47. 'trace' => $e->getTraceAsString(),
  48. ]);
  49. return apiReturnFail('Error: ' . $e->getMessage());
  50. }
  51. }
  52. }