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]); } //详情 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; } catch (Exception $e) { return $this->error(HttpStatus::CUSTOM_ERROR,$e->getMessage()); } return $this->success($info); } public function setStatus() { try { $params = request()->validate([ 'id' => ['required', 'integer'], 'status' => ['nullable', 'integer'], 'state' => ['nullable', 'integer'], 'is_locked' => ['nullable', 'integer'], ]); $id = $params['id']; $info = SportModel::where('id', $id)->first(); if (!$info) throw new Exception('赛事不存在'); if (isset($params['state']) && $params['state'] !== null) { $info->state = $params['state']; } if (isset($params['is_locked']) && $params['is_locked'] !== null) { $info->is_locked = $info->is_locked ? 0 : 1; } if (isset($params['status']) && $params['status'] !== null) { $info->status = $info->status ? 0 : 1; } $info->save(); return $this->success(); } catch (Exception $e) { return $this->error(HttpStatus::CUSTOM_ERROR,$e->getMessage()); } } }