TrackService.php 1.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
  1. <?php
  2. namespace App\Service\Callback;
  3. use Illuminate\Support\Facades\DB;
  4. class TrackService
  5. {
  6. public static function getTrackRecord($callbackType, $searchInfo) {
  7. switch ($callbackType) {
  8. case 'juliangAccount':
  9. $ip = $searchInfo['ip'];
  10. $ranseId = $searchInfo['ranseId'];
  11. $now = time();
  12. foreach (self::getTrackTable($now,180) as $table) {
  13. $record = DB::connection('track_record')
  14. ->table($table)
  15. ->where([
  16. 'ip' => $ip, 'connection_id' => $ranseId, 'link_source' => 'tiktok',
  17. ])->where('created_at', '>=', $now - 180)
  18. ->orderBy('id', 'desc')
  19. ->first();
  20. if($record) {
  21. break;
  22. }
  23. }
  24. return $record ? [
  25. 'callback' => $record->callback,
  26. 'advertiser_id' => $record->advertiser_id,
  27. 'adv_promotion_id' => $record->promotion_id
  28. ] : null;
  29. break;
  30. }
  31. return null;
  32. }
  33. public static function getTrackTable($endTimstamp, $duration) {
  34. $currentYm = date('Ym', $endTimstamp);
  35. $startCurrentYm = date('Ym', $endTimstamp - $duration);
  36. $tables = ['douyin_tracks'.$currentYm];
  37. if($currentYm != $startCurrentYm) {
  38. $tables[] = 'douyin_tracks'.$startCurrentYm;
  39. }
  40. return $tables;
  41. }
  42. }