Browse Source

产品顶部统计

gorden 5 months ago
parent
commit
70ae3e129e
1 changed files with 42 additions and 32 deletions
  1. 42 32
      app/admin/service/goods/GoodsService.php

+ 42 - 32
app/admin/service/goods/GoodsService.php

@@ -222,7 +222,7 @@ class GoodsService
             ->get()
             ->toArray();
 
-        $total = Goods::leftJoin('goods_running', 'goods_running.join_running_goods_id', '=', 'goods.goods_id')
+        $totalModel = Goods::leftJoin('goods_running', 'goods_running.join_running_goods_id', '=', 'goods.goods_id')
             ->when($goodsName != '', function ($query) use ($goodsName) {
                 $query->where(function ($q) use ($goodsName) {
                     $q->where('goods_name', 'like', '%' . $goodsName . '%');
@@ -238,7 +238,7 @@ class GoodsService
                 } else if ($classify == 'RECHARGE' && empty($categoryId)) {
                     $query->where('goods_status', 'ON');
                     $query->where('goods_classify', $classify);
-                }  else if ($classify != 'GOODS' && empty($categoryId)) {
+                } else if ($classify != 'GOODS' && empty($categoryId)) {
                     $query->where('goods_classify', $classify);
                 }
             })->when(!empty($type), function ($query) use ($type) {
@@ -249,8 +249,13 @@ class GoodsService
                 $query->where('join_goods_supplier_id', $goodsSupplierId);
             })->when(!empty($goodsStatus), function ($query) use ($goodsStatus) {
                 $query->where('goods_status', $goodsStatus);
-            })
-            ->count();
+            });
+        $goodsOnTotalModel = clone $totalModel;
+        $goodsOnTotal = $goodsOnTotalModel->where('goods_status', 'ON')->count();
+        $goodsWarningTotalModel = clone $totalModel;
+        $goodsWarningTotal = $goodsWarningTotalModel->where('goods_running_storage', '<=', 2)->count();
+
+        $total = $totalModel->count();
 
         foreach ($rows as &$row) {
             $row['goods_cover'] = getenv('STORAGE_DOMAIN') . $row['goods_cover'];
@@ -265,7 +270,7 @@ class GoodsService
             }
         }
 
-        return json_success('', compact('rows', 'page', 'pageSize', 'total'));
+        return json_success('', compact('rows', 'page', 'pageSize', 'total', 'goodsOnTotal', 'goodsWarningTotal'));
     }
 
     public static function selectSpecial(Request $request)
@@ -308,12 +313,19 @@ class GoodsService
             ->forPage($page, $pageSize)
             ->get()
             ->toArray();
-        $total = Goods::when($goodsName != '', function ($query) use ($goodsName) {
+        $totalModel = Goods::when($goodsName != '', function ($query) use ($goodsName) {
             $query->where(function ($q) use ($goodsName) {
                 $q->where('goods_name', 'like', '%' . $goodsName . '%');
-//                    ->OrWhere('goods_title', 'like', '%' . $goodsName . '%');
             });
-        })->whereIn('join_goods_category_id', $categoryId)->count();
+        })->leftJoin('goods_running', 'goods_running.join_running_goods_id', '=', 'goods.goods_id')
+            ->whereIn('join_goods_category_id', $categoryId);
+
+        $goodsOnTotalModel = clone $totalModel;
+        $goodsOnTotal = $goodsOnTotalModel->where('goods_status', 'ON')->count();
+        $goodsWarningTotalModel = clone $totalModel;
+        $goodsWarningTotal = $goodsWarningTotalModel->where('goods_running_storage', '<=', 2)->count();
+
+        $total = $totalModel->count();
 
         foreach ($rows as &$row) {
             $row['goods_cover'] = getenv('STORAGE_DOMAIN') . $row['goods_cover'];
@@ -322,7 +334,7 @@ class GoodsService
             }
         }
 
-        return json_success('', compact('rows', 'page', 'pageSize', 'total'));
+        return json_success('', compact('rows', 'page', 'pageSize', 'total', 'goodsOnTotal', 'goodsWarningTotal'));
     }
 
     public static function selectPicking(Request $request)
