Sport.php 6.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167
  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',
  12. 'error','odd_values_locked','remark','is_rec'];
  13. protected $hidden = [];
  14. public static function getLongStatus($status){
  15. $long_status = [
  16. 'Time To Be Defined' => '时间待定',
  17. 'Not Started' => '未开赛',
  18. 'First Half' => '上半场',
  19. 'First Half, Kick Off' => '上半场,开球',
  20. 'Halftime' => '中场休息',
  21. 'Second Half' => '下半场',
  22. 'Second Half, 2nd Half Started' => '下半场,已开球',
  23. 'Extra Time' => '加时赛',
  24. 'Break Time' => '休息时间(常规赛与加时赛之间)',
  25. 'Penalty In Progress' => '点球大战进行中',
  26. 'Match Suspended' => '比赛暂停',
  27. 'Match Interrupted' => '比赛中断',
  28. 'Match Finished' => '比赛结束',
  29. 'Match Postponed' => '比赛延期',
  30. 'Match Cancelled' => '比赛取消',
  31. 'Match Abandoned' => '比赛腰斩(废弃)',
  32. 'Technical Loss' => '技术性判负',
  33. 'WalkOver' => '弃权/退赛(对手直接晋级)',
  34. 'In Progress' => '进行中',
  35. ];
  36. return $long_status[$status] ?? $status;
  37. }
  38. public static function addSportTeam($sport_data){
  39. if (!empty($sport_data['home_team_id'])) {
  40. $info = SportTeam::where('team_id', $sport_data['home_team_id'])->first();
  41. if (!$info) {
  42. SportTeam::create([
  43. 'team_id' => $sport_data['home_team_id'],
  44. 'team_name_en' => $sport_data['home_team'],
  45. 'logo' => $sport_data['home_team_logo'],
  46. ]);
  47. }
  48. }
  49. if (!empty($sport_data['guest_team_id'])) {
  50. $info = SportTeam::where('team_id', $sport_data['guest_team_id'])->first();
  51. if (!$info) {
  52. SportTeam::create([
  53. 'team_id' => $sport_data['guest_team_id'],
  54. 'team_name_en' => $sport_data['guest_team'],
  55. 'logo' => $sport_data['guest_team_logo'],
  56. ]);
  57. }
  58. }
  59. return true;
  60. }
  61. public static function addSportLeague($league){
  62. if (!empty($league['name'])) {
  63. $info = SportLeague::where('league_en', $league['name'])->first();
  64. if (!$info) {
  65. SportLeague::create([
  66. 'league_en' => $league['name'],
  67. 'logo' => $league['logo'] ?? '',
  68. ]);
  69. }
  70. }
  71. return true;
  72. }
  73. //翻译赔率
  74. public static function doOdds($odds, $odd_values_locked = []) {
  75. // 1. 获取赔率,缓存数据
  76. $sport_odds = cache('sport_odds');
  77. if (!$sport_odds) {
  78. $sport_odds = SportOdds::where('function_name', '<>', null)->get()->toArray();
  79. Cache::set('sport_odds', $sport_odds, 300); //有效期5分钟
  80. }
  81. $sport_odds = array_column($sport_odds, null,'odd_name_en');
  82. $new_odds = [];
  83. foreach($odds as $k => $item) {
  84. foreach($item['values'] as &$values) {
  85. if ($values['value'] == 'Over 1.5') {
  86. $values['value'] = '1.5 or more';
  87. }
  88. $special_str = self::isSpecialStr($values['value']);
  89. if ($special_str) {
  90. $values['value_text'] = lang($special_str, [str_replace($special_str,'', $values['value'])]);
  91. } else {
  92. $values['value_text'] = lang($values['value']);
  93. }
  94. //判断下注项是否加锁
  95. $odd_id = $item['id'];
  96. $handicap = isset($values['handicap']) ? $values['handicap'] : "";
  97. $vh = $values['value']."_".$handicap;
  98. if ($odd_values_locked && isset($odd_values_locked[$odd_id]) && array_search($vh, $odd_values_locked[$odd_id]) !== false) {
  99. $values['is_locked'] = 1;
  100. } else {
  101. $values['is_locked'] = 0;
  102. }
  103. }
  104. $item['name_en'] = $item['name'];
  105. $item['name'] = isset($sport_odds[$item['name']]) ? $sport_odds[$item['name']]['odd_name'] : $item['name'];
  106. $new_odds[] = $item;
  107. }
  108. return $new_odds;
  109. }
  110. public static function isSpecialStr($value) {
  111. if (stripos($value, 'u/yes ') !== false) {
  112. return 'u/yes ';
  113. } elseif (stripos($value, 'u/no ') !== false) {
  114. return 'u/no ';
  115. } elseif (stripos($value, 'o/yes ') !== false) {
  116. return 'o/yes ';
  117. } elseif (stripos($value, 'o/no ') !== false) {
  118. return 'o/no ';
  119. } elseif (stripos($value, ' or more') !== false) {
  120. return ' or more';
  121. } elseif (stripos($value, 'more ') !== false) {
  122. return 'more ';
  123. } elseif (stripos($value, 'Draw/Over ') !== false) {
  124. return 'Draw/Over ';
  125. } elseif (stripos($value, 'Away/Over ') !== false) {
  126. return 'Away/Over ';
  127. } elseif (stripos($value, 'Home/Over ') !== false) {
  128. return 'Home/Over ';
  129. } elseif (stripos($value, 'Draw/Under ') !== false) {
  130. return 'Draw/Under ';
  131. } elseif (stripos($value, 'Away/Under ') !== false) {
  132. return 'Away/Under ';
  133. } elseif (stripos($value, 'Home/Under ') !== false) {
  134. return 'Home/Under ';
  135. } elseif (stripos($value, 'Over ') !== false) {
  136. return 'Over ';
  137. } elseif (stripos($value, 'Under ') !== false) {
  138. return 'Under ';
  139. }
  140. return '';
  141. }
  142. protected function getOddValuesLockedAttribute($value)
  143. {
  144. return $value ? json_decode($value, true) : [];
  145. }
  146. protected function getOddIdsLockedAttribute($value)
  147. {
  148. return $value ? json_decode($value, true) : [];
  149. }
  150. protected function getLeagueDataAttribute($value)
  151. {
  152. return $value ? json_decode($value, true) : [];
  153. }
  154. }