sunhao 5 years ago
parent
commit
871f818af2
4 changed files with 48 additions and 0 deletions
  1. 10 0
      app/GoodsSkus.php
  2. 20 0
      app/Http/Controllers/Admin/OrderController.php
  3. 16 0
      app/RedisModel.php
  4. 2 0
      config/constants.php

+ 10 - 0
app/GoodsSkus.php

@@ -22,5 +22,15 @@ class GoodsSkus extends Model
22 22
         $quantity = $sku_quantity - $w_num - $fx_num;
23 23
         return $quantity;
24 24
     }
25
+
26
+    public static function actualQuantityByRedis($sku_id){
27
+        //计算实际库存 -还未到卖家云的量
28
+        $sku_quantity = GoodsSkus::where('id', $sku_id)->pluck('quantity');
29
+        $redisKey = config('SKU_QUANTITY_TABLE');
30
+        $w_num = RedisModel::hGet($redisKey, $sku_id);
31
+        if(!$w_num) $w_num = 0;
32
+        $quantity = $sku_quantity - $w_num;
33
+        return $quantity;
34
+    }
25 35
    
26 36
 }

+ 20 - 0
app/Http/Controllers/Admin/OrderController.php

@@ -840,6 +840,26 @@ class OrderController extends Controller
840 840
             }
841 841
             
842 842
             DB::commit();
843
+
844
+            // +++++ 新加预占库存到redis
845
+            $order_skus = OrderGoodsSkus::select(DB::raw('sum(num) as num, sku_id'))->where('order_id', $res)->where('is_del', 0)->groupBy('sku_id')->get();
846
+            $redis_table = config('SKU_QUANTITY_TABLE');
847
+            $sku_redis = array();
848
+            foreach($order_skus as $k=>$item){
849
+                #记录sku到redis
850
+                $sku_id = $item->sku_id;
851
+                $num = $item->num;
852
+                if(!isset($sku_redis[$sku_id])){
853
+                    $sku_redis[$sku_id] = $num;
854
+                }else{
855
+                    $sku_redis[$sku_id] += $num;
856
+                }
857
+            }
858
+            foreach($sku_redis as $key => $val){
859
+                $sku_redis_val = RedisModel::hGet($redis_table, $key);
860
+                $sku_up_val = $sku_redis_val>0 ? ($sku_redis_val + $val) : $val;
861
+                RedisModel::hSet($redis_table, $key, $sku_up_val);
862
+            }
843 863
         }catch (Exception $e){
844 864
             DB::rollback();
845 865
         }   

+ 16 - 0
app/RedisModel.php

@@ -45,4 +45,20 @@ class RedisModel extends Model
45 45
         $redis = self::_init();
46 46
         return $redis->lpop( $key );
47 47
     }
48
+
49
+    public static function hSet( $table, $column, $value ){
50
+        $redis = self::_init();
51
+        return $redis->hSet( $table, $column, $value );
52
+    }
53
+
54
+    public static function hGet( $table, $column ){
55
+        $redis = self::_init();
56
+        return $redis->hGet( $table, $column );
57
+    }
58
+
59
+    public static function hDel( $table, $column ){
60
+        $redis = self::_init();
61
+        return $redis->hDel( $table, $column );
62
+    }
63
+
48 64
 }

+ 2 - 0
config/constants.php

@@ -9,5 +9,7 @@ return [
9 9
     'ESHOP_CODE' => '100|hxas', //卖家云店铺code
10 10
     //'ESHOP_CODE' => '100|xyxd', //卖家云店铺code
11 11
     'WAREHOUSE_CODE' => '28416',//卖家云仓库编码
12
+    //未到卖家云的sku库存rediskey前缀
13
+    'SKU_QUANTITY_TABLE' => 'seafood.sku_wmj_quantity',
12 14
 
13 15
 ];