97 lines
3.2 KiB
PHP
97 lines
3.2 KiB
PHP
<?php
|
|
|
|
namespace App\Admin\Controllers\Store;
|
|
|
|
use Dcat\Admin\{Form, Grid, Admin};
|
|
use Dcat\Admin\Http\Controllers\AdminController;
|
|
use Dcat\Admin\Models\Administrator;
|
|
use App\Models\{ProductCategory, ProductSku};
|
|
use App\Models\Store\{Store, ProductSku as StoreProductSku};
|
|
|
|
class ProductController extends AdminController
|
|
{
|
|
protected $translation = 'store-product';
|
|
|
|
public function listByStore()
|
|
{
|
|
$user = Admin::user();
|
|
$canAdmin = $this->canAdmin();
|
|
|
|
$query = StoreProductSku::with(['productSku']);
|
|
if ($canAdmin) {
|
|
$query->where('store_id', request('q'));
|
|
} else {
|
|
$stores = $user->stores->pluck('id');
|
|
$query->whereIn('store_id', $stores);
|
|
}
|
|
|
|
$list = $query->get();
|
|
$data = [];
|
|
foreach($list as $item) {
|
|
array_push($data, ['id' => $item->productSku->id, 'text' => $item->productSku->name]);
|
|
}
|
|
return $data;
|
|
}
|
|
|
|
protected function grid()
|
|
{
|
|
$grid = new Grid(StoreProductSku::with(['store', 'productSku']));
|
|
$user = Admin::user();
|
|
$canAdmin = $this->canAdmin();
|
|
if (!$canAdmin) {
|
|
$stores = $user->stores->pluck('id');
|
|
$grid->model()->whereIn('store_id', $stores);
|
|
}
|
|
$grid->model()->orderBy('id', 'desc');
|
|
|
|
$grid->column('productSku.id', 'ID');
|
|
$grid->column('store.title', '店铺');
|
|
$grid->column('productSku.name', '名称');
|
|
$grid->column('productSku.specs', '规格')->label();
|
|
$grid->column('productSku.cost_price', '成本价')->display(function ($value) {
|
|
return bcdiv($value, 100, 2);
|
|
});
|
|
$grid->column('productSku.sell_price', '销售价')->display(function ($value) {
|
|
return bcdiv($value, 100, 2);;
|
|
});
|
|
$grid->column('amount', '库存')->sortable();
|
|
$grid->column('status', '状态')->switch();
|
|
$grid->paginate(10);
|
|
|
|
$grid->showCreateButton($user->can('dcat.admin.store.product.create'));
|
|
$grid->enableDialogCreate();
|
|
|
|
$grid->showDeleteButton($user->can('dcat.admin.store.product.destroy'));
|
|
|
|
$grid->filter(function (Grid\Filter $filter) {
|
|
$filter->panel();
|
|
$filter->equal('store_id')->select('api/store')->width(3);
|
|
$filter->like('productSku.name', '名称')->width(3);
|
|
});
|
|
return $grid;
|
|
}
|
|
|
|
protected function form()
|
|
{
|
|
$form = Form::make(StoreProductSku::with(['productSku']));
|
|
$form->select('store_id')->options(Store::pluck('title', 'id'));
|
|
$form->select('product_sku_id')->options(ProductSku::class)->ajax('api/product-skus');
|
|
$form->switch('status', '状态')->default(1);
|
|
$form->saving(function (Form $form) {
|
|
if ($form->isCreating()) {
|
|
$store_id = $form->input('store_id');
|
|
$product_sku_id = $form->input('product_sku_id');
|
|
if (StoreProductSku::where(compact('store_id', 'product_sku_id'))->exists()) {
|
|
return $form->response()->error('该商品已经存在');
|
|
}
|
|
}
|
|
});
|
|
return $form;
|
|
}
|
|
|
|
protected function canAdmin()
|
|
{
|
|
return Admin::user()->isRole('administrator');
|
|
}
|
|
}
|