From 42e95677ef6308edb993579f858d2da0e0e988ec Mon Sep 17 00:00:00 2001
From: mkm <727897186@qq.com>
Date: Thu, 6 Jun 2024 18:02:41 +0800
Subject: [PATCH] =?UTF-8?q?feat(store=5Fproduct):=20=E7=BC=96=E8=BE=91?=
 =?UTF-8?q?=E6=88=90=E5=8A=9F=EF=BC=8C=E5=A2=9E=E5=8A=A0=E5=BA=93=E5=AD=98?=
 =?UTF-8?q?=E6=93=8D=E4=BD=9C=E6=88=90=E5=8A=9F=E9=80=BB=E8=BE=91?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 .../StoreBranchProductController.php          |  2 +-
 .../logic/store_product/StoreProductLogic.php | 10 +++++-
 app/queue/redis/CopyProductSend.php           | 15 +++++++-
 app/queue/redis/StoreStorageSend.php          | 34 +++++++++++++++++++
 4 files changed, 58 insertions(+), 3 deletions(-)
 create mode 100644 app/queue/redis/StoreStorageSend.php

diff --git a/app/admin/controller/store_branch_product/StoreBranchProductController.php b/app/admin/controller/store_branch_product/StoreBranchProductController.php
index e7706f37b..9c586c698 100644
--- a/app/admin/controller/store_branch_product/StoreBranchProductController.php
+++ b/app/admin/controller/store_branch_product/StoreBranchProductController.php
@@ -62,7 +62,7 @@ class StoreBranchProductController extends BaseAdminController
                 return $this->fail(StoreProductLogic::getError());
             }
         }
-        return $this->success('编辑成功', [], 1, 1);
+        return $this->success('操作成功,等待门店确认', [], 1, 1);
     }
 
     /**
diff --git a/app/admin/logic/store_product/StoreProductLogic.php b/app/admin/logic/store_product/StoreProductLogic.php
index ffcddac35..7d9bbb020 100644
--- a/app/admin/logic/store_product/StoreProductLogic.php
+++ b/app/admin/logic/store_product/StoreProductLogic.php
@@ -10,6 +10,8 @@ use app\common\model\store_branch_product_attr_value\StoreBranchProductAttrValue
 use app\common\model\store_category\StoreCategory;
 use app\common\model\store_product_attr_value\StoreProductAttrValue;
 use app\common\model\system_store\SystemStore;
+use app\common\model\system_store_storage\SystemStoreStorage;
+use app\Request;
 use think\facade\Db;
 use Webman\RedisQueue\Redis;
 
@@ -264,7 +266,13 @@ class StoreProductLogic extends BaseLogic
     public static function stock($data){
         Db::startTrans();
         try {
-            StoreBranchProduct::where(['id' => $data['id']])->inc('stock',$data['stock'])->update();
+            $find=StoreBranchProduct::where(['id' => $data['id']])->find();
+            SystemStoreStorage::create([
+                'product_id' => $find['product_id'],
+                'store_id' => $find['store_id'],
+                'nums' => $data['stock'],
+                'admin_id' => Request()->adminId,
+            ]);
             Db::commit();
             return true;
         } catch (\Exception $e) {
diff --git a/app/queue/redis/CopyProductSend.php b/app/queue/redis/CopyProductSend.php
index 05866eadb..c0854bdf5 100644
--- a/app/queue/redis/CopyProductSend.php
+++ b/app/queue/redis/CopyProductSend.php
@@ -3,6 +3,8 @@
 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;
 
@@ -22,8 +24,19 @@ class CopyProductSend implements Consumer
     {
         $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,$stock);
+            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)
diff --git a/app/queue/redis/StoreStorageSend.php b/app/queue/redis/StoreStorageSend.php
new file mode 100644
index 000000000..16ecc6598
--- /dev/null
+++ b/app/queue/redis/StoreStorageSend.php
@@ -0,0 +1,34 @@
+<?php
+
+namespace app\queue\redis;
+
+use app\admin\logic\store_product\StoreProductLogic;
+use Webman\RedisQueue\Consumer;
+use support\Log;
+
+/**
+ * 门店库存记录商品
+ */
+class StoreStorageSend implements Consumer
+{
+    // 要消费的队列名
+    public $queue = 'store_storage';
+
+    // 连接名,对应 plugin/webman/redis-queue/redis.php 里的连接`
+    public $connection = 'default';
+
+    // 消费
+    public function consume($data)
+    {
+        // $product_id=$data['product_id'];
+        // $store_id=$data['store_id'];
+        // $store_id=$data['store_id'];
+        // StoreBranchProduct::w
+    }
+    public function onConsumeFailure(\Throwable $e, $package)
+    {
+        $package['max_attempts']=0;
+        Log::error('复制商品失败product_id:'.$package['data']['product_id']);
+        return $package;
+    }
+}
\ No newline at end of file