From 3ea53e61cc23fdb3ddf8b38a199ca60a6da8c407 Mon Sep 17 00:00:00 2001
From: quanwei <419654421@qq.com>
Date: Fri, 28 Nov 2025 18:32:41 +0800
Subject: [PATCH] 添加商品

---
 admin/app/common/model/plus/vip/Order.php |  127 ++++++++++++++++++++----------------------
 1 files changed, 61 insertions(+), 66 deletions(-)

diff --git a/admin/app/common/model/plus/vip/Order.php b/admin/app/common/model/plus/vip/Order.php
index 1e1e01d..061e503 100644
--- a/admin/app/common/model/plus/vip/Order.php
+++ b/admin/app/common/model/plus/vip/Order.php
@@ -140,17 +140,9 @@
             if ($deadlineTime > time()) {
                 continue;
             }
-            
-            // 发放推广佣金(首次购买VIP商品)
-            if ($model['vip_area_type'] == 10) {
-                $model['vip_area_user_id'] > 0 && User::grantMoney($model['vip_area_user_id'], $model['vip_area_money'], '推广佣金');
+            if ($model['vip_area_user_id'] != 0) {
+                User::grantMoney($model['vip_area_user_id'], $model['vip_area_money'], VipAreaTypeEnum::getTypeName()[$model['vip_area_type']]);
             }
-            
-            // 发放推广复购佣金(非首次购买VIP商品)
-            if ($model['vip_area_type'] == 20) {
-                $model['vip_area_user_id'] > 0 && User::grantMoney($model['vip_area_user_id'], $model['vip_area_money'], '推广复购佣金');
-            }
-            
             // 发放VIP专区补贴给下级用户(当下级获得推广佣金或复购佣金时)
             if ($model['vip_area_type'] == 10 || $model['vip_area_type'] == 20) {
                 // 获取下级用户的推荐人(即上级用户)
@@ -160,15 +152,12 @@
                     if ($vipUser['grade']['operating_subsidy']>0){
                         // 获取补贴比例设置
                         $subsidyRate = $vipUser['grade']['operating_subsidy'];
-
                         // 计算VIP专区补贴
                         $subsidyAmount = bcmul($model['vip_area_money'], bcdiv((string)$subsidyRate, '100', 4), 2);
                         User::grantMoney($superiorUser['referee_id'], $subsidyAmount, 'VIP专区补贴');
-
                         // 记录分销订单
-                        self::createDistributionOrder($order, $superiorUser['referee_id'], $subsidyAmount, 'vip_subsidy');
+                        self::createDistributionOrder($order, $superiorUser['referee_id'], $subsidyAmount, 'vip_subsidy',$model['vip_area_money']);
                     }
-
                 }
             }
             
@@ -213,7 +202,7 @@
                 User::grantMoney($model['vip_area_user_id'], $platformCommissionAmount, '平台直推佣金');
                 
                 // 记录分销订单
-                self::createDistributionOrder($order, $model['vip_area_user_id'], $platformCommissionAmount, 'platform_commission');
+                self::createDistributionOrder($order, $model['vip_area_user_id'], $platformCommissionAmount, 'platform_commission',$model['vip_area_money']);
             }
         }
     }
@@ -226,7 +215,7 @@
      * @param $type
      * @return bool
      */
