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

Merge branch 'redesign‌-260706' into dev

ouyang 1 день назад
Родитель
Сommit
20c0c8f075
2 измененных файлов с 49 добавлено и 15 удалено
  1. 43 2
      biz-mall/order/classes/OrderGoodsClass.php
  2. 6 13
      biz-mall/order/services/OrderService.php

+ 43 - 2
biz-mall/order/classes/OrderGoodsClass.php

@@ -3,6 +3,7 @@
 namespace bizMall\order\classes;
 
 use common\components\business;
+use common\components\imgUtil;
 use common\components\util;
 use Yii;
 use bizMall\base\classes\BaseClass;
@@ -100,19 +101,59 @@ class OrderGoodsClass extends BaseClass
     }
 
     //批量取订单 ssh 2020.1.2
+    /**
+     * 按订单号批量取花束明细,供订单列表组装 goodsInfoList
+     * @param array $sns 订单号列表
+     * @return array [orderSn => [goods...]]
+     */
     public static function getGoodsListByOrderSns($sns)
     {
+        $sns = array_values(array_filter(array_unique((array)$sns)));
+        if (empty($sns)) {
+            return [];
+        }
         $arr = self::getAllByCondition(['orderSn' => ['in', $sns]], null, '*');
         if (empty($arr)) {
             return [];
         }
         $data = [];
         foreach ($arr as $info) {
-            $orderSn = $info['orderSn'];
-            $info = business::formatOrderGoodsCover($info);
+            $orderSn = $info['orderSn'] ?? '';
+            if ($orderSn === '' || $orderSn === null) {
+                continue;
+            }
+            // 封面字段与花材明细、列表组件对齐(smallCoverUrl / cover / coverUrl)
+            $info = self::formatGoodsCover($info);
             $data[$orderSn][] = $info;
         }
         return $data;
     }
 
+    /**
+     * 处理花束订单明细封面,兼容列表与详情展示字段
+     * @param array $info 明细行
+     * @return array
+     */
+    private static function formatGoodsCover($info)
+    {
+        $info = business::formatOrderGoodsCover($info);
+        $shortCover = !empty($info['cover']) ? $info['cover'] : (!empty($info['shortCover']) ? $info['shortCover'] : 'hhb_small.png');
+        // formatOrderGoodsCover 可能已把 coverUrl 填好,但 cover 仍是短路径;列表优先读 smallCoverUrl/cover
+        if (!empty($info['coverUrl'])) {
+            $info['shortCover'] = $shortCover;
+            $info['cover'] = $info['coverUrl'];
+            if (empty($info['smallCoverUrl'])) {
+                $info['smallCoverUrl'] = $info['coverUrl'] . "?x-oss-process=image/resize,m_fill,h_130,w_130";
+            }
+            $info['smallCover'] = $info['smallCoverUrl'];
+            return $info;
+        }
+        $info['shortCover'] = $shortCover;
+        $info['cover'] = imgUtil::groupImg($shortCover);
+        $info['smallCover'] = $info['cover'] . "?x-oss-process=image/resize,m_fill,h_130,w_130";
+        $info['coverUrl'] = $info['cover'];
+        $info['smallCoverUrl'] = $info['smallCover'];
+        return $info;
+    }
+
 }

+ 6 - 13
biz-mall/order/services/OrderService.php

@@ -240,28 +240,21 @@ class OrderService extends BaseService
             $hdMap = HdClass::getByIds($hdIds, null, 'id');
         }
         $orderSns = array_values(array_filter(array_unique(array_column($list, 'orderSn'))));
-        // 花束订单明细在 xhOrderGoods,花材订单明细在 xhOrderItem,orderType=3 时两者都有
+        // 花束明细在 xhOrderGoods,花材明细在 xhOrderItem;列表按实际明细合并,避免 orderType=0/错标导致空列表
         $goodsListMap = OrderGoodsService::getGoodsListByOrderSns($orderSns);
         $itemListMap = OrderItemService::getItemListByOrderSns($orderSns);
         $periodData = [0 => '上午', 1 => '下午', 2 => '晚上'];
         foreach ($data['list'] as $key => $val) {
             $orderSn = $val['orderSn'] ?? '';
-            $orderType = intval($val['orderType'] ?? 1);
             $hdId = intval($val['hdId'] ?? 0);
             $orderStatus = intval($val['status'] ?? 0);
             $data['list'][$key]['hdName'] = $hdMap[$hdId]['name'] ?? '';
             $data['list'][$key]['statusDesc'] = OrderStatusUtil::getSystemStatusDesc($orderStatus);
-            $goodsInfoList = [];
-            if (!empty($orderSn)) {
-                if ($orderType == 1) {
-                    $goodsInfoList = $goodsListMap[$orderSn] ?? [];
-                } elseif ($orderType == 2) {
-                    $goodsInfoList = $itemListMap[$orderSn] ?? [];
-                } elseif ($orderType == 3) {
-                    $goodsInfoList = array_merge($goodsListMap[$orderSn] ?? [], $itemListMap[$orderSn] ?? []);
-                }
-            }
-            if(isset($val['goodsNum']) && $val['goodsNum'] == 0) {
+            $fromGoods = (!empty($orderSn) && isset($goodsListMap[$orderSn])) ? $goodsListMap[$orderSn] : [];
+            $fromItems = (!empty($orderSn) && isset($itemListMap[$orderSn])) ? $itemListMap[$orderSn] : [];
+            // 有啥展示啥:纯花束/纯花材/混合都能出图;orderType 仅作业务标记,不作为列表组装门槛
+            $goodsInfoList = array_merge($fromGoods, $fromItems);
+            if (isset($val['goodsNum']) && $val['goodsNum'] == 0) {
                 $data['list'][$key]['goodsNum'] = count($goodsInfoList);
             }
             $data['list'][$key]['goodsInfoList'] = $goodsInfoList;