From 3cfdae17e32ad94b2e08c0821e72f45421575b78 Mon Sep 17 00:00:00 2001 From: liutk <961510893@qq.com> Date: Sun, 19 May 2024 20:53:36 +0800 Subject: [PATCH] =?UTF-8?q?=E8=A1=A5=E5=85=85=E7=AB=9E=E7=8C=9C=E8=AE=B0?= =?UTF-8?q?=E5=BD=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Controllers/Api/ActivityController.php | 11 ++++++-- app/Http/Controllers/Api/UserController.php | 27 ++++++++++++++----- app/Http/Resources/Api/ActivityResource.php | 2 ++ .../Resources/Api/UserActivityResource.php | 11 ++++++-- app/Models/Activity.php | 3 +-- app/Models/UserActivity.php | 5 ++++ routes/api.php | 1 + 7 files changed, 48 insertions(+), 12 deletions(-) diff --git a/app/Http/Controllers/Api/ActivityController.php b/app/Http/Controllers/Api/ActivityController.php index 557e7ef..6f40365 100644 --- a/app/Http/Controllers/Api/ActivityController.php +++ b/app/Http/Controllers/Api/ActivityController.php @@ -20,9 +20,16 @@ class ActivityController extends ApiController return $this->success(['activities' => ActivityResource::collection($activities)->resolve()]); } - public function show(Activity $activity) + public function show(Activity $activity, Request $request) { - return ActivityResource::make($activity); + $resource = ActivityResource::make($activity); + + //判断当前用户是否在该活动有奖品 + $resource->offsetSet('has_gift', UserActivity::where([ + 'user_id' => $request->user()->id, + 'activity_id' => $activity->id + ])->value('has_gift') ?? 0); + return $resource; } public function rankList(Request $request) diff --git a/app/Http/Controllers/Api/UserController.php b/app/Http/Controllers/Api/UserController.php index 2c41453..dfbc6f9 100644 --- a/app/Http/Controllers/Api/UserController.php +++ b/app/Http/Controllers/Api/UserController.php @@ -4,15 +4,18 @@ namespace App\Http\Controllers\Api; use Cache; use Carbon\Carbon; -use Illuminate\Http\Request; -use App\Http\Requests\CodeRequest; -use App\Http\Requests\UserInfoRequest; -use App\Services\Api\UserService; -use App\Http\Resources\Api\UserResource; +use Slowlyo\OwlAdmin\Admin; use Overtrue\LaravelWeChat\EasyWeChat; +use Illuminate\Http\Request; use Illuminate\Support\Arr; use Illuminate\Support\Facades\Storage; -use Slowlyo\OwlAdmin\Admin; +use App\Services\Api\UserService; +use App\Http\Requests\CodeRequest; +use App\Http\Requests\UserInfoRequest; +use App\Models\Activity; +use App\Models\UserActivity; +use App\Http\Resources\Api\UserResource; +use App\Http\Resources\Api\UserActivityResource; class UserController extends ApiController { @@ -51,6 +54,18 @@ class UserController extends ApiController } } + public function activityList(Request $request) + { + $userActivities = UserActivity::with(['activity' => function($q) { + $q->show(); + }]) + ->where(['user_id'=>$request->user()->id]) + ->orderBy('created_at', 'desc') + ->simplePaginate($request->query('per_page', 20)); + + return $this->success(['activities' => UserActivityResource::collection($userActivities)->resolve()]); + } + public function updateUserInfo(UserInfoRequest $request) { $user = $request->user(); diff --git a/app/Http/Resources/Api/ActivityResource.php b/app/Http/Resources/Api/ActivityResource.php index ef85918..3acced5 100644 --- a/app/Http/Resources/Api/ActivityResource.php +++ b/app/Http/Resources/Api/ActivityResource.php @@ -23,6 +23,8 @@ class ActivityResource extends JsonResource 'start_at' => $this->start_at->format('Y-m-d H:i'), 'end_at' => $this->end_at->format('Y-m-d H:i'), 'state' => $this->state, + + 'has_gift' => $this->when($this->has_gift !== null, $this->has_gift), ]; } diff --git a/app/Http/Resources/Api/UserActivityResource.php b/app/Http/Resources/Api/UserActivityResource.php index 0374ad7..ac71e49 100644 --- a/app/Http/Resources/Api/UserActivityResource.php +++ b/app/Http/Resources/Api/UserActivityResource.php @@ -16,12 +16,19 @@ class UserActivityResource extends JsonResource public function toArray($request) { return [ - 'nick_name' => $this->user?->nick_name ?? '', - 'avatar' => $this->user?->avatar ?? '', + 'nick_name' => $this->whenLoaded('user', function () { + return $this->user?->nick_name ?? ''; + }, ''), + 'avatar' => $this->whenLoaded('user', function () { + return $this->user?->avatar ?? ''; + }, ''), 'join_times' => $this->join_times, 'right_times' => $this->right_times, 'mark' => $this->mark, + 'has_gift' => $this->has_gift, + + 'activity' => ActivityResource::make($this->whenLoaded('activity')) ]; } diff --git a/app/Models/Activity.php b/app/Models/Activity.php index edd99f5..4387ea2 100644 --- a/app/Models/Activity.php +++ b/app/Models/Activity.php @@ -16,8 +16,7 @@ class Activity extends Model ]; public function scopeShow($q){ - $q->where('state', '>' ,0) - ->where('start_at', '<', now()); + $q->where('state', '>' ,0); } public function scopeSort($q) diff --git a/app/Models/UserActivity.php b/app/Models/UserActivity.php index 39d883f..dc2f16e 100644 --- a/app/Models/UserActivity.php +++ b/app/Models/UserActivity.php @@ -23,6 +23,11 @@ class UserActivity extends Model ->orderBy('last_join_at', 'asc'); } + public function activity() + { + return $this->belongsTo(Activity::class, 'activity_id'); + } + public function user() { return $this->belongsTo(User::class, 'user_id'); diff --git a/routes/api.php b/routes/api.php index 46a0101..ff3d75a 100644 --- a/routes/api.php +++ b/routes/api.php @@ -47,6 +47,7 @@ Route::group(['prefix' => 'miniprogram', 'namespace' => 'Api\Miniprogram'], func //更新头像昵称 Route::post('user/update-info', [App\Http\Controllers\Api\UserController::class, 'updateUserInfo']); //竞猜记录 + Route::get('user-activities', [App\Http\Controllers\Api\UserController::class, 'activityList']); //中奖记录 //领奖 //中奖记录详情;