Просмотр исходного кода

按片区排列的订单列表

shizhongqi 3 месяцев назад
Родитель
Сommit
fec4532709

+ 2 - 1
.gitignore

@@ -16,4 +16,5 @@ app-mall/runtime/
 app-hd/web/assets/
 app-pt/web/assets/
 app-ghs/web/assets/
-app-mall/web/assets/
+app-mall/web/assets/
+.aider*

+ 21 - 0
app-ghs/controllers/OrderController.php

@@ -947,6 +947,27 @@ class OrderController extends BaseController
         util::success($respond);
     }
 
+    //按片区排列的订单列表
+    public function actionListByDist()
+    {
+        $get = Yii::$app->request->get();
+        $where = [];
+        $searchTime = $get['searchTime'] ?? '';
+        if (!empty($searchTime)) {
+            $startTime = $get['startTime'] ?? '';
+            $endTime = $get['endTime'] ?? '';
+            // 时间跨度不能超过7天
+            if (strtotime($endTime) - strtotime($startTime) > 7 * 24 * 3600) {
+                util::fail('最多查询7天的订单');
+            }
+            $period = dateUtil::formatTime($searchTime, $startTime, $endTime);
+            $where['payTime'] = ['between', [$period['startTime'], $period['endTime']]];
+        }
+        $respond = OrderClass::getDistOrderList($where);
+
+        util::success($respond);
+    }
+
     // 新订单列表详情 -- 可能与 actionList 很相似,但为不影响 actionList,重新创建个方法 shizhongqi 2022.06.23
     public function actionNewOrderList()
     {

+ 0 - 1
biz-ghs/custom/classes/DistClass.php

@@ -4,7 +4,6 @@ namespace bizGhs\custom\classes;
 
 use bizGhs\shop\classes\ShopClass;
 use bizHd\base\classes\BaseClass;
-use Yii;
 
 class DistClass extends BaseClass
 {

+ 45 - 0
biz-ghs/order/classes/OrderClass.php

@@ -22,9 +22,11 @@ use biz\stat\classes\StatRefundClass;
 use biz\stat\classes\StatSaleClass;
 use bizGhs\express\services\DadaExpressServices;
 use bizGhs\order\traits\OrderTrait;
+use bizGhs\order\models\Order;
 use bizGhs\product\classes\ProductClass;
 use bizGhs\admin\classes\AdminClass;
 use bizGhs\custom\classes\CustomClass;
+use bizGhs\custom\models\Custom;
 use bizGhs\shop\classes\MainClass;
 use bizGhs\stock\classes\StockRecordClass;
 use bizHd\purchase\classes\PurchaseClass;
@@ -1400,6 +1402,49 @@ class OrderClass extends BaseClass
         return $data;
     }
 
+    //按片区排列的订单列表
+    public static function getDistOrderList($where)
+    {
+        /** @var Order $model */
+        $model = self::getActiveRecord();
+
+        $query = $model->conditionQuery($where)
+            ->alias('o')
+            ->leftJoin(['c' => Custom::tableName()], 'c.id = o.customId')
+            ->select(['o.id', 'o.mainId', 'o.customId', 'o.customName', 'o.customAvatar', 'o.fullAddress', 'c.name', 'c.mobile', 'c.distId', 'distId' => 'c.distId']);
+
+        // $clone = clone $query;
+        // $count = intval($clone->count('o.id'));
+
+        $orderList = $query
+            ->orderBy(['c.distId' => SORT_ASC, 'o.addTime' => SORT_DESC]) // ->offset($offset)->limit($pageSize)
+            ->asArray()
+            ->all();
+
+        $distIds = array_unique(array_filter(array_column($orderList, 'distId')));
+        $distMap = [];
+        if (!empty($distIds)) {
+            $distMap = DistClass::getByIds($distIds, null, 'id');
+        }
+
+        $grouped = [];
+        foreach ($orderList as $orderInfo) {
+            $distId = intval($orderInfo['distId']);
+            if (!isset($grouped[$distId])) {
+                $grouped[$distId] = [
+                    'distId' => $distId,
+                    'distName' => $distMap[$distId]['name'],
+                    'list' => [],
+                ];
+            }
+            $grouped[$distId]['list'][] = $orderInfo;
+        }
+
+        return [
+            'list' => array_values($grouped),
+        ];
+    }
+
     //整合订单员工和供货商等信息 ssh 2021.1.19
     //$isList 是否列表页
     public static function groupOrder($list, $showButton = false, $showItem = false, $showExpress = false, $isList = false)