@@ -375,14 +387,20 @@ class GoodsService
             ->forPage($page, $pageSize)
             ->get()
             ->toArray();
-        $total = Goods::when($goodsName != '', function ($query) use ($goodsName) {
+        $totalModel = Goods::when($goodsName != '', function ($query) use ($goodsName) {
             $query->where(function ($q) use ($goodsName) {
                 $q->where('goods_name', 'like', '%' . $goodsName . '%')
                     ->OrWhere('goods_title', 'like', '%' . $goodsName . '%');
             });
-        })->whereIn('join_goods_category_id', $categoryIds)
-            ->count();
+        })->leftJoin('goods_running', 'goods_running.join_running_goods_id', '=', 'goods.goods_id')
+            ->whereIn('join_goods_category_id', $categoryIds);
 
+        $goodsOnTotalModel = clone $totalModel;
+        $goodsOnTotal = $goodsOnTotalModel->where('goods_status', 'ON')->count();
+        $goodsWarningTotalModel = clone $totalModel;
+        $goodsWarningTotal = $goodsWarningTotalModel->where('goods_running_storage', '<=', 2)->count();
+
+        $total = $totalModel->count();
         foreach ($rows as &$row) {
             $row['goods_cover'] = getenv('STORAGE_DOMAIN') . $row['goods_cover'];
             if (isset($row['running'])) {
@@ -390,7 +408,7 @@ class GoodsService
             }
         }
 
-        return json_success('', compact('rows', 'page', 'pageSize', 'total'));
+        return json_success('', compact('rows', 'page', 'pageSize', 'total', 'goodsOnTotal', 'goodsWarningTotal'));
     }
 
     public static function selectPackage(Request $request)
@@ -431,39 +449,31 @@ class GoodsService
             ->forPage($page, $pageSize)
             ->get()
             ->toArray();
-        $total = Goods::when($goodsName != '', function ($query) use ($goodsName) {
+        $totalModel = Goods::when($goodsName != '', function ($query) use ($goodsName) {
             $query->where(function ($q) use ($goodsName) {
                 $q->where('goods_name', 'like', '%' . $goodsName . '%')
                     ->OrWhere('goods_title', 'like', '%' . $goodsName . '%');
             });
         })->when($categoryId != null, function ($query) use ($categoryId) {
             $query->where('join_goods_category_id', $categoryId);
-        })->where('goods_classify', 'PACKAGE')->count();
+        })->leftJoin('goods_running', 'goods_running.join_running_goods_id', '=', 'goods.goods_id')
+            ->where('goods_classify', 'PACKAGE');
+
+        $goodsOnTotalModel = clone $totalModel;
+        $goodsOnTotal = $goodsOnTotalModel->where('goods_status', 'ON')->count();
+        $goodsWarningTotalModel = clone $totalModel;
+        $goodsWarningTotal = $goodsWarningTotalModel->where('goods_running_storage', '<=', 2)->count();
+
+        $total = $totalModel->count();
 
         foreach ($rows as &$row) {
             $row['goods_cover'] = getenv('STORAGE_DOMAIN') . $row['goods_cover'];
             if (isset($row['running'])) {
                 $row['running']['goods_running_storage'] = intval($row['running']['goods_running_storage']);
             }
-//            if (!empty($row['component'])) {
-//                $ids = [];
-//                $contentList = [];
-//                foreach ($row['component'] as $component) {
-//                    $ids[] = $component['join_component_goods_id'];
-//                    $configJson = json_decode($component['goods_component_config_json'], true);
-//                    $contentList[] = [
-//                        'goods_name' => $configJson['goods_name'] ?? '',
-//                        'goods_sales_price' => $component['goods_component_price'],
-//                        'nbr' => $configJson['nbr'] ?? 0
-//                    ];
-//                }
-//
-//                $row['join_component_goods_id'] = $ids;
-//                $row['goodsContentList'] = $contentList;
-//            }
         }
 
-        return json_success('', compact('rows', 'page', 'pageSize', 'total'));
+        return json_success('', compact('rows', 'page', 'pageSize', 'total', 'goodsOnTotal', 'goodsWarningTotal'));
     }
 
     /**