Browse Source

批量审核产品

master
李可松 4 years ago
parent
commit
e18eebc041
  1. 63
      app/Admin/Actions/Grid/BatchAuditProduct.php
  2. 6
      app/Admin/Controllers/IndustryProductController.php
  3. 6
      app/Admin/Controllers/ProductController.php

63
app/Admin/Actions/Grid/BatchAuditProduct.php

@ -2,11 +2,11 @@
namespace App\Admin\Actions\Grid; namespace App\Admin\Actions\Grid;
use App\Common\ProductStatus;
use App\Models\IndustryProduct;
use App\Models\Product;
use Dcat\Admin\Actions\Response; use Dcat\Admin\Actions\Response;
use Dcat\Admin\Grid\BatchAction; use Dcat\Admin\Grid\BatchAction;
use Dcat\Admin\Traits\HasPermissions;
use Illuminate\Contracts\Auth\Authenticatable;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Http\Request; use Illuminate\Http\Request;
/** /**
@ -19,23 +19,25 @@ class BatchAuditProduct extends BatchAction
/** /**
* @return string * @return string
*/ */
protected $title = '批量审核';
protected $action;
private ?string $title_text;
private $type = null;
public function __construct($title = null)
/**
* BatchAuditProduct constructor.
* @param null $title
* @param int $action 1:通过;2:拒绝
* @param int $type 1:普通产品Product;2:行业产品IndustryProduct;
*/
public function __construct($title = null, $action = 1, $type = 1)
{ {
parent::__construct($title);
}
$this->action = $action;
$this->type = $type;
public function render()
{
$redirect = request()->fullUrl();
$this->title_text = $action == 1 ? '审核通过' : '审核拒绝';
$this->title = '<i class="fa '.($action == 1 ? 'fa-check-square' : 'fa-times-circle') . '"></i> ' . $this->title_text;
return <<<HTML
<a data-name="{$this->parent->getName()}"
data-action="batch-delete"
data-redirect="{$redirect}"
data-url="{$this->resource()}"><i class="fa fa-check-square"></i> {$this->title}</a>
HTML;//拒绝图标:fa-times-circle
parent::__construct($title);
} }
/** /**
@ -47,9 +49,15 @@ HTML;//拒绝图标:fa-times-circle
*/ */
public function handle(Request $request) public function handle(Request $request)
{ {
return $this->response()
->success('Processed successfully: '.json_encode($this->getKey()))
->redirect('/');
$status = $request->action == 1 ? ProductStatus::ON_SALE : ProductStatus::REFUSE;
if ($request->type == 1) {
Product::whereIn('id', $this->getKey())->update(['status' => $status]);
} else {
IndustryProduct::whereIn('id', $this->getKey())->update(['status' => $status]);
}
return $this->response()->success('操作成功!')->refresh();
} }
/** /**
@ -57,24 +65,17 @@ HTML;//拒绝图标:fa-times-circle
*/ */
public function confirm() public function confirm()
{ {
// return ['Confirm?', 'contents'];
return "确定要批量{$this->title_text}吗?";
} }
/**
* @param Model|Authenticatable|HasPermissions|null $user
*
* @return bool
*/
protected function authorize($user): bool
{
return true;
}
/** /**
* @return array * @return array
*/ */
protected function parameters() protected function parameters()
{ {
return [];
return [
'action' => $this->action,
'type' => $this->type,
];
} }
} }

6
app/Admin/Controllers/IndustryProductController.php

@ -2,6 +2,7 @@
namespace App\Admin\Controllers; namespace App\Admin\Controllers;
use App\Admin\Actions\Grid\BatchAuditProduct;
use App\Admin\Extensions\Grid\AuditIndustryProduct; use App\Admin\Extensions\Grid\AuditIndustryProduct;
use App\Admin\Repositories\IndustryProduct; use App\Admin\Repositories\IndustryProduct;
use App\Common\ProductStatus; use App\Common\ProductStatus;
@ -25,6 +26,11 @@ class IndustryProductController extends AdminController
$grid->disableCreateButton(); $grid->disableCreateButton();
$grid->disableDeleteButton(); $grid->disableDeleteButton();
$grid->batchActions([
new BatchAuditProduct(null, 1, 2),
new BatchAuditProduct(null, 2, 2),
]);
//如果是审核页面,多加where条件判断 //如果是审核页面,多加where条件判断
if (strpos(Route::current()->uri, 'audit')) { if (strpos(Route::current()->uri, 'audit')) {
$grid->model()->where('status', UserStatus::UNAUDITED); $grid->model()->where('status', UserStatus::UNAUDITED);

6
app/Admin/Controllers/ProductController.php

@ -32,8 +32,10 @@ class ProductController extends AdminController
$grid->model()->where('status', ProductStatus::UNAUDITED); $grid->model()->where('status', ProductStatus::UNAUDITED);
} }
// $grid->batchActions(new BatchAuditProduct);
// $grid->batchActions(new BatchAuditProduct);
$grid->batchActions([
new BatchAuditProduct(null, 1, 1),
new BatchAuditProduct(null, 2, 1),
]);
$grid->column('id')->sortable(); $grid->column('id')->sortable();
$grid->column('category.name', '分类'); $grid->column('category.name', '分类');

Loading…
Cancel
Save