From 56490d1e5c5f2ac36e3e18254091780fdebdce55 Mon Sep 17 00:00:00 2001 From: lqmac Date: Fri, 21 Jun 2024 02:25:54 +0800 Subject: [PATCH] =?UTF-8?q?=E5=95=86=E5=93=81=E5=9B=BE=E7=89=87=E5=90=8C?= =?UTF-8?q?=E6=AD=A5=E6=80=BB=E5=90=8E=E5=8F=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/api/controller/Goods.php | 2 +- app/api/model/Goods.php | 27 ++++++++++++++++++++---- app/api/model/Order.php | 21 +++++++++++++----- app/api/model/OrderRefund.php | 34 ++++++++++++++++++++++++------ app/api/service/order/Checkout.php | 1 + app/common/model/Goods.php | 32 ++++++++++++++++++++++++---- app/store/controller/Order.php | 7 ++++++ app/store/model/Goods.php | 5 +++++ app/store/model/Order.php | 16 ++++++++++---- app/store/model/OrderRefund.php | 27 ++++++++++++++++++++---- 10 files changed, 144 insertions(+), 28 deletions(-) diff --git a/app/api/controller/Goods.php b/app/api/controller/Goods.php index 6e5006e6..30955fab 100644 --- a/app/api/controller/Goods.php +++ b/app/api/controller/Goods.php @@ -59,7 +59,7 @@ class Goods extends Controller // wmc商品详情 $model = new GoodsModel; $goodsInfo = $model->getDetails($goodsId, $verifyStatus); - + if (!empty($goodsInfo['content'])) { $goodsInfo['content'] = str_ireplace('onload="if(this.width>750){this.height=this.height*(750.0/this.width); this.width = 750;}', '', $goodsInfo['content']); } diff --git a/app/api/model/Goods.php b/app/api/model/Goods.php index 35e672dd..af5cc521 100644 --- a/app/api/model/Goods.php +++ b/app/api/model/Goods.php @@ -154,17 +154,27 @@ class Goods extends GoodsModel $model = new GoodsBrowseLog; $end_time = date('Y-m-d'); $start_time = date('Y-m-d', strtotime($end_time . ' - 15 days')); - $list = $model->with(['sku', 'goods', 'images.file']) + $list = $model->with(['goods', 'images.file']) ->whereBetween('ctime', [$start_time, $end_time]) -// ->where('ctime', '>=', $start_time) -// ->where('ctime', '<=', $end_time) ->order('ctime', 'desc') ->where(['user_id' => $userId]) ->select(); + $goodsList = $list->toArray()['data'] ?? $list->toArray(); + + // + $origin_goods_ids = []; + foreach ($list as $key => $value) { + $origin_goods_ids[] = $value['goods']['origin_goods_id'] ?? 0; + } + $goods_images = $this->storeUsePlatformGoodsImage($origin_goods_ids); + $data = []; $array = ["周日", "周一", "周二", "周三", "周四", "周五", "周六"]; if (!$list->isEmpty()) { foreach ($list as $value) { + if ($value['goods']['origin_goods_id'] && $value['store_id'] > 0) { + $value['images'] = $goods_images[$value['goods']['origin_goods_id']] ?? []; + } $data[$value['ctime']]['name'] = date('m-d', strtotime($value['ctime'])); $data[$value['ctime']]['week'] = $array[date("w", strtotime($value['ctime']))]; $data[$value['ctime']]['list'][] = $value; @@ -436,7 +446,6 @@ class Goods extends GoodsModel } // 获取商品记录 $goodsInfo = $this->getGoodsMain($goodsId, $with, $verifyStatus); - //$this->dealGoodsImage($goodsInfo); // 商品规格列表 @@ -581,6 +590,16 @@ class Goods extends GoodsModel $value->goods_sku_no = $goodsInfo['goods_no_other']; } } + //使用总后台的商品的图片作为商城商品的图片 + + if ($goodsInfo->origin_goods_id && $goodsInfo->store_id > 0) { + + $goods_images = $this->storeUsePlatformGoodsImage([$goodsInfo->origin_goods_id]); + $goodsInfo->images = $goods_images[$goodsInfo->origin_goods_id] ?? []; + // echo "
";
+            // print_r($goodsInfo->images);
+            // exit();
+        }
         //是否展示看同款按钮
         $goodsInfo->is_show_ktk = 1;
         if (in_array($goodsInfo['channel'], ['sn','sn1']) && !$goodsInfo['link_other']) {
diff --git a/app/api/model/Order.php b/app/api/model/Order.php
index 27c384f3..07a47cd8 100644
--- a/app/api/model/Order.php
+++ b/app/api/model/Order.php
@@ -133,22 +133,28 @@ class Order extends OrderModel
             ->where($where)
             ->where('is_delete', '=', 0)
             ->order(['create_time' => 'desc']);
-        $list = $query->paginate(15)->toArray();
+        $list = $query->paginate(10)->toArray();
         //这边后面改成多商户的话需要根据storeid去获取信息
         $service = new StoreService;
+        $goodsModel = new GoodsModel;
         $info = $service->data();
-        if (!empty($info['storeInfo'])) {
+        //if (!empty($info['storeInfo'])) {
             $info = $info['storeInfo']->toArray();
             foreach ($list['data'] as &$v) {
                 $v['storeInfo'] = $info;
                 $total_num = 0;
-                foreach ($v['goods'] as $value) {
+                $goods_images = $goodsModel->storeUsePlatformGoodsImage(array_column($v['goods'], 'origin_goods_id'));
+                foreach ($v['goods'] as &$value) {
+                    //使用总后台的商品图片
+                    if ($value['origin_goods_id'] && $v['store_id'] > 0) {
+                        $value['goods_image'] = $goods_images[$value['origin_goods_id']][0]['file']['preview_url'] ?? "";
+                    }
                     $total_num += $value['total_num'] ?? 0;
                 }
                 $v['total_num'] = $total_num;
                 $v['delivery'] = DeliveryModel::where('order_id', $v['order_id'])->find();
             }
-        }
+        //}
         return $list;
     }
 
@@ -499,8 +505,13 @@ class Order extends OrderModel
             $order->storeInfo = $info['storeInfo']->toArray();
         }
         $total_num = 0;
