<?php namespace app\queue\redis; use app\admin\logic\store_product\StoreProductLogic; use app\common\model\store_product\StoreProduct; use app\common\model\system_store_storage\SystemStoreStorage; use Webman\RedisQueue\Consumer; use support\Log; /** * 复制商品 */ class CopyProductSend implements Consumer { // 要消费的队列名 public $queue = 'copy-product'; // 连接名,对应 plugin/webman/redis-queue/redis.php 里的连接` public $connection = 'default'; // 消费 public function consume($data) { $store_arr=$data['store_arr']; $stock=$data['stock']??0; $admin_id=$data['admin_id']??0; foreach ($store_arr as $key => $id) { StoreProductLogic::copy($data['product_id'],$id,0); if($stock>0){ $stocks=StoreProduct::where('id',$data['product_id'])->value('stock'); if($stocks>=$stock){ SystemStoreStorage::create(['product_id'=>$data['product_id'],'store_id'=>$id,'nums'=>$stock,'admin_id'=>$admin_id]);//设置库存 StoreProduct::where('id',$data['product_id'])->dec('stock',$stock)->update();//减少库存 }else{ SystemStoreStorage::create(['product_id'=>$data['product_id'],'store_id'=>$id,'nums'=>$stock,'admin_id'=>$admin_id,'status'=>-1,'mark'=>'库存不足']);//设置库存 } } } } public function onConsumeFailure(\Throwable $e, $package) { $package['max_attempts']=0; Log::error('复制商品失败product_id:'.$package['data']['product_id']); return $package; } }