diff --git a/app/Admin/Controllers/ActivityController.php b/app/Admin/Controllers/ActivityController.php index fd4adee..f4cc0a9 100644 --- a/app/Admin/Controllers/ActivityController.php +++ b/app/Admin/Controllers/ActivityController.php @@ -13,6 +13,8 @@ use App\Services\Admin\ActivityService; use App\Traits\CustomActionTrait; use App\Admin\Components; use App\Enums\Score; +use App\Models\Activity; +use Illuminate\Http\Request; class ActivityController extends AdminController { @@ -38,17 +40,42 @@ class ActivityController extends AdminController ->columns([ amis()->TableColumn('id', __('admin.id'))->width('50px')->sortable(), amis()->TableColumn('name', __('admin.activities.name')), - amis()->TableColumn('state', __('admin.activities.state')), + amis()->TableColumn('state', __('admin.activities.state'))->type('mapping')->map([ + "0"=>"未发布", + "1"=>"进行中", + "2"=>"已结束", + "*"=> '其他:${gender}' + ]), + amis()->TableColumn('user_count', __('admin.activities.user_count')), amis()->TableColumn('start_at', __('admin.activities.start_at')), amis()->TableColumn('end_at', __('admin.activities.end_at')), amis()->TableColumn('created_at', __('admin.created_at'))->type('datetime')->sortable(true), Operation::make()->label(__('admin.actions'))->buttons([ - //发布活动-todo - //结算活动(参与时间结束后,且最后一场竞猜结束,点击结算则发送奖品)-todo - $this->rowShowTypeButton('drawer', 'xl'),//活动详情-todo-//竞猜赛程//活动奖品 + //发布活动 + amisMake()->AjaxAction()->label('发布')->icon('fa-regular fa-arrow-alt-circle-up')->level('link') + ->actionType('ajax') + ->confirmText('是否发布该场活动,一旦发布无法删除。') + ->api([ + 'method' => 'put', + 'url' => admin_url('activities/${id}'), + 'data' => [ + 'id' => '${id}', + 'state' => 1 + ] + ])->visibleOn('${state == 0}'), + + $this->rowShowTypeButton('drawer', 'xl'),//活动详情 $this->rowEditTypeButton('drawer', 'lg'), $this->rowDeleteButton()->visibleOn('${state === 0}'), + //结算活动(参与时间结束后,且最后一场竞猜结束,点击结算则发送奖品) + amisMake()->AjaxAction()->label('结算')->icon('fa-regular fa-hand-point-up')->level('link') + ->actionType('ajax') + ->confirmText('是否结算该场活动,一旦结算则根据当前排名发送奖品。') + ->api([ + 'method' => 'post', + 'url' => admin_url('activities/${id}/finish'), + ])->visibleOn('${state == 1}'), ]) ]); @@ -87,7 +114,7 @@ class ActivityController extends AdminController amis()->FieldSetControl()->title('竞猜场次')->body([ amisMake()->CRUDTable()->affixHeader(false)->perPage(10)->loadDataOnce(true) ->headerToolbar([ - DialogAction::make()->className('absolute top-3 right-4')->label(__('admin.create'))->dialog( + DialogAction::make()->className('absolute top-3 right-4')->label(__('admin.create'))->icon('fa fa-add')->level('primary')->dialog( Dialog::make()->title('新增竞猜场次')->body([ amisMake()->form()->title('') ->api([ @@ -109,11 +136,11 @@ class ActivityController extends AdminController amis()->TextControl('game_name', __('admin.activity_games.name'))->required(true), amis()->GroupControl()->mode('horizontal')->body([ amis()->TextControl('home_field', __('admin.activity_games.home_field'))->required(), - Components::make()->cropImageControl('home_logo', __('admin.activity_games.home_logo'))->required(true), + Components::make()->cropImageControl('home_logo', __('admin.activity_games.home_logo')), ]), amis()->GroupControl()->mode('horizontal')->body([ amis()->TextControl('away', __('admin.activity_games.away'))->required(), - Components::make()->cropImageControl('away_logo', __('admin.activity_games.away_logo'))->required(true), + Components::make()->cropImageControl('away_logo', __('admin.activity_games.away_logo')), ]), amis()->DateTimeControl('game_at', __('admin.activity_games.game_at'))->format('YYYY-MM-DD HH:mm:ss')->required(true), Components::make()->sortControl('mark', __('admin.activity_games.mark'))->required(true), @@ -122,9 +149,15 @@ class ActivityController extends AdminController ) ]) ->title('') - ->api(admin_url('activity_games?_action=getData&state=1&activity_id=${id}')) + ->api(admin_url('activity_games?_action=getData&activity_id=${id}')) ->columns([ amis()->TableColumn('name', __('admin.activity_games.name')), + amis()->TableColumn('state', __('admin.activity_games.state'))->type('mapping')->map([ + "0"=>"未发布", + "1"=>"进行中", + "2"=>"已结束", + "*"=> '其他:${gender}' + ]), amis()->TableColumn('home_field', __('admin.activity_games.home_field')), amis()->TableColumn('home_logo', __('admin.activity_games.home_logo'))->type('image')->height('30px')->width('30px'), amis()->TableColumn('away', __('admin.activity_games.away')), @@ -133,32 +166,112 @@ class ActivityController extends AdminController amis()->TableColumn('mark', __('admin.activity_games.mark')), amis()->TableColumn('score', __('admin.activity_games.score')), amisMake()->Operation()->label(__('admin.actions'))->buttons([ - // amisMake()->AjaxAction()->label('发布')->level('link') - // ->actionType('ajax') - // ->confirmText(__('admin.confirm_delete')) - // ->api([ - // 'method' => 'delete', - // 'url' => admin_url('activity_games/${id}') - // ]) + amisMake()->DialogAction()->label('编辑') + ->level('link') + ->dialog(Dialog::make()->title('编辑竞猜场次')->body([ + amisMake()->form()->title('') + ->api('put:'. admin_url('activity_games/${id}')) + ->body([ + amis()->TextControl('id', '场次ID')->hidden(true)->value('${id}'), + amis()->TextControl('name', __('admin.activity_games.name'))->required(true), + amis()->GroupControl()->mode('horizontal')->body([ + amis()->TextControl('home_field', __('admin.activity_games.home_field'))->required(), + Components::make()->cropImageControl('home_logo', __('admin.activity_games.home_logo')), + ]), + amis()->GroupControl()->mode('horizontal')->body([ + amis()->TextControl('away', __('admin.activity_games.away'))->required(), + Components::make()->cropImageControl('away_logo', __('admin.activity_games.away_logo')), + ]), + amis()->DateTimeControl('game_at', __('admin.activity_games.game_at'))->format('YYYY-MM-DD HH:mm:ss')->required(true), + Components::make()->sortControl('mark', __('admin.activity_games.mark'))->required(true), + ]) + ])->size('lg')) + ->hiddenOn('${state == 2}'), + amisMake()->AjaxAction()->label('发布')->level('link') + ->actionType('ajax') + ->confirmText('是否发布该场竞猜') + ->api([ + 'method' => 'put', + 'url' => admin_url('activity_games/${id}'), + 'data' => [ + 'id' => '${id}', + 'state' => 1 + ] + ])->visibleOn('${state == 0}'), amisMake()->AjaxAction()->label('删除')->level('link') ->actionType('ajax') ->confirmText(__('admin.confirm_delete')) ->api([ 'method' => 'delete', 'url' => admin_url('activity_games/${id}') - ])->visibleOn('${state} == 0'), + ])->visibleOn('${state == 0}'), amisMake()->DialogAction()->label('结果') ->level('link') ->dialog(Dialog::make()->title('比赛结果')->body([ amisMake()->form()->title('') - ->api('put:'.admin_url('/activity_games/${id}')) + ->api('post:' .admin_url('activity_games/${id}/finish')) ->body([ - amis()->TextControl('id', '场次ID')->hidden(true)->value('${id}'), - amis()->TextControl('state', '状态')->hidden(true)->value(2), amis()->SelectControl('score', __('admin.activity_games.score')) - ->options(Score::options()), + ->options(Score::options())->required(), ]) - ]))->visibleOn('${state} == 1'), + ]))->visibleOn('${state == 1}'), + ]), + ]) + ]), + amis()->FieldSetControl()->title('活动奖品')->className('mt-10')->body([ + amisMake()->CRUDTable()->affixHeader(false)->perPage(10)->loadDataOnce(true) + ->headerToolbar([ + DialogAction::make()->className('absolute top-3 right-4')->label(__('admin.create'))->icon('fa fa-add')->level('primary')->dialog( + Dialog::make()->title('新增活动奖品')->body([ + amisMake()->form()->title('') + ->api([ + 'method'=>'post', + 'url'=>admin_url('activity_gifts'), + "data" => [ + 'activity_id'=>'${activity_id}', + 'name'=>'${gift_name}', + 'logo'=>'${logo}', + 'rank'=>'${rank}', + 'explain'=>'${explain}', + ], + ]) + ->body([ + amis()->TextControl('activity_id', '活动ID')->hidden(true)->value('${id}'), + amis()->TextControl('gift_name', __('admin.activity_gifts.name'))->required(true), + Components::make()->cropImageControl('logo', __('admin.activity_gifts.logo')), + Components::make()->sortControl('rank', __('admin.activity_gifts.rank'))->required(true), + amis()->TextareaControl('explain', __('admin.activity_gifts.explain')) + ]) + ])->size('lg') + ) + ]) + ->title('') + ->api(admin_url('activity_gifts?_action=getData&activity_id=${id}')) + ->columns([ + amis()->TableColumn('name', __('admin.activity_gifts.name')), + amis()->TableColumn('logo', __('admin.activity_gifts.logo'))->type('image')->height('30px')->width('30px'), + amis()->TableColumn('rank', __('admin.activity_gifts.rank')), + amisMake()->Operation()->label(__('admin.actions'))->buttons([ + amisMake()->DialogAction()->label('编辑') + ->level('link') + ->dialog(Dialog::make()->title('编辑活动奖品')->body([ + amisMake()->form()->title('') + ->api('put:'. admin_url('activity_gifts/${id}')) + ->body([ + amis()->TextControl('id', '奖品ID')->hidden(true)->value('${id}'), + amis()->TextControl('name', __('admin.activity_gifts.name'))->required(true), + Components::make()->cropImageControl('logo', __('admin.activity_gifts.logo')), + Components::make()->sortControl('rank', __('admin.activity_gifts.rank'))->required(true), + amis()->TextareaControl('explain', __('admin.activity_gifts.explain')) + ]) + ])->size('lg')), + amisMake()->AjaxAction()->label('删除')->level('link') + ->actionType('ajax') + ->confirmText(__('admin.confirm_delete')) + ->api([ + 'method' => 'delete', + 'url' => admin_url('activity_gifts/${id}') + ]), ]), ]) ]), @@ -174,4 +287,17 @@ class ActivityController extends AdminController amis()->Button()->actionType('cancel')->label(__('admin.back'))->primary() ]; } + + /** + * 结算活动,并发送奖品 + */ + public function finish(Activity $activity) + { + //若存在未公布结果的比赛场次,无法结算; + if($activity->games()->where('state', '<>', 2)->exists()){ + return $this->response()->fail('该活动存在未公布结果的竞猜场次,请先公布结果'); + } + $res = $this->service->finishActivity($activity); + return $this->autoResponse($res, '结算'); + } } \ No newline at end of file diff --git a/app/Admin/Controllers/ActivityGameController.php b/app/Admin/Controllers/ActivityGameController.php new file mode 100644 index 0000000..901dff9 --- /dev/null +++ b/app/Admin/Controllers/ActivityGameController.php @@ -0,0 +1,73 @@ +baseCRUD()->tableLayout('fixed') + ->headerToolbar([ + + ]) + ->filter($this->baseFilter()->labelWidth('80px')->body([ + ])) + ->columns([ + + ]); + + return $this->baseList($crud); + } + + public function form($isEdit = false): Form + { + return $this->baseForm()->body([ + + ]); + } + + public function detail() + { + $form = amisMake()->form()->title('')->panelClassName('border-r border-t-0 border-b-0 border-l-0')->mode('horizontal') + ->static(true)->actions([]) + ->body([ + + ]); + + return amisMake()->Grid()->columns([ + amis()->Column()->body($form)->md(4), + amis()->Column()->body([ + ])->md(8), + ]); + } + + public function detailActions() + { + return [ + //返回 + amis()->Button()->actionType('cancel')->label(__('admin.back'))->primary() + ]; + } + + /** + * 公布结果,并添加成绩 + */ + public function finish(ActivityGame $activityGame, Request $request) + { + $res = $this->service->finishGame($activityGame, $request->input('score')); + + return $this->autoResponse($res, '操作'); + } +} \ No newline at end of file diff --git a/app/Admin/Controllers/ActivityGiftController.php b/app/Admin/Controllers/ActivityGiftController.php new file mode 100644 index 0000000..8f57af2 --- /dev/null +++ b/app/Admin/Controllers/ActivityGiftController.php @@ -0,0 +1,61 @@ +baseCRUD()->tableLayout('fixed') + ->headerToolbar([ + + ]) + ->filter($this->baseFilter()->labelWidth('80px')->body([ + ])) + ->columns([ + + ]); + + return $this->baseList($crud); + } + + public function form($isEdit = false): Form + { + return $this->baseForm()->body([ + + ]); + } + + public function detail() + { + $form = amisMake()->form()->title('')->panelClassName('border-r border-t-0 border-b-0 border-l-0')->mode('horizontal') + ->static(true)->actions([]) + ->body([ + + ]); + + return amisMake()->Grid()->columns([ + amis()->Column()->body($form)->md(4), + amis()->Column()->body([ + ])->md(8), + ]); + } + + public function detailActions() + { + return [ + //返回 + amis()->Button()->actionType('cancel')->label(__('admin.back'))->primary() + ]; + } +} \ No newline at end of file diff --git a/app/Admin/routes.php b/app/Admin/routes.php index 69c979c..3763979 100644 --- a/app/Admin/routes.php +++ b/app/Admin/routes.php @@ -34,10 +34,14 @@ Route::group([ $router->resource('users', \App\Admin\Controllers\UserController::class)->only(['index', 'show']); + $router->post('activities/{activity}/finish', [\App\Admin\Controllers\ActivityController::class, 'finish']); $router->resource('activities', \App\Admin\Controllers\ActivityController::class); + $router->post('activity_games/{activity_game}/finish', [\App\Admin\Controllers\ActivityGameController::class, 'finish']); $router->resource('activity_games', \App\Admin\Controllers\ActivityGameController::class); + $router->resource('activity_gifts', \App\Admin\Controllers\ActivityGiftController::class); + //修改上传 $router->post('upload_file', [\App\Admin\Controllers\IndexController::class, 'uploadFile']); $router->post('upload_image', [\App\Admin\Controllers\IndexController::class, 'uploadImage']); diff --git a/app/Models/Activity.php b/app/Models/Activity.php index 2537b82..02597e7 100644 --- a/app/Models/Activity.php +++ b/app/Models/Activity.php @@ -16,4 +16,14 @@ class Activity extends Model ->orderBy('end_at', 'desc') ->orderBy('created_at', 'desc'); } + + public function gifts() + { + return $this->hasMany(ActivityGift::class, 'activity_id'); + } + + public function logs() + { + return $this->hasMany(UserActivity::class, 'activity_id'); + } } diff --git a/app/Models/ActivityGame.php b/app/Models/ActivityGame.php index 8dd4ed7..b33b477 100644 --- a/app/Models/ActivityGame.php +++ b/app/Models/ActivityGame.php @@ -10,8 +10,22 @@ class ActivityGame extends Model { use HasFactory,Filterable; + protected $fillable = [ + 'state', 'score', + ]; + public function scopeSort($q) { - + $q->orderBy('game_at', 'desc'); + } + + public function logs() + { + return $this->hasMany(UserGame::class, 'game_id'); + } + + public function activity() + { + return $this->belongsTo(Activity::class, 'activity_id'); } } diff --git a/app/Models/ActivityGift.php b/app/Models/ActivityGift.php index 667ed52..ebfff84 100644 --- a/app/Models/ActivityGift.php +++ b/app/Models/ActivityGift.php @@ -4,8 +4,14 @@ namespace App\Models; use Illuminate\Database\Eloquent\Factories\HasFactory; use Illuminate\Database\Eloquent\Model; +use EloquentFilter\Filterable; class ActivityGift extends Model { - use HasFactory; + use HasFactory,Filterable; + + public function scopeSort($q) + { + $q->orderBy('rank', 'asc'); + } } diff --git a/app/Models/Filters/ActivityGameFilter.php b/app/Models/Filters/ActivityGameFilter.php new file mode 100644 index 0000000..f8a1615 --- /dev/null +++ b/app/Models/Filters/ActivityGameFilter.php @@ -0,0 +1,17 @@ +where('id', $id); + } +} diff --git a/app/Models/Filters/ActivityGiftFilter.php b/app/Models/Filters/ActivityGiftFilter.php new file mode 100644 index 0000000..7f250c7 --- /dev/null +++ b/app/Models/Filters/ActivityGiftFilter.php @@ -0,0 +1,17 @@ +where('id', $id); + } +} diff --git a/app/Models/UserActivity.php b/app/Models/UserActivity.php index dd162d7..85434f7 100644 --- a/app/Models/UserActivity.php +++ b/app/Models/UserActivity.php @@ -8,4 +8,15 @@ use Illuminate\Database\Eloquent\Model; class UserActivity extends Model { use HasFactory; + + protected $fillable = [ + 'mark','has_gift' + ]; + + public function scopeSort($q) + { + $q->orderBy('mark', 'desc') + ->orderBy('right_time', 'desc') + ->orderBy('last_join_at', 'asc'); + } } diff --git a/app/Models/UserGame.php b/app/Models/UserGame.php index 348edf3..b5185bf 100644 --- a/app/Models/UserGame.php +++ b/app/Models/UserGame.php @@ -8,4 +8,8 @@ use Illuminate\Database\Eloquent\Model; class UserGame extends Model { use HasFactory; + + protected $fillable = [ + 'is_right' + ]; } diff --git a/app/Services/Admin/ActivityGameService.php b/app/Services/Admin/ActivityGameService.php new file mode 100644 index 0000000..6f11815 --- /dev/null +++ b/app/Services/Admin/ActivityGameService.php @@ -0,0 +1,106 @@ +getTableColumns(); + $model = $this->getModel(); + + $data['home_logo'] = $this->saveImage('home_logo', 'activity_games/home_logo')[0] ?? Storage::disk('public')->url('images/default-gamelogo.png'); + $data['away_logo'] = $this->saveImage('away_logo', 'activity_games/away_logo')[0] ?? Storage::disk('public')->url('images/default-gamelogo.png'); + + foreach ($data as $k => $v) { + if (!in_array($k, $columns)) { + continue; + } + + $model->setAttribute($k, $v); + } + + return $model->save(); + } + + public function update($primaryKey, $data): bool + { + $columns = $this->getTableColumns(); + $model = $this->query()->whereKey($primaryKey)->first(); + + if(array_key_exists('home_logo', $data)){ + $data['home_logo'] = $this->saveImage('home_logo', 'activity_games/home_logo')[0] ?? Storage::disk('public')->url('images/default-gamelogo.png'); + } + if(array_key_exists('away_logo', $data)){ + $data['away_logo'] = $this->saveImage('away_logo', 'activity_games/away_logo')[0] ?? Storage::disk('public')->url('images/default-gamelogo.png'); + } + + foreach ($data as $k => $v) { + if (!in_array($k, $columns)) { + continue; + } + + $model->setAttribute($k, $v); + } + + return $model->save(); + } + + + public function delete(string $ids): mixed + { + $ids = explode(',', $ids); + //判断活动未发布,才可删除 + if($this->query()->whereIn('id', $ids)->where('state', '<>', 0)->exists()){ + $this->setError('已发布竞猜不能删除'); + } + return $this->query()->whereIn('id', $ids)->delete(); + } + + public function finishGame(ActivityGame $activityGame, $score) + { + try{ + DB::beginTransaction(); + //更新状态,结果 + $activityGame->update([ + 'state' => 2, + 'score' => $score + ]); + $activityGame->logs()->where('score', $score)->update(['is_right'=>1]); + $activityGame->activity->logs()->whereIn('user_id', + $activityGame->logs()->where('score', $score)->get()->pluck('user_id')->toArray() + ) + ->incrementEach([ + 'mark'=> $activityGame->mark, + 'right_time'=> 1 + ]); + + DB::commit(); + }catch(Throwable $th){ + DB::rollBack(); + report($th); + return $this->setError('系统错误,请刷新后重试'); + } + + return true; + } +} \ No newline at end of file diff --git a/app/Services/Admin/ActivityGiftService.php b/app/Services/Admin/ActivityGiftService.php new file mode 100644 index 0000000..ea77338 --- /dev/null +++ b/app/Services/Admin/ActivityGiftService.php @@ -0,0 +1,61 @@ +getTableColumns(); + $model = $this->getModel(); + + $data['logo'] = $this->saveImage('logo', 'activity_gifts/logo')[0] ?? Storage::disk('public')->url('images/default-gamelogo.png'); + + foreach ($data as $k => $v) { + if (!in_array($k, $columns)) { + continue; + } + + $model->setAttribute($k, $v); + } + + return $model->save(); + } + + public function update($primaryKey, $data): bool + { + $columns = $this->getTableColumns(); + $model = $this->query()->whereKey($primaryKey)->first(); + + if(array_key_exists('logo', $data)){ + $data['logo'] = $this->saveImage('logo', 'activity_gifts/logo')[0] ?? Storage::disk('public')->url('images/default-gamelogo.png'); + } + + foreach ($data as $k => $v) { + if (!in_array($k, $columns)) { + continue; + } + + $model->setAttribute($k, $v); + } + + return $model->save(); + } + +} \ No newline at end of file diff --git a/app/Services/Admin/ActivityService.php b/app/Services/Admin/ActivityService.php index fe6a3c8..c16f457 100644 --- a/app/Services/Admin/ActivityService.php +++ b/app/Services/Admin/ActivityService.php @@ -69,4 +69,45 @@ class ActivityService extends BaseService } return $this->query()->whereIn('id', $ids)->delete(); } + + public function finishActivity(Activity $activity) + { + try{ + DB::beginTransaction(); + //更新活动状态; + $activity->update(['state' => 2]); + //获取活动奖品; + $activityGifts = $activity->gifts()->sort()->get(); + //获取当前排名; + $activityRanklist = $activity->logs()->sort()->get(); + //组装获奖名单,并批量插入; + $userGifts = $userIds = []; + foreach($activityGifts as $gift){ + $_userGift = [ + 'user_id' => $activityRanklist->get($gift->rank -1)?->user_id ?? 0, + 'activity_id' => $activity->id, + 'gift_id' => $gift->id, + ]; + if($_userGift['user_id']){ + $userGifts[] = $_userGift; + $userIds[] = $_userGift['user_id']; + } + } + if(count($userGifts) > 0){ + DB::table('user_gifts')->insert($userGifts); + } + //更新活动记录; + $activity->logs()->whereIn('user_id', $userIds)->update([ + 'has_gift' => 1 + ]); + + DB::commit(); + }catch(Throwable $th){ + DB::rollBack(); + report($th); + return $this->setError('系统错误,请刷新后重试'); + } + + return true; + } } \ No newline at end of file diff --git a/database/migrations/2024_05_16_153926_create_user_activities_table.php b/database/migrations/2024_05_16_153926_create_user_activities_table.php index 94b0821..367fdad 100644 --- a/database/migrations/2024_05_16_153926_create_user_activities_table.php +++ b/database/migrations/2024_05_16_153926_create_user_activities_table.php @@ -21,6 +21,8 @@ return new class extends Migration $table->timestamp('last_join_at')->comment('最后一次竞猜时间'); $table->unsignedTinyInteger('has_gift')->default(0)->comment('是否获奖'); $table->timestamps(); + + $table->unique(['user_id', 'activity_id']); }); } diff --git a/database/migrations/2024_05_16_154821_create_user_games_table.php b/database/migrations/2024_05_16_154821_create_user_games_table.php index b2a0c50..d241150 100644 --- a/database/migrations/2024_05_16_154821_create_user_games_table.php +++ b/database/migrations/2024_05_16_154821_create_user_games_table.php @@ -20,6 +20,8 @@ return new class extends Migration $table->enum('score', Score::options())->nullable()->comment('竞猜结果'); $table->unsignedTinyInteger('is_right')->default(0)->comment('是否答对'); $table->timestamps(); + + $table->unique(['user_id', 'game_id']); }); } diff --git a/lang/zh_CN/admin.php b/lang/zh_CN/admin.php index d749229..5caa4ac 100644 --- a/lang/zh_CN/admin.php +++ b/lang/zh_CN/admin.php @@ -321,7 +321,8 @@ return [ 'start_at' => '开始时间', 'end_at' => '结束时间', 'rules' => '规则内容', - 'cover' => '活动封面' + 'cover' => '活动封面', + 'user_count' => '参与人数' ], 'activity_games' => [ 'name' => '场次名称', @@ -330,7 +331,13 @@ return [ 'away' => '客场', 'away_logo' => '客场logo', 'game_at' => '比赛时间', - 'mark' => '分数', - 'score' => '比赛结果' - ] + 'mark' => '奖励', + 'score' => '比分' + ], + 'activity_gifts' => [ + 'name' => '奖品名称', + 'logo' => '奖品图片', + 'rank' => '奖励名次', + 'explain' => '领奖说明', + ], ]; diff --git a/storage/app/public/.gitignore b/storage/app/public/.gitignore index d6b7ef3..221ee11 100755 --- a/storage/app/public/.gitignore +++ b/storage/app/public/.gitignore @@ -1,2 +1,4 @@ * +!images/ +!images/default-gamelogo.png !.gitignore diff --git a/storage/app/public/images/default-gamelogo.png b/storage/app/public/images/default-gamelogo.png new file mode 100644 index 0000000..2c0baf1 Binary files /dev/null and b/storage/app/public/images/default-gamelogo.png differ