-    protected static function createDistributionOrder($order, $userId, $amount, $type)
+    protected static function createDistributionOrder($order, $userId, $amount, $type,$subordinate_money)
     {
         // 创建分销订单记录以跟踪各种类型的佣金
         $distributionOrder = new self();
@@ -248,6 +237,7 @@
             'vip_area_user_id' => $userId,
             'referee_id' => $order['user_id'], // 被推荐人
             'vip_area_money' => $amount,
+            'subordinate_money' => $subordinate_money,
             'team_revenue' => 0,
             'vip_area_type' => $vip_area_type,
             'is_settled' => 1,
@@ -270,36 +260,13 @@
             if (!$setting['is_open']) {
                 return false;
             }
-
-            // 获取当前买家的推荐人信息
-            $userModel = UserModel::detail($order['user_id']);
-            if (!$userModel || !$userModel['referee_id']) {
-                return false;
-            }
-
-            // 检查推荐人是否为VIP专区用户
-            $vipUser = User::detail($userModel['referee_id']);
-            if (!$vipUser) {
-                return false;
-            }
-
-            // 获取VIP等级设置
-            $vipGrade = Grade::detail($vipUser['grade_id']);
-            if (!$vipGrade) {
-                return false;
-            }
-            // 验证是否设置
-            $config = Setting::getItem('basic', $order['app_id']);
-            if (empty($config['become__buy_product_ids'])) {
-                return false;
-            }
             $data = [
                 'user_id' => $order['user_id'],
                 'order_id' => $order['order_id'],
                 'order_type' => $order_type,
                 'order_price' => $order['pay_price'],
-                'vip_area_user_id' => $vipUser['user_id'],
-                'referee_id' => $userModel['referee_id'],
+                'vip_area_user_id' => 0,
+                'referee_id' => 0,
                 'vip_area_money' => 0,
                 'vip_area_type' => 0,
                 'is_settled' => 0,
@@ -309,36 +276,64 @@
             $list=[];
             // 计算佣金金额
             $orderPrice = bcsub($order['pay_price'], $order['express_price'], 2);
-            $purchase_count=(new self())->getPurchaseCount($order['user_id']);
-            foreach ($order['product'] as $product){
-                if (in_array($product['product_id'], $config['become__buy_product_ids'])) {
-                    // 获取商品数量
-                    $quantity = $product['total_num'];
-                    // 为每个商品生成分红订单
-                    for ($i = 0; $i < $quantity; $i++) {
-                        if ($purchase_count==1){
-                            $list[]=array_merge($data,['vip_area_type'=>10,'vip_area_money'=>$vipGrade['agent_money'],'is_vip'=>1,'purchase_count'=>$purchase_count]);
-                                $purchase_count++;
-                        }else{
-                            if ($vipGrade['repurchase_money']>0){
-                                $list[]=array_merge($data,['vip_area_type'=>20,'vip_area_money'=>$vipGrade['repurchase_money'],'is_vip'=>1,'purchase_count'=>$purchase_count]);
-                                $purchase_count++;
+            // 获取当前买家的推荐人信息
+            $userModel = UserModel::detail($order['user_id']);
+            if (!empty($userModel) && !empty($userModel['referee_id'])) {
+                // 检查推荐人是否为VIP专区用户
+                $vipUser = User::detail($userModel['referee_id']);
+                if ($vipUser) {
+                    $data['vip_area_user_id'] = $vipUser['user_id'];
+                    $data['referee_id'] = $userModel['referee_id'];
+                    // 获取VIP等级设置
+                    $vipGrade = Grade::detail($vipUser['grade_id']);
+                    if ($vipGrade) {
+                        $config = Setting::getItem('basic', $order['app_id']);
+                        if (!empty($config['become__buy_product_ids'])) {
+                            $purchase_count=(new self())->getPurchaseCount($order['user_id']);
+                            foreach ($order['product'] as $product){
+                                if (in_array($product['product_id'], $config['become__buy_product_ids'])) {
+                                    // 获取商品数量
+                                    $quantity = $product['total_num'];
+                                    // 为每个商品生成分红订单
+                                    for ($i = 0; $i < $quantity; $i++) {
+                                        if ($purchase_count==1){
+                                            $list[]=array_merge($data,['vip_area_type'=>10,'vip_area_money'=>$vipGrade['agent_money'],'is_vip'=>1,'purchase_count'=>$purchase_count]);
+                                            $purchase_count++;
+                                        }else{
+                                            if ($vipGrade['repurchase_money']>0){
+                                                $list[]=array_merge($data,['vip_area_type'=>20,'vip_area_money'=>$vipGrade['repurchase_money'],'is_vip'=>1,'purchase_count'=>$purchase_count]);
+                                                $purchase_count++;
+                                            }
+                                        }
+                                    }
+                                }
                             }
+                        }
+                        $directReferralsCount=0;
+                        $user=UserModel::detail($order['user_id']);
+                        if (!empty($user['referee_id'])){
+                            // 检查推荐人是否满足直推条件(直推用户数量)
+                            $directReferralsCount = UserModel::where('referee_id', '=', $user['referee_id'])->count();
+                        }
+                        $requiredReferralCount = $setting['referee_buy_count'] ?? 0;
+                        if ($vipGrade['commission']>0 && $directReferralsCount >= $requiredReferralCount){
+                            // 计算平台直推佣金金额
+                            $commissionAmount = bcmul($orderPrice, bcdiv($vipGrade['commission'], '100', 4), 2);
+                            $list[]=array_merge($data,['vip_area_type'=>40,'vip_area_money'=>$commissionAmount]);
                         }
                     }
                 }
             }
-            $directReferralsCount=0;
-            $user=UserModel::detail($order['user_id']);
-            if (!empty($user['referee_id'])){
-                // 检查推荐人是否满足直推条件(直推用户数量)
-                $directReferralsCount = UserModel::where('referee_id', '=', $user['referee_id'])->count();
-            }
-            $requiredReferralCount = $setting['referee_buy_count'] ?? 0;
-            if ($vipGrade['commission']>0 && $directReferralsCount >= $requiredReferralCount){
-                // 计算佣金金额
-                $commissionAmount = bcmul($orderPrice, bcdiv($vipGrade['commission'], '100', 4), 2);
-                $list[]=array_merge($data,['vip_area_type'=>40,'vip_area_money'=>$commissionAmount]);
+            if( $order['supplier']['referee_id']!=0){
+                $supplierReferee=VipUserModel::detail($order['supplier']['referee_id']);
+                if ($supplierReferee){
+                    $vipGradeSupplier=Grade::detail($supplierReferee['grade_id']);
+                    if ($vipGradeSupplier['supplier_money']>0){
+                        // 计算直推店铺交易额佣金金额
+                        $supplier_money = bcmul($orderPrice, bcdiv($vipGrade['supplier_money'], '100', 4), 2);
+                        $list[]=array_merge($data,['vip_area_type'=>50,'vip_area_money'=>$supplier_money,'vip_area_user_id'=>$supplierReferee['user_id'],'referee_id'=>$supplierReferee['referee_id']]);
+                    }
+                }
             }
             if (empty($list)){
                 return true;

--
Gitblit v1.9.2