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