2 changed files with 90 additions and 0 deletions
			
			
		- 
					85app/AdminAgent/Actions/Grid/ShelveAllSupplierProduct.php
 - 
					5app/AdminAgent/Controllers/AgentProductController.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 []; | 
			
		||||
 | 
				    } | 
			
		||||
 | 
				} | 
			
		||||
						Write
						Preview
					
					
					Loading…
					
					Cancel
						Save
					
		Reference in new issue