diff --git a/app/Jobs/AgentProductShelve.php b/app/Jobs/AgentProductShelve.php new file mode 100644 index 0000000..d83b7f9 --- /dev/null +++ b/app/Jobs/AgentProductShelve.php @@ -0,0 +1,134 @@ +agent_id; + $product = Product::find($this->product_id); + + //如果没开启自动上架 滚蛋 + if (empty(AgentSetting::val($agent_id, 'auto_shelves'))) { + return; + } + + //如果已经有这个产品 滚蛋 + if(AgentProductItem::query()->where(['product_id' => $product->id,'agent_id' => $agent_id])->exists()) { + return; + } + + //啥有没有 自动添加商品 + DB::beginTransaction(); + try { + $agentProduct = new AgentProduct(); + $agentProduct->title = $product->title; + $agentProduct->agent_id = $agent_id; + $agentProduct->product_id = $product->id; + $agentProduct->product_ids = $product->id; + $agentProduct->stock = $product->stock; + $agentProduct->status = 1; + $agentProduct->pictures = $product->pictures; + $agentProduct->content = $product->content; + $agentProduct->know = $product->know; + $agentProduct->price = $product->price; + $agentProduct->original_price = $product->original_price; + + //自动添加分类 + $autoCategory = AgentSetting::val($agent_id, 'auto_category') ?? 0; + + if (!empty($autoCategory)) { + $categoryName = Category::query()->where('id', $product->category_id)->value('name'); + $category = Category::query()->firstOrCreate(['agent_id' => $agent_id, 'name' => $categoryName]); + $agentProduct->category_id = $category->id; + } + + $agentProduct->save(); + + //维护关联表 + AgentProductItem::query()->create([ + 'agent_id' => $agent_id, + 'supplier_id' => $product->supplier_id, + 'agent_product_id' => $agentProduct->id, + 'product_id' => $product->id, + ]); + + //规格 + $productSpec = ProductSpec::query()->where('product_id',$product->id)->get(); + if (!empty($productSpec)) { + $agentSpecArr = []; + foreach ($productSpec as $spec) { + $agentSpecArr[] = [ + 'agent_product_id' => $agentProduct->id, + 'product_spec_id' => $spec->id, + 'stock' => $spec->stock, + 'original_price' => $spec->original_price, + 'price' => $spec->price, + ]; + } + + $agentProduct->spec()->createMany($agentSpecArr); + } + DB::commit(); + Log::info($agent_id . "自动上架{$product->id}成功!"); + if(env('SMS_SWITCH','') == true) { + $phone = Agent::query()->where('id',$agent_id)->value('contact_mobile'); + (new SmsService)->send('auto_shelves',[$product->supplier->name,now(),SmsTraits::$systeaNameText['agent']],[$phone]); + } + } catch (\Exception $e) { + DB::rollBack(); + Log::error('自动上架失败::' . $e->getTraceAsString()); + throw new \Exception('自动上架失败::' . $e->getTraceAsString()); + } + } +} diff --git a/app/Providers/ProductServiceProvider.php b/app/Providers/ProductServiceProvider.php index f8d09c7..a130184 100644 --- a/app/Providers/ProductServiceProvider.php +++ b/app/Providers/ProductServiceProvider.php @@ -5,17 +5,10 @@ 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\AgentProductItem; -use App\Models\AgentSetting; -use App\Models\Category; use App\Models\Agent; use App\Models\Product; -use App\Models\ProductSpec; -use App\Service\SmsService; -use App\Traits\SmsTraits; -use Illuminate\Support\Facades\DB; -use Illuminate\Support\Facades\Log; use Illuminate\Support\ServiceProvider; class ProductServiceProvider extends ServiceProvider @@ -57,81 +50,8 @@ class ProductServiceProvider extends ServiceProvider ['status', '=', UserStatus::NORMAL] ])->pluck('id'); - foreach ($agentIds as $v) { - //如果没开启自动上架 滚蛋 - if (empty(AgentSetting::val($v, 'auto_shelves'))) { - continue; - } - //如果已经有这个产品 滚蛋 - if(AgentProductItem::query()->where(['product_id' => $product->id,'agent_id' => $v])->exists()){ - continue; - } - //啥有没有 自动添加商品 - DB::beginTransaction(); - try { - $agentProduct = new AgentProduct(); - $agentProduct->title = $product->title; - $agentProduct->agent_id = $v; - $agentProduct->product_id = $product->id; - $agentProduct->product_ids = $product->id; - $agentProduct->stock = $product->stock; - $agentProduct->status = 1; - $agentProduct->pictures = $product->pictures; - $agentProduct->content = $product->content; - $agentProduct->know = $product->know; - //计算价格 - // $profit = AgentSetting::val($v, 'profit') ?? 0; - // $price = bcmul($product->price, bcdiv($profit + 100, 100, 6), 6); - - $agentProduct->price = $product->price; - $agentProduct->original_price = $product->original_price; - - //自动添加分类 - $autoCategory = AgentSetting::val($v, 'auto_category') ?? 0; - - if (!empty($autoCategory)) { - $categoryName = Category::query()->where('id', $product->category_id)->value('name'); - $category = Category::query()->firstOrCreate(['agent_id' => $v, 'name' => $categoryName]); - $agentProduct->category_id = $category->id; - } - - $agentProduct->save(); - - //维护关联表 - $agentProductItem = AgentProductItem::query()->create([ - 'agent_id' => $v, - 'supplier_id' => $product->supplier_id, - 'agent_product_id' => $agentProduct->id, - 'product_id' => $product->id, - ]); - - //规格 - $productSpec = ProductSpec::query()->where('product_id',$product->id)->get(); - if (!empty($productSpec)) { - $agentSpecArr = []; - foreach ($productSpec as $spec) { - $agentSpecArr[] = [ - 'agent_product_id' => $agentProduct->id, - 'product_spec_id' => $spec->id, - 'stock' => $spec->stock, - 'original_price' => $spec->original_price, - 'price' => $spec->price, - ]; - } - - $agentProduct->spec()->createMany($agentSpecArr); - } - DB::commit(); - Log::info($v . "自动上架{$product->id}成功!"); - if(env('SMS_SWITCH','') == true) { - $phone = Agent::query()->where('id',$v)->value('contact_mobile'); - (new SmsService)->send('auto_shelves',[$product->supplier->name,now(),SmsTraits::$systeaNameText['agent']],[$phone]); - } - } catch (\Exception $e) { - Log::error('自动上架失败::' . $e->getTraceAsString()); - DB::rollBack(); - throw new \Exception('自动上架失败::' . $e->getTraceAsString()); - } + foreach ($agentIds as $agent_id) { + AgentProductShelve::dispatch($agent_id, $product->id); } /** 自动上架 END */ }