quanwei
2025-12-04 12913c1069347ea4b1f6ab87f480da0f8d8c646a
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);
    }
    /**
     * 新增记录