|
|
@@ -125,7 +125,7 @@ class Sport extends Controller
|
|
|
$limit = request()->input('limit', 15);
|
|
|
$order = 'asc';
|
|
|
|
|
|
- $query = new SportModel();
|
|
|
+ $query = SportModel::query();
|
|
|
if (!empty($params['data_id'])) {
|
|
|
$query = $query->where('data_id', $params['data_id']);
|
|
|
}
|
|
|
@@ -145,17 +145,20 @@ class Sport extends Controller
|
|
|
->orWhere('league_en', 'like', "%{$league}%");
|
|
|
});
|
|
|
}
|
|
|
- if (isset($params['state']) && $params['state'] !== null) {
|
|
|
- $query = $query->where('state', $params['state']);
|
|
|
- if ($params['state'] >= 2) {
|
|
|
+ $stateFilter = $this->appliedQueryInt('state');
|
|
|
+ if ($stateFilter !== null) {
|
|
|
+ $query = $query->where('state', $stateFilter);
|
|
|
+ if ($stateFilter >= 2) {
|
|
|
$order = 'desc';
|
|
|
}
|
|
|
}
|
|
|
- if (isset($params['status']) && $params['status'] !== null) {
|
|
|
- $query = $query->where('status', $params['status']);
|
|
|
+ $statusFilter = $this->appliedQueryInt('status');
|
|
|
+ if ($statusFilter !== null) {
|
|
|
+ $query = $query->where('status', $statusFilter);
|
|
|
}
|
|
|
- if (isset($params['is_locked']) && $params['is_locked'] !== null) {
|
|
|
- $query = $query->where('is_locked', $params['is_locked']);
|
|
|
+ $isLockedFilter = $this->appliedQueryInt('is_locked');
|
|
|
+ if ($isLockedFilter !== null) {
|
|
|
+ $query = $query->where('is_locked', $isLockedFilter);
|
|
|
}
|
|
|
if (!empty($params['start_time'])) {
|
|
|
$query = $query->where('game_time', '>=', strtotime($params['start_time'].' 00:00:00'));
|
|
|
@@ -163,8 +166,9 @@ class Sport extends Controller
|
|
|
if (!empty($params['end_time'])) {
|
|
|
$query = $query->where('game_time', '<', strtotime($params['end_time'].' 23:59:59'));
|
|
|
}
|
|
|
- if (isset($params['error']) && $params['error'] !== null) {
|
|
|
- $query = $query->where('error', $params['error']);
|
|
|
+ $errorFilter = $this->appliedQueryInt('error');
|
|
|
+ if ($errorFilter !== null) {
|
|
|
+ $query = $query->where('error', $errorFilter);
|
|
|
$order = 'desc';
|
|
|
}
|
|
|
if (isset($params['odds'])) {
|
|
|
@@ -174,8 +178,9 @@ class Sport extends Controller
|
|
|
$query = $query->whereNull('odds');
|
|
|
}
|
|
|
}
|
|
|
- if (isset($params['is_rec']) && $params['is_rec'] !== null) {
|
|
|
- $query = $query->where('is_rec', $params['is_rec']);
|
|
|
+ $isRecFilter = $this->appliedQueryInt('is_rec');
|
|
|
+ if ($isRecFilter !== null) {
|
|
|
+ $query = $query->where('is_rec', $isRecFilter);
|
|
|
}
|
|
|
|
|
|
$count = $query->count();
|
|
|
@@ -184,10 +189,12 @@ class Sport extends Controller
|
|
|
->orderBy('game_time', $order)
|
|
|
->orderBy('is_roll', 'desc')
|
|
|
->get();
|
|
|
+ $stateLabels = [0 => '未开始', 1 => '进行中', 2 => '已结束', 3 => '延期', 4 => '取消'];
|
|
|
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);
|
|
|
+ $item['state_text'] = $stateLabels[(int) $item['state']] ?? (string) $item['state'];
|
|
|
|
|
|
$item['home_team'] = SportTeam::getTeamName($item['home_team_id']) ?? $item['home_team_en'];
|
|
|
$item['guest_team'] = SportTeam::getTeamName($item['guest_team_id']) ?? $item['guest_team_en'];
|
|
|
@@ -392,6 +399,22 @@ class Sport extends Controller
|
|
|
return $this->success($result);
|
|
|
}
|
|
|
|
|
|
+ /**
|
|
|
+ * GET 查询整型筛选;0 为合法值,仅当 query 未带该键时不筛选。
|
|
|
+ */
|
|
|
+ private function appliedQueryInt(string $key): ?int
|
|
|
+ {
|
|
|
+ if (!request()->query->has($key)) {
|
|
|
+ return null;
|
|
|
+ }
|
|
|
+ $value = request()->query($key);
|
|
|
+ if ($value === null || $value === '') {
|
|
|
+ return null;
|
|
|
+ }
|
|
|
+
|
|
|
+ return (int) $value;
|
|
|
+ }
|
|
|
+
|
|
|
private function doEvent($events, $data_id) {
|
|
|
if (empty($events)) return [];
|
|
|
$result = [];
|