generated from liutk/owl-admin-base
处理首页今日竞猜接口
parent
1d6a2ab0b3
commit
c83110984a
|
|
@ -0,0 +1,40 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
namespace App\Http\Controllers\Api;
|
||||||
|
|
||||||
|
use Carbon\Carbon;
|
||||||
|
use Illuminate\Http\Request;
|
||||||
|
use Illuminate\Support\Arr;
|
||||||
|
use App\Models\Activity;
|
||||||
|
use App\Http\Resources\Api\ActivityGameResource;
|
||||||
|
|
||||||
|
class ActivityGameController extends ApiController
|
||||||
|
{
|
||||||
|
public function latestGame(Request $request)
|
||||||
|
{
|
||||||
|
//获取最新的活动;
|
||||||
|
$activity = Activity::show()->sort()->first();
|
||||||
|
$game = $activity?->games()->show()
|
||||||
|
->whereDate('game_at', now())
|
||||||
|
->where('game_at', '>', now())
|
||||||
|
->where('state', 1)
|
||||||
|
->orderBy('game_at', 'asc')->first();
|
||||||
|
|
||||||
|
//若已经没有最新的活动了, 则拿取当天最后一个
|
||||||
|
if(!$game){
|
||||||
|
$activity?->games()->show()
|
||||||
|
->whereDate('game_at', now())
|
||||||
|
->orderBy('game_at', 'desc')->first();
|
||||||
|
}
|
||||||
|
|
||||||
|
if($game){
|
||||||
|
$game->load(['logs'=> function($q){
|
||||||
|
$q->where('user_id', auth('api')->user()?->id ?? 0);
|
||||||
|
}]);
|
||||||
|
|
||||||
|
return ActivityGameResource::make($game);
|
||||||
|
}
|
||||||
|
|
||||||
|
return $this->success(null);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,35 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
namespace App\Http\Resources\Api;
|
||||||
|
|
||||||
|
use Illuminate\Http\Resources\Json\JsonResource;
|
||||||
|
use Illuminate\Http\Response;
|
||||||
|
|
||||||
|
class ActivityGameResource extends JsonResource
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* Transform the resource into an array.
|
||||||
|
*
|
||||||
|
* @param \Illuminate\Http\Request $request
|
||||||
|
* @return array
|
||||||
|
*/
|
||||||
|
public function toArray($request)
|
||||||
|
{
|
||||||
|
return [
|
||||||
|
'id' => $this->id,
|
||||||
|
'activity_id' => $this->activity_id,
|
||||||
|
'name' => $this->name,
|
||||||
|
'home_field' => $this->home_field ??'',
|
||||||
|
'home_logo' => $this->home_logo ??'',
|
||||||
|
'away' => $this->away ??'',
|
||||||
|
'away_logo' => $this->away_logo ??'',
|
||||||
|
'game_at' => $this->game_at->format('Y-m-d H:i'),
|
||||||
|
'has_guess' => !$this->logs->isEmpty() ? ($this->logs[0]->score):false,
|
||||||
|
];
|
||||||
|
}
|
||||||
|
|
||||||
|
public function with($request)
|
||||||
|
{
|
||||||
|
return ['code' => Response::HTTP_OK, 'message' => ''];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -3,6 +3,7 @@
|
||||||
namespace App\Http\Resources\Api;
|
namespace App\Http\Resources\Api;
|
||||||
|
|
||||||
use Illuminate\Http\Resources\Json\JsonResource;
|
use Illuminate\Http\Resources\Json\JsonResource;
|
||||||
|
use Illuminate\Http\Response;
|
||||||
|
|
||||||
class UserResource extends JsonResource
|
class UserResource extends JsonResource
|
||||||
{
|
{
|
||||||
|
|
|
||||||
|
|
@ -10,6 +10,11 @@ class Activity extends Model
|
||||||
{
|
{
|
||||||
use HasFactory,Filterable;
|
use HasFactory,Filterable;
|
||||||
|
|
||||||
|
public function scopeShow($q){
|
||||||
|
$q->where('state', '>' ,0)
|
||||||
|
->where('start_at', '<', now());
|
||||||
|
}
|
||||||
|
|
||||||
public function scopeSort($q)
|
public function scopeSort($q)
|
||||||
{
|
{
|
||||||
$q->orderBy('state', 'asc')
|
$q->orderBy('state', 'asc')
|
||||||
|
|
@ -17,6 +22,11 @@ class Activity extends Model
|
||||||
->orderBy('created_at', 'desc');
|
->orderBy('created_at', 'desc');
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function games()
|
||||||
|
{
|
||||||
|
return $this->hasMany(ActivityGame::class, 'activity_id');
|
||||||
|
}
|
||||||
|
|
||||||
public function gifts()
|
public function gifts()
|
||||||
{
|
{
|
||||||
return $this->hasMany(ActivityGift::class, 'activity_id');
|
return $this->hasMany(ActivityGift::class, 'activity_id');
|
||||||
|
|
|
||||||
|
|
@ -10,10 +10,19 @@ class ActivityGame extends Model
|
||||||
{
|
{
|
||||||
use HasFactory,Filterable;
|
use HasFactory,Filterable;
|
||||||
|
|
||||||
|
protected $casts = [
|
||||||
|
'game_at' => 'datetime'
|
||||||
|
];
|
||||||
|
|
||||||
protected $fillable = [
|
protected $fillable = [
|
||||||
'state', 'score',
|
'state', 'score',
|
||||||
];
|
];
|
||||||
|
|
||||||
|
public function scopeShow($q)
|
||||||
|
{
|
||||||
|
$q->where('state', '>' ,0);
|
||||||
|
}
|
||||||
|
|
||||||
public function scopeSort($q)
|
public function scopeSort($q)
|
||||||
{
|
{
|
||||||
$q->orderBy('game_at', 'desc');
|
$q->orderBy('game_at', 'desc');
|
||||||
|
|
|
||||||
|
|
@ -21,6 +21,8 @@ Route::group(['prefix' => 'miniprogram', 'namespace' => 'Api\Miniprogram'], func
|
||||||
Route::middleware('auth:sanctum')->group(function(){
|
Route::middleware('auth:sanctum')->group(function(){
|
||||||
// 令牌刷新
|
// 令牌刷新
|
||||||
Route::post('refresh-token', [App\Http\Controllers\Api\AuthController::class, 'refreshToken']);
|
Route::post('refresh-token', [App\Http\Controllers\Api\AuthController::class, 'refreshToken']);
|
||||||
|
// 首页接口
|
||||||
|
Route::get('latest-game', [App\Http\Controllers\Api\ActivityGameController::class, 'latestGame']);
|
||||||
// 已授权绑定手机号
|
// 已授权绑定手机号
|
||||||
Route::middleware([HasBindPhone::class])->group(function(){
|
Route::middleware([HasBindPhone::class])->group(function(){
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue