Sport.php 5.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142
  1. <?php
  2. namespace App\Models;
  3. use App\Models\SportLeague;
  4. use App\Models\SportTeam;
  5. use Illuminate\Support\Facades\Cache;
  6. class Sport extends BaseModel
  7. {
  8. protected $table = 'sport';
  9. protected $fillable = ['data_id', 'home_team_id', 'home_team_en', 'home_team', 'home_team_logo', 'guest_team_id', 'guest_team_en', 'guest_team', 'guest_team_logo', 'half_score', 'rbt',
  10. 'is_roll', 'score', 'league_en','league','odds','state','game_time','status','handicap_limit','over_under_limit','duying_limit','correct_core_limit','odd_even_limit','total_goal_limit',
  11. 'is_handicap', 'is_over_under','is_duying','is_correct_core','is_odd_even','is_total_goal','is_locked','fixture_status','is_send','odd_ids_locked','refund_status','odd_fixture_status','error'];
  12. protected $hidden = [];
  13. public static function getLongStatus($status){
  14. $long_status = [
  15. 'Time To Be Defined' => '时间待定',
  16. 'Not Started' => '未开赛',
  17. 'First Half' => '上半场',
  18. 'First Half, Kick Off' => '上半场,开球',
  19. 'Halftime' => '中场休息',
  20. 'Second Half' => '下半场',
  21. 'Second Half, 2nd Half Started' => '下半场,已开球',
  22. 'Extra Time' => '加时赛',
  23. 'Break Time' => '休息时间(常规赛与加时赛之间)',
  24. 'Penalty In Progress' => '点球大战进行中',
  25. 'Match Suspended' => '比赛暂停',
  26. 'Match Interrupted' => '比赛中断',
  27. 'Match Finished' => '比赛结束',
  28. 'Match Postponed' => '比赛延期',
  29. 'Match Cancelled' => '比赛取消',
  30. 'Match Abandoned' => '比赛腰斩(废弃)',
  31. 'Technical Loss' => '技术性判负',
  32. 'WalkOver' => '弃权/退赛(对手直接晋级)',
  33. 'In Progress' => '进行中',
  34. ];
  35. return $long_status[$status] ?? $status;
  36. }
  37. public static function addSportTeam($sport_data){
  38. if (!empty($sport_data['home_team_id'])) {
  39. $info = SportTeam::where('team_id', $sport_data['home_team_id'])->first();
  40. if (!$info) {
  41. SportTeam::create([
  42. 'team_id' => $sport_data['home_team_id'],
  43. 'team_name_en' => $sport_data['home_team'],
  44. 'logo' => $sport_data['home_team_logo'],
  45. ]);
  46. }
  47. }
  48. if (!empty($sport_data['guest_team_id'])) {
  49. $info = SportTeam::where('team_id', $sport_data['guest_team_id'])->first();
  50. if (!$info) {
  51. SportTeam::create([
  52. 'team_id' => $sport_data['guest_team_id'],
  53. 'team_name_en' => $sport_data['guest_team'],
  54. 'logo' => $sport_data['guest_team_logo'],
  55. ]);
  56. }
  57. }
  58. return true;
  59. }
  60. public static function addSportLeague($league){
  61. if (!empty($league['name'])) {
  62. $info = SportLeague::where('league_en', $league['name'])->first();
  63. if (!$info) {
  64. SportLeague::create([
  65. 'league_en' => $league['name'],
  66. 'logo' => $league['logo'] ?? '',
  67. ]);
  68. }
  69. }
  70. return true;
  71. }
  72. //翻译赔率
  73. public static function doOdds($odds) {
  74. // 1. 获取赔率,缓存数据
  75. $sport_odds = cache('sport_odds');
  76. if (!$sport_odds) {
  77. $sport_odds = SportOdds::where('function_name', '<>', null)->get()->toArray();
  78. Cache::set('sport_odds', $sport_odds, 300); //有效期5分钟
  79. }
  80. $sport_odds = array_column($sport_odds, null,'odd_name_en');
  81. $new_odds = [];
  82. foreach($odds as $k => $item) {
  83. foreach($item['values'] as &$values) {
  84. if ($values['value'] == 'Over 1.5') {
  85. $values['value'] = '1.5 or more';
  86. }
  87. $special_str = self::isSpecialStr($values['value']);
  88. if ($special_str) {
  89. $values['value_text'] = lang($special_str, [str_replace($special_str,'', $values['value'])]);
  90. } else {
  91. $values['value_text'] = lang($values['value']);
  92. }
  93. }
  94. $item['name_en'] = $item['name'];
  95. $item['name'] = $sport_odds[$item['name']]['odd_name'];
  96. $new_odds[] = $item;
  97. }
  98. return $new_odds;
  99. }
  100. public static function isSpecialStr($value) {
  101. if (stripos($value, 'u/yes ') !== false) {
  102. return 'u/yes ';
  103. } elseif (stripos($value, 'u/no ') !== false) {
  104. return 'u/no ';
  105. } elseif (stripos($value, 'o/yes ') !== false) {
  106. return 'o/yes ';
  107. } elseif (stripos($value, 'o/no ') !== false) {
  108. return 'o/no ';
  109. } elseif (stripos($value, ' or more') !== false) {
  110. return ' or more';
  111. } elseif (stripos($value, 'more ') !== false) {
  112. return 'more ';
  113. } elseif (stripos($value, 'Draw/Over ') !== false) {
  114. return 'Draw/Over ';
  115. } elseif (stripos($value, 'Away/Over ') !== false) {
  116. return 'Away/Over ';
  117. } elseif (stripos($value, 'Home/Over ') !== false) {
  118. return 'Home/Over ';
  119. } elseif (stripos($value, 'Draw/Under ') !== false) {
  120. return 'Draw/Under ';
  121. } elseif (stripos($value, 'Away/Under ') !== false) {
  122. return 'Away/Under ';
  123. } elseif (stripos($value, 'Home/Under ') !== false) {
  124. return 'Home/Under ';
  125. } elseif (stripos($value, 'Over ') !== false) {
  126. return 'Over ';
  127. } elseif (stripos($value, 'Under ') !== false) {
  128. return 'Under ';
  129. }
  130. return '';
  131. }
  132. }