From 12913c1069347ea4b1f6ab87f480da0f8d8c646a Mon Sep 17 00:00:00 2001
From: quanwei <419654421@qq.com>
Date: Thu, 04 Dec 2025 09:24:33 +0800
Subject: [PATCH] 供需求功能

---
 admin/app/shop/model/plus/shareholder/User.php |   52 +++++++++++++++++++++++++++++++++++++++++++++++++++-
 1 files changed, 51 insertions(+), 1 deletions(-)

diff --git a/admin/app/shop/model/plus/shareholder/User.php b/admin/app/shop/model/plus/shareholder/User.php
index e7962af..4248c2d 100644
--- a/admin/app/shop/model/plus/shareholder/User.php
+++ b/admin/app/shop/model/plus/shareholder/User.php
@@ -4,7 +4,8 @@
 
 use app\shop\model\plus\shareholder\Referee as RefereeModel;
 use app\common\model\plus\shareholder\User as UserModel;
-
+use app\shop\model\order\Order as OrderModel;
+use app\shop\model\order\OrderProduct as OrderProductModel;
 /**
  * 股东用户模型
  * Class User
@@ -44,6 +45,55 @@
         }
         return $model->where('is_delete', '=', 0)->with(['grade'])->select();
     }
+    
+    /**
+     * 获取满足分红条件的股东列表
+     */
+    public static function getEligibleListAll($bonusData)
+    {
+        // 获取基础设置
+        $setting = Setting::getItem('basic');
+        
+        // 先获取所有股东
+        $model = new static;
+        $shareholders = $model->where('is_delete', '=', 0)->with(['grade'])->select();
+        
+        // 如果没有设置分红条件,返回所有股东
+        if (empty($setting['consumption_amount']) && empty($setting['condition_purchase_count'])) {
+            return $shareholders;
+        }
+        
+        // 过滤满足条件的股东
+        $eligibleShareholders = [];
+        foreach ($shareholders as $shareholder) {
+            $userId = $shareholder['user_id'];
+            $isEligible = true;
+            
+            // 检查消费金额条件
+            if (!empty($setting['consumption_amount'])) {
+                $totalConsumption = (new OrderModel)->getUserTotalConsumption($userId,$bonusData);
+                if ($totalConsumption < $setting['consumption_amount']) {
+                    $isEligible = false;
+                }
+            }
+            
+            // 检查购买次数条件
+            if (!empty($setting['condition_purchase_count']) && $isEligible) {
+                $purchaseCount = (new OrderProductModel)::getPurchaseCount($userId,$bonusData,$shareholder['product_ids']);
+                if ($purchaseCount < $setting['condition_purchase_count']) {
+                    $isEligible = false;
+                }
+            }
+            
+            // 如果满足所有条件,添加到结果集中
+            if ($isEligible) {
+                $eligibleShareholders[] = $shareholder;
+            }
+        }
+        
+        // 转换为 Collection 对象以保持接口一致性
+        return collect($eligibleShareholders);
+    }
 
     /**
      * 新增记录

--
Gitblit v1.9.2