+        $goodsModel = new GoodsModel;
+        $goods_images = $goodsModel->storeUsePlatformGoodsImage(array_column($order->goods->toArray(), 'origin_goods_id'));
         if (isset($order->goods) && $order->goods) {
-            foreach ($order->goods as $value) {
+            foreach ($order->goods as &$value) {
+                if ($value['origin_goods_id'] && $order['store_id'] > 0) {
+                    $value['goods_image'] = $goods_images[$value['origin_goods_id']][0]['file']['preview_url'] ?? "";
+                }
                 $total_num += $value->total_num ?? 0;
             }
         }
diff --git a/app/api/model/OrderRefund.php b/app/api/model/OrderRefund.php
index f2de8a6c..c4dc01d1 100644
--- a/app/api/model/OrderRefund.php
+++ b/app/api/model/OrderRefund.php
@@ -19,7 +19,7 @@ use app\common\enum\order\refund\RefundStatus as RefundStatusEnum;
 use app\common\enum\order\refund\RefundType as RefundTypeEnum;
 use app\common\model\OrderRefund as OrderRefundModel;
 use cores\exception\BaseException;
-
+use app\common\model\Goods as GoodsModel;
 /**
  * 售后单模型
  * Class OrderRefund
@@ -103,11 +103,24 @@ class OrderRefund extends OrderRefundModel
         // 当前用户ID
         $userId = UserService::getCurrentLoginUserId();
         // 查询列表记录
-        return $this->with(['orderGoods.image'])
-            ->where($filter)
-            ->where('user_id', '=', $userId)
-            ->order(['create_time' => 'desc'])
-            ->paginate(15);
+        $list = $this->with(['orderGoods.image'])
+                    ->where($filter)
+                    ->where('user_id', '=', $userId)
+                    ->order(['create_time' => 'desc'])
+                    ->paginate(15);
+        if ($list->isEmpty()) {
+            return $list;
+        }
+        $goodsModel = new GoodsModel;
+        foreach ($list->items() as $key => &$value) {
+            if ($value->orderGoods->origin_goods_id > 0) {
+                $goods_images = $goodsModel->storeUsePlatformGoodsImage([$value->orderGoods->origin_goods_id]);
+                $value['orderGoods']['goods_image'] = $goods_images[$value->orderGoods->origin_goods_id][0]['file']['preview_url'] ?? "";
+            }
+            
+
+        }
+        return $list;
     }
 
     /**
@@ -127,6 +140,15 @@ class OrderRefund extends OrderRefundModel
             'order_refund_id' => $orderRefundId
         ], $with);
         empty($detail) && throwError('未找到该售后单');
+
+        $goodsModel = new GoodsModel;
+        if ($detail->orderGoods->origin_goods_id > 0) {
+            $goods_images = $goodsModel->storeUsePlatformGoodsImage([$detail->orderGoods->origin_goods_id]);
+            $detail['orderGoods']['goods_image'] = $goods_images[$detail->orderGoods->origin_goods_id][0]['file']['preview_url'] ?? "";
+        }
+            
+
+        
         return $detail;
     }
 
diff --git a/app/api/service/order/Checkout.php b/app/api/service/order/Checkout.php
index a2c06cf6..ebe07bbb 100644
--- a/app/api/service/order/Checkout.php
+++ b/app/api/service/order/Checkout.php
@@ -922,6 +922,7 @@ class Checkout extends BaseService
                 'user_id' => $this->user['user_id'],
                 'store_id' => $this->storeId,
                 'goods_id' => $goods['goods_id'],
+                'origin_goods_id' => $goods['origin_goods_id'] ?? 0,
                 'goods_type' => $goods['goods_type'],
                 'goods_name' => $goods['goods_name'],
                 'goods_no' => $goods['goods_no'] ?: '',
diff --git a/app/common/model/Goods.php b/app/common/model/Goods.php
index 14ba981c..efa8f559 100644
--- a/app/common/model/Goods.php
+++ b/app/common/model/Goods.php
@@ -25,7 +25,8 @@ use think\model\relation\BelongsTo;
 use think\model\relation\HasMany;
 use think\model\relation\HasOne;
 use think\Paginator;
-
+use app\store\model\GoodsImage as GoodsImageModel;
+use app\store\model\UploadFile as UploadFileModel;
 /**
  * 商品模型
  * Class Goods
@@ -589,7 +590,25 @@ class Goods extends BaseModel
         // 实例化新查询对象
         return $query->where($filter);
     }
-
+    /**
+     * 使用总后台的商品的图片作为商城商品的图片
+     * [storeUsePlatformGoodsImage description]
+     * @param  array  $origin_goods_ids [description]
+     * @return [type]                   [description]
+     */
+    public function storeUsePlatformGoodsImage(array $origin_goods_ids){
+        $goods_images = GoodsImageModel::withoutGlobalScope()->whereIn('goods_id', $origin_goods_ids)->select()->toArray();
+        $goods_image_ids = array_column($goods_images, "image_id");
+        $files = UploadFileModel::withoutGlobalScope()->whereIn('file_id', $goods_image_ids)->select()->toArray();
+
+        $files = array_column($files, null, "file_id");
+        $arr = [];
+        foreach ($goods_images as &$goods_image) {
+            $goods_image['file'] = $files[$goods_image['image_id']] ?? [];
+            $arr[$goods_image['goods_id']][] = $goods_image;
+        }
+        return $arr;
+    }
     /**
      * 设置商品展示的数据
      * @param Collection|Paginator $list 商品列表
@@ -601,10 +620,15 @@ class Goods extends BaseModel
         if ($list->isEmpty()) {
             return $list;
         }
-
+        //使用总后台的商品的图片作为商城商品的图片
+        $goodsList = $list->toArray()['data'] ?? $list->toArray();
+        $goods_images = $this->storeUsePlatformGoodsImage(array_column($goodsList, 'origin_goods_id'));
+        
         // 遍历商品列表整理数据
         foreach ($list as &$goods) {
-
+            if ($goods->origin_goods_id && $goods->store_id > 0) {
+                $goods->images = $goods_images[$goods->origin_goods_id] ?? [];
+            }
             $goods = $this->setGoodsData($goods, $callback);
         }
 
diff --git a/app/store/controller/Order.php b/app/store/controller/Order.php
index bee32c96..2f51f001 100644
--- a/app/store/controller/Order.php
+++ b/app/store/controller/Order.php
@@ -13,6 +13,7 @@ declare (strict_types=1);
 namespace app\store\controller;
 
 use app\store\model\Order as OrderModel;
+use app\store\model\Goods as GoodsModel;
 use think\response\Json;
 use app\common\model\UploadFile as UploadFileModel;
 /**
@@ -35,11 +36,17 @@ class Order extends Controller
         $params['merchantId'] = $this->merchantId;
         $result = $model->getList($params);
         $data = $result->items();
+        $goodsModel = new GoodsModel;
         if (!empty($data)) {
             foreach ($data as $key => $value) {
                 $data[$key]['address_match_text'] = '--';
                 $copy_text = "订单号:{$value['order_no']}\n";
+                $goods_images = $goodsModel->storeUsePlatformGoodsImage(array_column($value['goods']->toArray(), 'origin_goods_id'));
                 foreach ($value['goods'] as $good) {
+                    //使用总后台的商品图片
+                    if ($good['origin_goods_id'] && $value['store_id'] > 0) {
+                        $good['goods_image'] = $goods_images[$good['origin_goods_id']][0]['file']['preview_url'] ?? "";
+                    }
                     $copy_text .= "商品名称:{$good['goods_name']}\n";
                     if (!empty($good['goods_no'])) {
                         $copy_text .= "商品编码:{$good['goods_no']}\n";
diff --git a/app/store/model/Goods.php b/app/store/model/Goods.php
index 5e36f7dd..f1d44732 100644
--- a/app/store/model/Goods.php
+++ b/app/store/model/Goods.php
@@ -76,6 +76,11 @@ class Goods extends GoodsModel
         // $goodsInfo->rules = [];
         // 获取商品记录
         $goodsInfo = static::detail($goodsId, $with);
+        //使用总后台的商品的图片作为商城商品的图片
+        if ($goodsInfo->origin_goods_id && $goodsInfo->store_id > 0) {
+            $goods_images = $this->storeUsePlatformGoodsImage([$goodsInfo->origin_goods_id]);
+            $goodsInfo->images = $goods_images[$goodsInfo->origin_goods_id] ?? [];
+        }
         if ($goodsInfo->region && $goodsInfo->region_text) {
             $goodsInfo->rules = [['key' => 0, 'region' => json_decode($goodsInfo->region), 'region_text' => json_decode($goodsInfo->region_text)]];
         }
diff --git a/app/store/model/Order.php b/app/store/model/Order.php
index a9d0ebde..9e4ea1fc 100644
--- a/app/store/model/Order.php
+++ b/app/store/model/Order.php
@@ -25,6 +25,7 @@ use app\common\service\Order as OrderService;
 use app\common\service\order\Printer as PrinterService;
 use app\common\service\order\Refund as RefundService;
 use cores\exception\BaseException;
+use app\store\model\Goods as GoodsModel;
 
 /**
  * 订单管理
@@ -48,9 +49,17 @@ class Order extends OrderModel
             'trade',
         ]);
         $order->merchant_remark = $order->merchant_remark ? htmlspecialchars_decode($order->merchant_remark) : "";
-        $goods = $order->goods ? $order->goods->toArray() : [];
 
-        if ($goods) {
+        $goodsModel = new GoodsModel;
+        $goods_images = $goodsModel->storeUsePlatformGoodsImage(array_column($order->goods->toArray(), 'origin_goods_id'));
+        if ($order->goods) {
+            //使用总后台的商品图片
+            foreach ($order->goods as &$value) {
+                if ($value->origin_goods_id && $order->store_id > 0) {
+                    $value->goods_image = $goods_images[$value->origin_goods_id][0]['file']['preview_url'] ?? "";
+                }
+            }
+            $goods = $order->goods ? $order->goods->toArray() : [];
             $goods = array_column($goods, null, 'goods_id');
             if ($order->delivery) {
                 foreach ($order->delivery as &$val) {
@@ -102,8 +111,7 @@ class Order extends OrderModel
         if (!empty($filterOr)) {
             $query = $query->whereOr($filterOr);
         }
-        $list = $query->order(['order.create_time' => 'desc'])
-            ->paginate($param['pageSize'] ?? 15);
+        $list = $query->order(['order.create_time' => 'desc'])->paginate($param['pageSize'] ?? 15);
         return $list;
     }
 
diff --git a/app/store/model/OrderRefund.php b/app/store/model/OrderRefund.php
index 8596446b..b128fc23 100644
--- a/app/store/model/OrderRefund.php
+++ b/app/store/model/OrderRefund.php
@@ -27,6 +27,7 @@ use app\common\service\order\Refund as RefundService;
 use app\store\model\User as UserModel;
 use app\store\model\Order as OrderModel;
 use app\store\model\OrderGoods as OrderGoodsMOdel;
+use app\common\model\Goods as GoodsModel;
 
 /**
  * 售后单模型
@@ -62,10 +63,22 @@ class OrderRefund extends OrderRefundModel
         if (!empty($filterOr)) {
             $query = $query->whereOr($filterOr);
         }
-        $list = $query->order(['refund.create_time' => 'desc', 'refund.' . $this->getPk()])
-            ->paginate(10);
+        $list = $query->order(['refund.create_time' => 'desc', 'refund.' . $this->getPk()])->paginate($param['pageSize'] ?? 15);
+        if ($list->isEmpty()) {
+            return $list;
+        }
+        $list = static::preload($list, ['orderGoods.image', 'orderData', 'user.avatar']);
+        $goodsModel = new GoodsModel;
+        foreach ($list->items() as $key => &$value) {
+            if ($value->orderGoods->origin_goods_id > 0) {
+                $goods_images = $goodsModel->storeUsePlatformGoodsImage([$value->orderGoods->origin_goods_id]);
+                $value->orderGoods->goods_image = $goods_images[$value->orderGoods->origin_goods_id][0]['file']['preview_url'] ?? "";
+            }
+            
+
+        }
         // 加载关联订单数据
-        return static::preload($list, ['orderGoods.image', 'orderData', 'user.avatar']);
+        return $list;
     }
 
     /**
@@ -133,9 +146,15 @@ class OrderRefund extends OrderRefundModel
      */
     public function getDetail(int $orderRefundId)
     {
-        return static::detail($orderRefundId, [
+        $detail = static::detail($orderRefundId, [
             'orderData', 'images.file', 'orderGoods.image', 'express', 'address', 'user'
         ]) ?: false;
+        $goodsModel = new GoodsModel;
+        if ($detail->orderGoods->origin_goods_id > 0) {
+            $goods_images = $goodsModel->storeUsePlatformGoodsImage([$detail->orderGoods->origin_goods_id]);
+            $detail['orderGoods']['goods_image'] = $goods_images[$detail->orderGoods->origin_goods_id][0]['file']['preview_url'] ?? "";
+        }
+        return $detail;
     }
 
     /**