Store
parent
611fbb9934
commit
22b80d067f
|
|
@ -2,12 +2,15 @@
|
||||||
|
|
||||||
namespace App\Admin\Controllers;
|
namespace App\Admin\Controllers;
|
||||||
|
|
||||||
use App\Models\Store;
|
use App\Models\{Store, ProductSku};
|
||||||
use Dcat\Admin\Form;
|
use Dcat\Admin\Form;
|
||||||
use Dcat\Admin\Grid;
|
use Dcat\Admin\Grid;
|
||||||
use Dcat\Admin\Show;
|
use Dcat\Admin\Show;
|
||||||
use Dcat\Admin\Http\Controllers\AdminController;
|
use Dcat\Admin\Http\Controllers\AdminController;
|
||||||
use Carbon\Carbon;
|
use Carbon\Carbon;
|
||||||
|
use Dcat\Admin\Admin;
|
||||||
|
use Illuminate\Support\Facades\DB;
|
||||||
|
use Dcat\Admin\Models\Administrator;
|
||||||
|
|
||||||
class StoreController extends AdminController
|
class StoreController extends AdminController
|
||||||
{
|
{
|
||||||
|
|
@ -18,8 +21,16 @@ class StoreController extends AdminController
|
||||||
*/
|
*/
|
||||||
protected function grid()
|
protected function grid()
|
||||||
{
|
{
|
||||||
return Grid::make(new Store(), function (Grid $grid) {
|
$query = Store::query();
|
||||||
|
$user = Admin::user();
|
||||||
|
$canAdmin = $this->canAdmin();
|
||||||
|
if (!$canAdmin) {
|
||||||
|
$ids = DB::table('store_admin_users')->where('admin_user_id', $user->id)->pluck('store_id');
|
||||||
|
$query = $query->whereIn('id', $ids);
|
||||||
|
}
|
||||||
|
|
||||||
|
return Grid::make($query, function (Grid $grid) use ($canAdmin) {
|
||||||
|
|
||||||
$grid->model()->sort();
|
$grid->model()->sort();
|
||||||
|
|
||||||
$grid->column('id');
|
$grid->column('id');
|
||||||
|
|
@ -29,10 +40,9 @@ class StoreController extends AdminController
|
||||||
$grid->column('sort');
|
$grid->column('sort');
|
||||||
$grid->column('created_at');
|
$grid->column('created_at');
|
||||||
|
|
||||||
$grid->disableCreateButton(false);
|
$grid->disableCreateButton(!$canAdmin);
|
||||||
$grid->enableDialogCreate();
|
|
||||||
$grid->setDialogFormDimensions('40%', '70%');
|
|
||||||
$grid->showEditButton();
|
$grid->showEditButton();
|
||||||
|
$grid->showViewButton();
|
||||||
|
|
||||||
$grid->filter(function (Grid\Filter $filter) {
|
$grid->filter(function (Grid\Filter $filter) {
|
||||||
$filter->panel();
|
$filter->panel();
|
||||||
|
|
@ -50,13 +60,65 @@ class StoreController extends AdminController
|
||||||
*/
|
*/
|
||||||
protected function detail($id)
|
protected function detail($id)
|
||||||
{
|
{
|
||||||
return Show::make($id, new Store(), function (Show $show) {
|
$query = Store::query();
|
||||||
|
$user = Admin::user();
|
||||||
|
$canAdmin = $this->canAdmin();
|
||||||
|
if (!$canAdmin) {
|
||||||
|
$ids = DB::table('store_admin_users')->where('admin_user_id', $user->id)->pluck('store_id');
|
||||||
|
$query = $query->whereIn('id', $ids);
|
||||||
|
}
|
||||||
|
return Show::make($id, $query, function (Show $show) use ($canAdmin) {
|
||||||
|
|
||||||
$show->field('id');
|
$show->field('id');
|
||||||
$show->field('title');
|
$show->field('title');
|
||||||
$show->field('image');
|
$show->field('image')->image();
|
||||||
|
$show->field('sort');
|
||||||
|
$show->field('status')->using([ 0 => '关闭', 1 => '开启' ]);
|
||||||
$show->field('remarks');
|
$show->field('remarks');
|
||||||
$show->field('created_at');
|
$show->field('created_at');
|
||||||
$show->field('updated_at');
|
|
||||||
|
if ($canAdmin) {
|
||||||
|
$show->relation('admin_users', function ($model) {
|
||||||
|
$grid = new Grid(new Administrator());
|
||||||
|
|
||||||
|
$grid->model()->join('store_admin_users', function ($join) use ($model) {
|
||||||
|
$join->on('store_admin_users.admin_user_id', 'id')->where('store_id', '=', $model->id);
|
||||||
|
});
|
||||||
|
|
||||||
|
$grid->column('id');
|
||||||
|
$grid->column('username');
|
||||||
|
$grid->column('name');
|
||||||
|
|
||||||
|
$grid->quickSearch(['username', 'name']);
|
||||||
|
|
||||||
|
$grid->paginate(10);
|
||||||
|
$grid->disableActions();
|
||||||
|
|
||||||
|
return $grid;
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
$show->relation('product_skus', function ($model) {
|
||||||
|
$grid = new Grid(new ProductSku());
|
||||||
|
|
||||||
|
$grid->model()->join('store_product_skus', function ($join) use ($model) {
|
||||||
|
$join->on('store_product_skus.product_sku_id', 'id')->where('store_id', '=', $model->id);
|
||||||
|
});
|
||||||
|
|
||||||
|
$grid->quickSearch(['name']);
|
||||||
|
|
||||||
|
$grid->column('name');
|
||||||
|
$grid->column('specs')->label();
|
||||||
|
|
||||||
|
$grid->paginate(10);
|
||||||
|
$grid->disableActions();
|
||||||
|
|
||||||
|
return $grid;
|
||||||
|
});
|
||||||
|
|
||||||
|
$show->panel()->tools(function ($tools) {
|
||||||
|
$tools->disableDelete();
|
||||||
|
});
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -67,22 +129,31 @@ class StoreController extends AdminController
|
||||||
*/
|
*/
|
||||||
protected function form()
|
protected function form()
|
||||||
{
|
{
|
||||||
return Form::make(Store::with(['adminUsers', 'productSkus']), function (Form $form) {
|
$query = Store::with(['adminUsers', 'productSkus']);
|
||||||
|
$user = Admin::user();
|
||||||
|
$canAdmin = $this->canAdmin();
|
||||||
|
if (!$canAdmin) {
|
||||||
|
$ids = DB::table('store_admin_users')->where('admin_user_id', $user->id)->pluck('store_id');
|
||||||
|
$query = $query->whereIn('id', $ids);
|
||||||
|
}
|
||||||
|
return Form::make($query, function (Form $form) use ($canAdmin) {
|
||||||
$form->display('id');
|
$form->display('id');
|
||||||
$form->text('title');
|
$form->text('title');
|
||||||
$form->switch('status')->default(1);
|
$form->switch('status')->default(1);
|
||||||
$form->number('sort')->min(1)->default(1);
|
$form->number('sort')->min(1)->default(1);
|
||||||
|
|
||||||
$form->multipleSelectTable('admin_users')
|
if ($canAdmin) {
|
||||||
->from(\App\Admin\Renderable\AdministratorTable::make())
|
$form->multipleSelectTable('admin_users')
|
||||||
->model(\Dcat\Admin\Models\Administrator::class, 'id', 'name')
|
->from(\App\Admin\Renderable\AdministratorTable::make())
|
||||||
->customFormat(function ($v) {
|
->model(Administrator::class, 'id', 'name')
|
||||||
if (! $v) {
|
->customFormat(function ($v) {
|
||||||
return [];
|
if (! $v) {
|
||||||
}
|
return [];
|
||||||
return array_column($v, 'id');
|
}
|
||||||
});
|
return array_column($v, 'id');
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
$form->multipleSelectTable('product_skus')
|
$form->multipleSelectTable('product_skus')
|
||||||
->from(\App\Admin\Renderable\ProductSkuSimpleTable::make())
|
->from(\App\Admin\Renderable\ProductSkuSimpleTable::make())
|
||||||
->model(\App\Models\ProductSku::class, 'id', 'name')
|
->model(\App\Models\ProductSku::class, 'id', 'name')
|
||||||
|
|
@ -93,6 +164,7 @@ class StoreController extends AdminController
|
||||||
return array_column($v, 'id');
|
return array_column($v, 'id');
|
||||||
});
|
});
|
||||||
$form->image('image')
|
$form->image('image')
|
||||||
|
->required()
|
||||||
->move('store/'.Carbon::now()->toDateString())
|
->move('store/'.Carbon::now()->toDateString())
|
||||||
->saveFullUrl()
|
->saveFullUrl()
|
||||||
->removable(false)
|
->removable(false)
|
||||||
|
|
@ -100,6 +172,13 @@ class StoreController extends AdminController
|
||||||
->autoUpload();
|
->autoUpload();
|
||||||
|
|
||||||
$form->text('remarks');
|
$form->text('remarks');
|
||||||
|
|
||||||
|
$form->disableDeleteButton();
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
protected function canAdmin()
|
||||||
|
{
|
||||||
|
return Admin::user()->isRole('administrator');
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue