From abc7edc3c8ad59ff213c85413d0d6a10d7a0b6f7 Mon Sep 17 00:00:00 2001
From: quanwei <419654421@qq.com>
Date: Wed, 17 Dec 2025 18:03:09 +0800
Subject: [PATCH] 1.	发布供需消耗连盟币,连盟币数量在后台独立设置 2.	小程序供需个人中心可自由切换身份 3.	增加私信系统 4.	增加评论系统,用户可在发布者详情页进行评论操作,评论获得的连盟币可在后台设置 5.	增加发布者的等级,以好评个数为条件进行升级,小程序端会显示该等级的图标,如没有等级则不会显示图标 6.	增加设置消耗连盟币可以解锁、查看发布的信息,费用可在后台设置 7.	小程序供需大厅界面优化,以及增加了推荐栏目,该栏目按发布的分类相似进行匹配,比如A用户发布了 互联网 分类的需求,则会优先推荐匹配互联网分类的供应需求给他。

---
 admin/app/common/model/product/Product.php |   35 ++++++++++++++++++++++++++++++++++-
 1 files changed, 34 insertions(+), 1 deletions(-)

diff --git a/admin/app/common/model/product/Product.php b/admin/app/common/model/product/Product.php
index a4bb84c..40f00f3 100644
--- a/admin/app/common/model/product/Product.php
+++ b/admin/app/common/model/product/Product.php
@@ -49,6 +49,22 @@
     }
 
     /**
+     * 关联商品多分类表
+     */
+    public function categorys()
+    {
+        return $this->hasMany('app\\common\\model\\product\\ProductCategory', 'product_id', 'product_id');
+    }
+
+    /**
+     * 关联商品多分类表
+     */
+    public function category_ids()
+    {
+        return $this->hasMany('app\\common\\model\\product\\ProductCategory', 'product_id', 'product_id');
+    }
+
+    /**
      * 关联商品分类表
      */
     public function category()
@@ -179,7 +195,12 @@
         $model = $this;
         if ($params['category_id'] > 0) {
             $arr = Category::getSubCategoryId($params['category_id']);
-            $model = $model->where('product.category_id', 'IN', $arr);
+            $productIds = ProductCategory::getProductIds($params['category_id']);
+            if ($productIds) {
+                $model = $model->whereRaw('product.category_id in (' . implode(',', $arr) . ') OR product_id in (' . implode(',', $productIds) . ')');
+            } else {
+                $model = $model->where('product.category_id', 'IN', $arr);
+            }
         }
         if (!empty($params['product_name'])) {
             $model = $model->where('product_name', 'like', '%' . trim($params['product_name']) . '%');
@@ -362,6 +383,17 @@
             if($product['verify_type'] == 20){
                 $product['verify_time'] = [date('Y-m-d H:i:s', $product['verify_start_time']), date('Y-m-d H:i:s', $product['verify_end_time'])];
             }
+            // 商品多分类 by lyzflash
+            $product['category_ids'] = [];
+            if (!$product['categorys']->isEmpty()) {
+                $product['category_ids'] = helper::getArrayColumn($product['categorys'], 'category_id');
+                $product['category_names'] = implode('、', helper::getArrayColumn((new Category)->getListByIds($product['category_ids']), 'name'));
+            } else {
+                // 兼容没有多分类前的数据 by lyzflash
+                if ($product['category_id']) {
+                    $product['category_ids'] = [$product['category_id']];
+                }
+            }
             // 回调函数
             is_callable($callback) && call_user_func($callback, $product);
         }
@@ -508,6 +540,7 @@
             'supplier.logo',
             'video',
             'poster',
+            'categorys.category',
             'contentImage.file',
         ])->where('product_id', '=', $product_id)
             ->find();

--
Gitblit v1.9.2