validate([ 'page' => ['nullable', 'integer', 'min:1'], 'limit' => ['nullable', 'integer', 'min:1'], 'data_id' => ['nullable', 'string'], 'home_team' => ['nullable', 'string'], 'guest_team' => ['nullable', 'integer'], 'league' => ['nullable', 'string'], 'state' => ['nullable', 'integer'], 'status' => ['nullable', 'integer'], 'is_locked' => ['nullable', 'integer'], 'start_time' => ['nullable', 'string'], 'end_time' => ['nullable', 'string'], ]); $page = request()->input('page', 1); $limit = request()->input('limit', 15); $query = new SportModel(); if (!empty($params['data_id'])) { $query = $query->where('data_id', $params['data_id']); } if (!empty($params['home_team'])) { $query = $query->where('home_team', $params['home_team']); } if (!empty($params['guest_team'])) { $query = $query->where('guest_team', $params['guest_team']); } if (isset($params['league']) && $params['league'] !== null) { $query = $query->where('league', $params['league']); } if (isset($params['state']) && $params['state'] !== null) { $query = $query->where('state', $params['state']); } if (isset($params['status']) && $params['status'] !== null) { $query = $query->where('status', $params['status']); } if (isset($params['is_locked']) && $params['is_locked'] !== null) { $query = $query->where('is_locked', $params['is_locked']); } if (!empty($params['start_time'])) { $query = $query->where('game_time', '>=', strtotime($params['start_time'].' 00:00:00')); } if (!empty($params['end_time'])) { $query = $query->where('game_time', '<', strtotime($params['end_time'].' 23:59:59')); } $count = $query->count(); $list = $query ->forPage($page, $limit) ->orderBy('game_time','asc') ->get(); foreach($list as $item) { $item['game_time'] = date('Y-m-d H:i:s', $item['game_time']); $item['rbt'] = date('Y-m-d H:i:s', $item['rbt']); $item['fixture_status'] = json_decode($item['fixture_status'], true); } } catch (Exception $e) { return $this->error(HttpStatus::CUSTOM_ERROR,$e->getMessage()); } return $this->success(['total' => $count, 'data' => $list,'start_time' => $query]); } //详情 public function info() { try { request()->validate([ 'id' => ['required', 'integer'], ]); $id = request()->input('id'); $info = SportModel::where('id', $id)->first(); if (!$info) throw new Exception('赛事不存在'); $info = $info->toArray(); $info['date'] = date('Y-m-d',$info['game_time']); $info['time'] = date('H:i',$info['game_time']); $info['game_time'] = date('Y-m-d H:i:s', $info['game_time']); $info['rbt'] = date('Y-m-d H:i:s', $info['rbt']); $info['fixture_status'] = json_decode($info['fixture_status'], true); $info['odds'] = $info['odds'] ? json_decode($info['odds'], true) : null; $info['event'] = SportEvent::where('data_id', $info['data_id'])->get(); $info['odd_ids_locked'] = $info['odd_ids_locked'] ? json_decode($info['odd_ids_locked'], true) : []; } catch (Exception $e) { return $this->error(HttpStatus::CUSTOM_ERROR,$e->getMessage()); } return $this->success($info); } public function setStatus() { try { $params = request()->validate([ 'id' => ['required','array'], 'status' => ['nullable', 'integer'], 'state' => ['nullable', 'integer'], 'is_locked' => ['nullable', 'integer'], ]); $id = $params['id']; if (isset($params['state']) && $params['state'] !== null) { $update_data = ['state' => $params['state']]; if ($params['state'] > 2) { $update_data['refund_status'] = 1; } SportModel::whereIn('id', $id)->update($update_data); } if (isset($params['is_locked']) && $params['is_locked'] !== null) { SportModel::whereIn('id', $id)->update(['is_locked' => $params['is_locked']]); } if (isset($params['status']) && $params['status'] !== null) { SportModel::whereIn('id', $id)->update(['status' => $params['status']]); } return $this->success(); } catch (Exception $e) { return $this->error(HttpStatus::CUSTOM_ERROR,$e->getMessage()); } } //设置赔率玩法是否加锁 public function setOddsLocked() { try { $params = request()->validate([ 'id' => ['required','integer'], 'odd_id' => ['required','integer'], ]); $id = $params['id']; $info = SportModel::where('id', $id)->first(); if (!$info) throw new Exception('赛事不存在'); $odd_ids_locked = $info->odd_ids_locked ? json_decode($info->odd_ids_locked, true) : []; if (in_array($params['odd_id'], $odd_ids_locked)) { $odd_ids_locked = array_diff($odd_ids_locked, [$params['odd_id']]); } else { $odd_ids_locked[] = $params['odd_id']; } $info->odd_ids_locked = json_encode($odd_ids_locked); $info->save(); return $this->success(); } catch (Exception $e) { return $this->error(HttpStatus::CUSTOM_ERROR,$e->getMessage()); } } public function getFixtures() { $params = request()->validate([ 'data_id' => ['required'], ]); $data_id = $params['data_id']; $data = SportClientService::fixtures([ 'id' => $data_id, ]); $data = !empty($data['response'][0]) ? $data['response'][0] : []; $result = []; if (!empty($data['fixture'])) { $result['fixture'] = $data['fixture']; } if (!empty($data['goals'])) { $result['goals'] = $data['goals']; } if (!empty($data['score'])) { $result['score'] = $data['score']; } if (!empty($data['events'])) { $result['events'] = $data['events']; } return $this->success($result); } }