调整补充

main
liutk 2024-05-26 17:56:43 +08:00
parent 166f7850e0
commit df7ca68395
7 changed files with 73 additions and 2 deletions

View File

@ -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'))
]),
]);

View File

@ -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,
]);
}
}

View File

@ -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),
];

View File

@ -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)) {
@ -50,6 +51,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) {
if (!in_array($k, $columns)) {

View File

@ -0,0 +1,31 @@
<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
return new class extends Migration
{
/**
* Run the migrations.
*/
public function up(): void
{
Schema::table('activities', function (Blueprint $table) {
//
$table->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']);
});
}
};

View File

@ -336,7 +336,9 @@ return [
'end_at' => '结束时间',
'rules' => '规则内容',
'cover' => '活动封面',
'user_count' => '参与人数'
'user_count' => '参与人数',
'share_image' => '分享图',
'share_title' => '分享文案',
],
'activity_games' => [
'name' => '场次名称',

View File

@ -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']);