From df7ca6839564dc1451e09830a997a24ae0707b51 Mon Sep 17 00:00:00 2001 From: liutk <961510893@qq.com> Date: Sun, 26 May 2024 17:56:43 +0800 Subject: [PATCH] =?UTF-8?q?=E8=B0=83=E6=95=B4=E8=A1=A5=E5=85=85?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/Admin/Controllers/ActivityController.php | 7 ++++- .../Controllers/Api/ActivityController.php | 26 ++++++++++++++++ app/Http/Resources/Api/ActivityResource.php | 2 ++ app/Services/Admin/ActivityService.php | 4 +++ ...71458_add_share_info_to_activity_table.php | 31 +++++++++++++++++++ lang/zh_CN/admin.php | 4 ++- routes/api.php | 1 + 7 files changed, 73 insertions(+), 2 deletions(-) create mode 100644 database/migrations/2024_05_26_171458_add_share_info_to_activity_table.php diff --git a/app/Admin/Controllers/ActivityController.php b/app/Admin/Controllers/ActivityController.php index 26a1319..fe07a21 100644 --- a/app/Admin/Controllers/ActivityController.php +++ b/app/Admin/Controllers/ActivityController.php @@ -105,7 +105,10 @@ class ActivityController extends AdminController amis()->TextControl('name', __('admin.activities.name'))->required(true), Components::make()->cropImageControl('cover', __('admin.activities.cover'), 1.5)->required(true), amis()->DateRangeControl('start_at', __('admin.activities.activity_at'))->extraName('end_at')->clearable(false)->format('YYYY-MM-DD HH:mm:ss')->required(true), - amis()->TextareaControl('rules', __('admin.activities.rules'))->minRows(30) + amis()->TextControl('share_title', __('admin.activities.share_title')), + Components::make()->cropImageControl('share_image', __('admin.activities.share_image'), 1.5), + amis()->TextareaControl('rules', __('admin.activities.rules'))->minRows(30), + ]); } @@ -118,6 +121,8 @@ class ActivityController extends AdminController amis()->TextControl('name', __('admin.activities.name'))->required(true), amis()->Image()->type('static-image')->name('cover')->label( __('admin.activities.cover'))->height('80px')->width('80px')->thumbMode('cover')->enlargeAble(true)->required(true), amis()->DateRangeControl('start_at', __('admin.activities.activity_at'))->extraName('end_at')->clearable(false)->format('YYYY-MM-DD HH:mm:ss')->required(true), + amis()->TextControl('share_title', __('admin.activities.share_title')), + amis()->Image()->type('static-image')->name('share_image')->label( __('admin.activities.share_image'))->height('80px')->width('80px')->thumbMode('cover')->enlargeAble(true), amis()->TextareaControl('rules', __('admin.activities.rules')) ]), ]); diff --git a/app/Http/Controllers/Api/ActivityController.php b/app/Http/Controllers/Api/ActivityController.php index 6f40365..500cfe2 100644 --- a/app/Http/Controllers/Api/ActivityController.php +++ b/app/Http/Controllers/Api/ActivityController.php @@ -53,4 +53,30 @@ class ActivityController extends ApiController return $this->success(['rank_list' => UserActivityResource::collection($list)->resolve(), 'rank_number'=>$rankNumber]); } + + public function latestRankList(Request $request) + { + $activity = Activity::show()->sort()->first(); + $activityId = $activity?->id ?? 0; + //获取排行表 + $list = UserActivity::with('user')->where('activity_id', $activityId)->where('mark', '>', 0)->sort()->limit(30)->get(); + + //获取当前排名; + $userMark = UserActivity::where([ + 'user_id' => $request->user()->id, + 'activity_id' => $activityId, + ])->value('mark'); + + $rankNumber = null; + if($userMark){ + $rankNumber = UserActivity::where('activity_id', $activityId)->where('mark', '>', $userMark)->sort()->count(); + $rankNumber++; + } + + return $this->success([ + 'activity'=> ActivityResource::make($activity)->resolve(), + 'rank_list' => UserActivityResource::collection($list)->resolve(), + 'rank_number'=>$rankNumber, + ]); + } } \ No newline at end of file diff --git a/app/Http/Resources/Api/ActivityResource.php b/app/Http/Resources/Api/ActivityResource.php index 3acced5..f982f8e 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, + 'share_image'=> $this->share_image ?? '', + 'share_title'=> $this->share_title ?? '', 'has_gift' => $this->when($this->has_gift !== null, $this->has_gift), ]; diff --git a/app/Services/Admin/ActivityService.php b/app/Services/Admin/ActivityService.php index d5a7f95..ba57f99 100644 --- a/app/Services/Admin/ActivityService.php +++ b/app/Services/Admin/ActivityService.php @@ -30,6 +30,7 @@ class ActivityService extends BaseService $model = $this->getModel(); $data['cover'] = $this->saveImage('cover', 'activities/cover')[0] ?? ''; + $data['share_image'] = $this->saveImage('share_image', 'activities/share_image')[0] ?? ''; foreach ($data as $k => $v) { if (!in_array($k, $columns)) { @@ -49,6 +50,9 @@ class ActivityService extends BaseService if(isset($data['cover'])){ $data['cover'] = $this->saveImage('cover', 'activities/cover')[0] ?? ''; + } + if(isset($data['share_image'])){ + $data['share_image'] = $this->saveImage('share_image', 'activities/share_image')[0] ?? ''; } foreach ($data as $k => $v) { diff --git a/database/migrations/2024_05_26_171458_add_share_info_to_activity_table.php b/database/migrations/2024_05_26_171458_add_share_info_to_activity_table.php new file mode 100644 index 0000000..dc2107b --- /dev/null +++ b/database/migrations/2024_05_26_171458_add_share_info_to_activity_table.php @@ -0,0 +1,31 @@ +string('share_image')->nullable()->comment('分享图'); + $table->string('share_title')->nullable()->comment('分享文案'); + }); + } + + /** + * Reverse the migrations. + */ + public function down(): void + { + Schema::table('activities', function (Blueprint $table) { + // + $table->dropColumn(['share_image', 'share_title']); + }); + } +}; diff --git a/lang/zh_CN/admin.php b/lang/zh_CN/admin.php index 26b5366..503fe3b 100644 --- a/lang/zh_CN/admin.php +++ b/lang/zh_CN/admin.php @@ -336,7 +336,9 @@ return [ 'end_at' => '结束时间', 'rules' => '规则内容', 'cover' => '活动封面', - 'user_count' => '参与人数' + 'user_count' => '参与人数', + 'share_image' => '分享图', + 'share_title' => '分享文案', ], 'activity_games' => [ 'name' => '场次名称', diff --git a/routes/api.php b/routes/api.php index 73bf5de..414d31f 100644 --- a/routes/api.php +++ b/routes/api.php @@ -32,6 +32,7 @@ Route::group(['prefix' => 'miniprogram', 'namespace' => 'Api\Miniprogram'], func // 活动接口 Route::get('activities', [App\Http\Controllers\Api\ActivityController::class, 'index']); Route::get('activities/rank-list', [App\Http\Controllers\Api\ActivityController::class, 'rankList']); + Route::get('activities/latest-rank-list', [App\Http\Controllers\Api\ActivityController::class, 'latestRankList']); Route::get('activities/{activity}', [App\Http\Controllers\Api\ActivityController::class, 'show']); Route::get('games', [App\Http\Controllers\Api\ActivityGameController::class, 'index']);