Browse Source

上架所有供应商产品

master
李可松 4 years ago
parent
commit
b17591ee11
  1. 85
      app/AdminAgent/Actions/Grid/ShelveAllSupplierProduct.php
  2. 5
      app/AdminAgent/Controllers/AgentProductController.php

85
app/AdminAgent/Actions/Grid/ShelveAllSupplierProduct.php

@ -0,0 +1,85 @@
<?php
namespace App\AdminAgent\Actions\Grid;
use App\Common\ProductStatus;
use App\Jobs\AgentProductShelve;
use App\Models\Product;
use Dcat\Admin\Actions\Response;
use Dcat\Admin\Admin;
use Dcat\Admin\Grid\Tools\AbstractTool;
use Dcat\Admin\Traits\HasPermissions;
use Illuminate\Contracts\Auth\Authenticatable;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Http\Request;
class ShelveAllSupplierProduct extends AbstractTool
{
/**
* @return string
*/
protected $title = '上架所有供应商产品';
protected function html()
{
$this->appendHtmlAttribute('class', 'btn btn-primary btn-outline');
return <<<HTML
<button {$this->formatHtmlAttributes()}>{$this->title()}</button>
HTML;
}
/**
* Handle the action request.
*
* @param Request $request
*
* @return Response
*/
public function handle(Request $request)
{
Product::select(['id'])->where([
['status', '=', ProductStatus::ON_SALE],
['stock', '>', 0]
])->chunk(200, function ($products) {
foreach ($products as $product) {
AgentProductShelve::dispatch(Admin::user()->id, $product->id);
}
});
return $this->response()->success('操作成功,此操作可能需要几分钟,请耐心等待')->refresh();
}
/**
* @return string|void
*/
protected function href()
{
// return admin_url('auth/users');
}
/**
* @return string|array|void
*/
public function confirm()
{
return ['确定要上架所有供应商的全部产品吗?'];
}
/**
* @param Model|Authenticatable|HasPermissions|null $user
*
* @return bool
*/
protected function authorize($user): bool
{
return true;
}
/**
* @return array
*/
protected function parameters()
{
return [];
}
}

5
app/AdminAgent/Controllers/AgentProductController.php

@ -2,6 +2,7 @@
namespace App\AdminAgent\Controllers; namespace App\AdminAgent\Controllers;
use App\AdminAgent\Actions\Grid\ShelveAllSupplierProduct;
use App\AdminAgent\Forms\LoadSupplierSpec; use App\AdminAgent\Forms\LoadSupplierSpec;
use App\AdminAgent\Renderable\SelectGuide; use App\AdminAgent\Renderable\SelectGuide;
use App\AdminAgent\Renderable\SelectProduct; use App\AdminAgent\Renderable\SelectProduct;
@ -35,6 +36,7 @@ class AgentProductController extends AdminController
return Grid::make(new AgentProduct(['product.supplier:id,company_name', 'category:id,name']), function (Grid $grid) { return Grid::make(new AgentProduct(['product.supplier:id,company_name', 'category:id,name']), function (Grid $grid) {
$agent_id = Admin::user()->id; $agent_id = Admin::user()->id;
$grid->model()->where('agent_id', $agent_id); $grid->model()->where('agent_id', $agent_id);
if ($source = request()->input('source')) { if ($source = request()->input('source')) {
if ($source == 1) { if ($source == 1) {
$grid->model()->where('product_id', 0); $grid->model()->where('product_id', 0);
@ -43,6 +45,9 @@ class AgentProductController extends AdminController
} }
} }
# 上架所有供应商产品
$grid->tools(new ShelveAllSupplierProduct);
$grid->column('id')->sortable(); $grid->column('id')->sortable();
$grid->column('product.supplier.company_name')->limit(8); $grid->column('product.supplier.company_name')->limit(8);
$grid->column('picture', '产品图片')->image('', 60, 60); $grid->column('picture', '产品图片')->image('', 60, 60);

Loading…
Cancel
Save