5 changed files with 93 additions and 65 deletions
-
5app/Jobs/AgentProductShelve.php
-
74app/Jobs/ProductSaved.php
-
18app/Models/Product.php
-
60app/Providers/ProductServiceProvider.php
-
1config/app.php
@ -0,0 +1,74 @@ |
|||
<?php |
|||
|
|||
namespace App\Jobs; |
|||
|
|||
use App\Common\AgentType; |
|||
use App\Common\UserStatus; |
|||
use App\Models\Agent; |
|||
use App\Models\AgentProduct; |
|||
use App\Models\Product; |
|||
use Illuminate\Bus\Queueable; |
|||
use Illuminate\Contracts\Queue\ShouldBeUnique; |
|||
use Illuminate\Contracts\Queue\ShouldQueue; |
|||
use Illuminate\Foundation\Bus\Dispatchable; |
|||
use Illuminate\Queue\InteractsWithQueue; |
|||
use Illuminate\Queue\SerializesModels; |
|||
|
|||
class ProductSaved implements ShouldQueue |
|||
{ |
|||
use Dispatchable, InteractsWithQueue, Queueable, SerializesModels; |
|||
|
|||
/** |
|||
* 任务可尝试的次数 |
|||
* @var int |
|||
*/ |
|||
public $tries = 3; |
|||
|
|||
/** |
|||
* 任务失败前允许的最大异常数 |
|||
* @var int |
|||
*/ |
|||
public $maxExceptions = 3; |
|||
|
|||
/** |
|||
* Create a new job instance. |
|||
* |
|||
* @return void |
|||
*/ |
|||
public function __construct(protected Product $product) |
|||
{ |
|||
|
|||
} |
|||
|
|||
/** |
|||
* Execute the job. |
|||
* |
|||
* @return void |
|||
*/ |
|||
public function handle() |
|||
{ |
|||
$product = $this->product; |
|||
/** 同步信息到代理商产品 START */ |
|||
AgentProduct::query() |
|||
->where(['type' => 0, 'product_id' => $product->id]) |
|||
->update([ |
|||
'title' => $product->title, |
|||
'know' => $product->know, |
|||
'content' => $product->content, |
|||
'pictures' => $product->pictures, |
|||
]); |
|||
/** 同步信息到代理商产品 END */ |
|||
|
|||
/** 自动上架 START */ |
|||
Agent::query()->where([ |
|||
['id', '>', 1], //1是总管理员,不处理
|
|||
['type', '<>', AgentType::OPERATOR], |
|||
['status', '=', UserStatus::NORMAL] |
|||
])->select(['id'])->chunk(100, function ($agents) use ($product) { |
|||
foreach ($agents as $agent) { |
|||
AgentProductShelve::dispatch($agent['id'], $product->id); |
|||
} |
|||
}); |
|||
/** 自动上架 END */ |
|||
} |
|||
} |
|||
@ -1,60 +0,0 @@ |
|||
<?php |
|||
|
|||
namespace App\Providers; |
|||
|
|||
use App\Common\AgentType; |
|||
use App\Common\ProductStatus; |
|||
use App\Common\UserStatus; |
|||
use App\Jobs\AgentProductShelve; |
|||
use App\Models\AgentProduct; |
|||
use App\Models\Agent; |
|||
use App\Models\Product; |
|||
use Illuminate\Support\ServiceProvider; |
|||
|
|||
class ProductServiceProvider extends ServiceProvider |
|||
{ |
|||
/** |
|||
* Register services. |
|||
* |
|||
* @return void |
|||
*/ |
|||
public function register() |
|||
{ |
|||
//
|
|||
} |
|||
|
|||
/** |
|||
* Bootstrap services. |
|||
* |
|||
* @return void |
|||
*/ |
|||
public function boot() |
|||
{ |
|||
Product::saved(function ($product) { |
|||
if ($product->isDirty('status') && $product->status == ProductStatus::ON_SALE) { |
|||
/** 同步信息到代理商产品 START */ |
|||
AgentProduct::query() |
|||
->where(['type' => 0, 'product_id' => $product->id]) |
|||
->update([ |
|||
'title' => $product->title, |
|||
'know' => $product->know, |
|||
'content' => $product->content, |
|||
'pictures' => $product->pictures, |
|||
]); |
|||
/** 同步信息到代理商产品 END */ |
|||
|
|||
/** 自动上架 START */ |
|||
Agent::query()->where([ |
|||
['id', '>', 1], //1是总管理员,不处理
|
|||
['type', '<>', AgentType::OPERATOR], |
|||
['status', '=', UserStatus::NORMAL] |
|||
])->select(['id'])->chunk(100, function ($agents) use ($product) { |
|||
foreach ($agents as $agent) { |
|||
AgentProductShelve::dispatch($agent['id'], $product->id); |
|||
} |
|||
}); |
|||
/** 自动上架 END */ |
|||
} |
|||
}); |
|||
} |
|||
} |
|||
Write
Preview
Loading…
Cancel
Save
Reference in new issue