moonsflyer 9 месяцев назад
Родитель
Сommit
57696dc77c
1 измененных файлов с 34 добавлено и 4 удалено
  1. 34 4
      app/count/controller/IndexController.php

+ 34 - 4
app/count/controller/IndexController.php

@@ -21,6 +21,7 @@ namespace app\count\controller;
 
 use app\common\model\Order;
 use app\common\model\OrderGoods;
+use app\common\model\GoodsCategory as GoodsCategoryModel;
 use app\common\model\Goods;
 use app\common\model\Distribution;
 use app\common\model\AfterSale;
@@ -146,20 +147,49 @@ class IndexController extends BaseAdminController
 
         /** 分类销量排名 start**/
         $ogcwhere = [];
-        $ogcwhere[] = ['gc.level', '=', '1'];
+//        $ogcwhere[] = ['gc.level', '=', '1'];
 
-        $OrderGoodsCategoryInfo = OrderGoods::alias('og')
+        $OrderGoodsCategoryInfos = OrderGoods::alias('og')
             ->leftJoin('order o', 'o.id = og.order_id')
             ->leftJoin('goods g', 'g.id = og.goods_id')
             ->leftJoin('goods_category_index gci', 'gci.goods_id=g.id')
             ->leftJoin('goods_category gc', 'gc.id = gci.category_id')
-            ->field('gc.`name` ,sum( og.goods_num) total_num')
+            ->field('gc.id,gc.`name` ,gc.pid,sum( og.goods_num) total_num')
             ->where($where)->where($ogcwhere)
             ->group('gc.name')
             ->select()->toArray();
 
-        $goods_category_data = array_column($OrderGoodsCategoryInfo, 'total_num');
+        $OrderGoodsCategoryInfo = [];
+        foreach($OrderGoodsCategoryInfos as &$ogcv){
+            $pid = $ogcv['pid'];
+            $id = $ogcv['id'];
+            $new_data=[];
+            $name = $ogcv['name'];
+            $total_num = $ogcv['total_num'];
+            while($pid){
+                if($pid == 0){
+                    break;
+                }else{
+                    $categoryInfo = GoodsCategoryModel::find($pid);
+                    $pid = $categoryInfo['pid'];
+                    $id = $categoryInfo['id'];
+                    $name = $categoryInfo['name'];
+                }
+            }
+
+            if(isset($OrderGoodsCategoryInfo[$id])){
+                $new_total_num = $OrderGoodsCategoryInfo[$id]['total_num']+$total_num;
+                $OrderGoodsCategoryInfo[$id]['total_num'] = $new_total_num;
+            }else{
+                $new_data['total_num'] = $total_num;
+                $new_data['name'] = $name;
+                $OrderGoodsCategoryInfo[$id] = $new_data;
+            }
+
+        }
 
+        $goods_category_data = array_column($OrderGoodsCategoryInfo, 'total_num');
+        
         $data['order_goods_category'] = $OrderGoodsCategoryInfo;
         $count = count($goods_category_data);
         while ($count) {