generated from liutk/owl-admin-base
完善后台
parent
831af90170
commit
1788620e8f
|
|
@ -43,9 +43,9 @@ class UserController extends AdminController
|
|||
amis()->TableColumn('last_login_at', __('admin.users.last_login_at')),
|
||||
amis()->TableColumn('last_ip', __('admin.users.last_login_ip')),
|
||||
|
||||
Operation::make()->label(__('admin.actions'))->buttons([
|
||||
$this->rowShowTypeButton('drawer', 'xl'),
|
||||
])
|
||||
// Operation::make()->label(__('admin.actions'))->buttons([
|
||||
// $this->rowShowTypeButton('drawer', 'xl'),
|
||||
// ])
|
||||
]);
|
||||
|
||||
return $this->baseList($crud);
|
||||
|
|
@ -57,10 +57,47 @@ class UserController extends AdminController
|
|||
]);
|
||||
}
|
||||
|
||||
public function detail(): Form
|
||||
public function detail()
|
||||
{
|
||||
return $this->baseDetail()->body([
|
||||
$form = amisMake()->form()->title('')->panelClassName('border-r border-t-0 border-b-0 border-l-0')->mode('horizontal')
|
||||
->static(true)->actions([])
|
||||
->body([
|
||||
amis()->FieldSetControl()->title('用户信息')->body([
|
||||
amis()->TextControl('nick_name', __('admin.users.nick_name'))->required(true),
|
||||
amis()->Image()->type('static-image')->name('avatar')->label( __('admin.users.avatar'))->height('80px')->width('80px')->thumbMode('cover')->enlargeAble(true)->required(true),
|
||||
amis()->TextControl('phone', __('admin.users.phone'))->required(true),
|
||||
amis()->DateTimeControl('created_at', __('admin.users.created_at'))->format('YYYY-MM-DD HH:mm:ss')->required(true),
|
||||
amis()->DateTimeControl('bind_phone_at', __('admin.users.bind_phone_at'))->format('YYYY-MM-DD HH:mm:ss')->required(true),
|
||||
|
||||
amis()->TextControl('last_ip', __('admin.users.last_login_ip'))->required(true),
|
||||
amis()->DateTimeControl('last_login_at', __('admin.users.last_login_at'))->format('YYYY-MM-DD HH:mm:ss')->required(true),
|
||||
]),
|
||||
]);
|
||||
|
||||
return amisMake()->Grid()->columns([
|
||||
amis()->Column()->body($form)->md(4),
|
||||
amis()->Column()->body([
|
||||
amisMake()->form()->title('')->panelClassName('border-0')->mode('horizontal')
|
||||
->static(true)->actions([])
|
||||
->body([
|
||||
amis()->FieldSetControl()->title('竞猜场次')->body([
|
||||
amisMake()->CRUDTable()->affixHeader(false)->perPage(10)->loadDataOnce(true)
|
||||
->title('')
|
||||
->api()
|
||||
->columns([
|
||||
|
||||
]),
|
||||
])
|
||||
])
|
||||
])->md(8),
|
||||
]);
|
||||
}
|
||||
|
||||
public function detailActions()
|
||||
{
|
||||
return [
|
||||
//返回
|
||||
amis()->Button()->actionType('cancel')->label(__('admin.back'))->primary()
|
||||
];
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,93 @@
|
|||
<?php
|
||||
|
||||
namespace App\Admin\Controllers;
|
||||
|
||||
use Slowlyo\OwlAdmin\Admin;
|
||||
use Slowlyo\OwlAdmin\Renderers\Page;
|
||||
use Slowlyo\OwlAdmin\Renderers\Form;
|
||||
use Slowlyo\OwlAdmin\Renderers\Operation;
|
||||
use Slowlyo\OwlAdmin\Renderers\Dialog;
|
||||
use Slowlyo\OwlAdmin\Renderers\DialogAction;
|
||||
use Slowlyo\OwlAdmin\Controllers\AdminController;
|
||||
use App\Services\Admin\UserGameService;
|
||||
use App\Models\Activity;
|
||||
use Illuminate\Http\Request;
|
||||
|
||||
class UserGameController extends AdminController
|
||||
{
|
||||
protected string $serviceName = UserGameService::class;
|
||||
|
||||
public function list(): Page
|
||||
{
|
||||
$crud = $this->baseCRUD()->tableLayout('fixed')
|
||||
->headerToolbar([
|
||||
amis('reload')->align('right'),
|
||||
amis('filter-toggler')->align('right'),
|
||||
])
|
||||
->filter($this->baseFilter()->labelWidth('80px')->body([
|
||||
amis()->GroupControl()->mode('horizontal')->body([
|
||||
amis()->SelectControl('activity', __('admin.activities.name'))->options(Activity::sort()->pluck('name', 'id')->toArray())
|
||||
->columnRatio(3),
|
||||
amis()->TextControl('user_name', __('admin.users.nick_name'))
|
||||
->columnRatio(3)
|
||||
->placeholder(__('admin.users.nick_name')),
|
||||
amis()->TextControl('user_phone', __('admin.users.phone'))
|
||||
->columnRatio(3)
|
||||
->placeholder(__('admin.users.phone')),
|
||||
])
|
||||
]))
|
||||
->columns([
|
||||
amis()->TableColumn('activity.name', __('admin.activities.name')),
|
||||
amis()->TableColumn('game.name', __('admin.activity_games.name')),
|
||||
amis()->TableColumn('user.nick_name', __('admin.users.nick_name')),
|
||||
amis()->TableColumn('user.phone', __('admin.users.phone'))->copyable(),
|
||||
amis()->TableColumn('score', __('admin.user_games.score')),
|
||||
amis()->TableColumn('is_right', __('admin.user_games.is_right'))->type('mapping')->map([
|
||||
"0"=>"-",
|
||||
"1"=>"<span class='label label-danger'>正确</span>",
|
||||
]),
|
||||
]);
|
||||
|
||||
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 shipping(UserGift $userGift, Request $request)
|
||||
{
|
||||
$res = $this->service->shippingGift($userGift, $request->input());
|
||||
|
||||
return $this->autoResponse($res, '发货');
|
||||
}
|
||||
}
|
||||
|
|
@ -43,8 +43,10 @@ Route::group([
|
|||
$router->resource('activity_gifts', \App\Admin\Controllers\ActivityGiftController::class);
|
||||
|
||||
$router->post('user_gifts/{user_gift}/shipping', [\App\Admin\Controllers\UserGiftController::class, 'shipping']);
|
||||
$router->resource('user_gifts', \App\Admin\Controllers\UserGiftController::class);
|
||||
$router->resource('user_gifts', \App\Admin\Controllers\UserGiftController::class)->only(['index']);
|
||||
|
||||
$router->resource('user_games', \App\Admin\Controllers\UserGameController::class)->only(['index']);
|
||||
|
||||
//修改上传
|
||||
$router->post('upload_file', [\App\Admin\Controllers\IndexController::class, 'uploadFile']);
|
||||
$router->post('upload_image', [\App\Admin\Controllers\IndexController::class, 'uploadImage']);
|
||||
|
|
|
|||
|
|
@ -0,0 +1,28 @@
|
|||
<?php
|
||||
|
||||
namespace App\Models\Filters;
|
||||
|
||||
use Illuminate\Support\Arr;
|
||||
use EloquentFilter\ModelFilter;
|
||||
|
||||
class UserGameFilter extends ModelFilter
|
||||
{
|
||||
public function activityId($activity)
|
||||
{
|
||||
return $this->where('activity_id', $activityId);
|
||||
}
|
||||
|
||||
public function userName($userName)
|
||||
{
|
||||
return $this->whereHas('user', function($q) use ($userName) {
|
||||
return $q->where('nick_name', 'like', '%'.$userName.'%');
|
||||
});
|
||||
}
|
||||
|
||||
public function userPhone($userPhone)
|
||||
{
|
||||
return $this->whereHas('user', function($q) use ($userPhone) {
|
||||
return $q->where('phone', 'like', $userPhone.'%');
|
||||
});
|
||||
}
|
||||
}
|
||||
|
|
@ -4,10 +4,11 @@ namespace App\Models;
|
|||
|
||||
use Illuminate\Database\Eloquent\Factories\HasFactory;
|
||||
use Illuminate\Database\Eloquent\Model;
|
||||
use EloquentFilter\Filterable;
|
||||
|
||||
class UserGame extends Model
|
||||
{
|
||||
use HasFactory;
|
||||
use HasFactory, Filterable;
|
||||
|
||||
protected $fillable = [
|
||||
'user_id',
|
||||
|
|
@ -16,4 +17,19 @@ class UserGame extends Model
|
|||
'score',
|
||||
'is_right'
|
||||
];
|
||||
|
||||
public function user()
|
||||
{
|
||||
return $this->belongsTo(User::class, 'user_id');
|
||||
}
|
||||
|
||||
public function activity()
|
||||
{
|
||||
return $this->belongsTo(Activity::class, 'activity_id');
|
||||
}
|
||||
|
||||
public function game()
|
||||
{
|
||||
return $this->belongsTo(ActivityGame::class, 'game_id');
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -0,0 +1,21 @@
|
|||
<?php
|
||||
|
||||
namespace App\Services\Admin;
|
||||
|
||||
use App\Models\UserGame;
|
||||
use App\Models\Filters\UserGameFilter;
|
||||
use Illuminate\Support\Arr;
|
||||
|
||||
/**
|
||||
* @method UserGame getModel()
|
||||
* @method UserGame|\Illuminate\Database\Query\Builder query()
|
||||
*/
|
||||
class UserGameService extends BaseService
|
||||
{
|
||||
protected string $modelName = UserGame::class;
|
||||
|
||||
protected string $modelFilterName = UserGameFilter::class;
|
||||
|
||||
protected array $withRelationships = ['user', 'game', 'activity'];
|
||||
|
||||
}
|
||||
|
|
@ -25,7 +25,8 @@ class AdminMenuSeeder extends Seeder
|
|||
['title' => 'activity', 'icon' => 'akar-icons:star', 'url' => '/activity', 'order' => 3,
|
||||
'children' => [
|
||||
['title'=> 'activites', 'icon'=> 'bx:football', 'url' => '/activities', 'order'=>1],
|
||||
['title'=> 'user_gifts', 'icon'=> 'akar-icons:gift', 'url' => '/user_gifts', 'order'=>1],
|
||||
['title'=> 'user_games', 'icon'=> 'material-symbols:list-alt-outline', 'url' => '/user_games', 'order'=>2],
|
||||
['title'=> 'user_gifts', 'icon'=> 'akar-icons:gift', 'url' => '/user_gifts', 'order'=>3],
|
||||
]
|
||||
],
|
||||
['title' => 'web_content', 'icon' => 'ic:outline-collections-bookmark', 'url' => '', 'order'=>4,
|
||||
|
|
|
|||
|
|
@ -362,5 +362,9 @@ return [
|
|||
'shipping_company' => '快递公司',
|
||||
'shipping_number' => '快递号码',
|
||||
'state' => '状态',
|
||||
],
|
||||
'user_games' => [
|
||||
'score' => '竞猜比分',
|
||||
'is_right' => '状态',
|
||||
]
|
||||
];
|
||||
|
|
|
|||
|
|
@ -15,6 +15,7 @@ return [
|
|||
'ads' => '广告管理',
|
||||
'activity' => '活动中心',
|
||||
'activites'=> '足彩竞猜',
|
||||
'user_games' => '竞猜记录',
|
||||
'user_gifts' => '获奖列表',
|
||||
'users' => '会员管理'
|
||||
];
|
||||
|
|
|
|||
Loading…
Reference in New Issue