From 04102f7237efefa744090ed7c25f7b5d0807b679 Mon Sep 17 00:00:00 2001
From: quanwei <419654421@qq.com>
Date: Thu, 05 Feb 2026 18:11:57 +0800
Subject: [PATCH] 完成运营中心提现和运营中心权限管理

---
 admin/app/common/model/plus/bonus/User.php |   82 +++++++++++++++++++++++++++++++++++++---
 1 files changed, 75 insertions(+), 7 deletions(-)

diff --git a/admin/app/common/model/plus/bonus/User.php b/admin/app/common/model/plus/bonus/User.php
index 36f9178..0075882 100644
--- a/admin/app/common/model/plus/bonus/User.php
+++ b/admin/app/common/model/plus/bonus/User.php
@@ -5,6 +5,7 @@
 use app\common\model\BaseModel;
 use app\common\model\plus\bonus\Order as OrderModel;
 use app\common\model\plus\bonus\Referee as RefereeModel;
+use app\common\model\user\Grade as GradeModel;
 use app\common\model\user\User as UserModel;
 //use app\common\model\plus\bonus\Order as OrderModel;
 use app\common\model\plus\bonus\Performance as PerformanceModel;
@@ -107,9 +108,13 @@
             //获取直推上级
             $referee_id = agentRefereeModel::getRefereeUserId($user_id, 1);
             //获取直推上级推荐的人数
-            $direct_child_num = $referee_id ? self::getDirectNum($referee_id) : 0;
-            if ($referee_id && $direct_child_num < 2) {
-                $parent = static::detail($referee_id);
+            /*$direct_child_num = $referee_id ? self::getDirectNum($referee_id) : 0;*/
+            $parent_id=0;
+            if ($referee_id) {
+                $parent_id=self::getParentId([$referee_id]);
+            }
+            if ($parent_id) {
+                $parent = static::detail($parent_id);
                 //如果自己名下已经被排满,继续往下找
                 if ($parent['child_num'] == 3) {
                     //获取起始横向排位
@@ -119,7 +124,7 @@
             } else {
                 //规则2:查找有空缺的三叉树
                 $parent = (new static())->where('child_num', '<', 3)
-                                        ->where('user_id', "<>", $referee_id)
+                                        /*->where('user_id', "<>", $referee_id)*/
                                         ->order(['tree_level' => 'asc', 'level_num' => 'asc'])->find();
             }
             $data['parent_id'] = $parent['user_id'];
@@ -132,9 +137,11 @@
                 'child_num' => $parent['child_num'] + 1
             ]);
         }
+        $user=UserModel::detail($user_id);
         if ($model->save(array_merge([
             'user_id' => $user_id,
             'is_delete' => 0,
+            'purchase_count' => $user['purchase_count'],
             'grade_id' => Grade::getDefaultGradeId(),
             'app_id' => $data['app_id']
         ], $data))) {
@@ -143,7 +150,18 @@
         }
         return true;
     }
-
+    /**
+     * 获取团队里公排下级未被排满的id
+     */
+    public static function getParentId($referee)
+    {
+        $user=(new static())->where('user_id', 'in', $referee)->where('child_num', '<', 3)->find();
+        if ($user) {
+            return $user['user_id'];
+        }
+        $subordinate=(new self())->where('parent_id', 'in', $referee)->column('user_id');
+        return self::getParentId($subordinate);
+    }
     /**
      * 添加第一个分红用户
      */
@@ -208,6 +226,48 @@
         }
         return true;
     }
+    public  function addTheFirst4()
+    {
+        $model =  new self;
+        $grade_id=GradeModel::getDefaultGradeId();
+        if ($model->where('tree_level',4)->count()){
+            return true;
+        }
+        //记录分红层级关系
+        $i=4;
+        $userList=$model->where('tree_level',3)->select();
+        $k=0;
+        foreach ($userList as $tree){
+            $new_user_id=$tree['user_id'];
+            for ($j=1; $j <= 3; $j++) {
+                $k++;
+                $user = UserModel::create([
+                    'open_id' => $i . '_' .$k,
+                    'reg_source' => 'sys',
+                    'nickName' => '预留' . $i . '_' . $k,
+                    'grade_id'=>$grade_id,
+                    'app_id' => 10142
+                ]);
+                $child_user_id = $user->user_id;
+                $model->create([
+                    'user_id' => $child_user_id,
+                    'is_delete' => 0,
+                    'app_id' => 10142,
+                    'parent_id' => $new_user_id,
+                    'order_num' => $j,
+                    'tree_level' => 4,
+                    'level_num' => $k
+                ]);
+                $model->where('user_id',$new_user_id)->save([
+                    'user_id' => $new_user_id,
+                    'child_num' => $j
+                ]);
+                RefereeModel::createRelation($child_user_id, $new_user_id);
+            }
+        }
+
+        return true;
+    }
 
     /**
      * 查找横向位置内符合条件的用户
@@ -248,7 +308,10 @@
         $is_expire = User::isExpire($user_id);
         // 队长详情
         $model = static::detail($user_id);
-        if (!$model || $model['is_delete']) {
+        if (!$model) {
+            return false;
+        }
+        if ($model['is_delete']){
             return false;
         }
         if ($money_type == 20){
@@ -329,7 +392,6 @@
         // 复购n次:向上n级(最多不超过存在的层级)
         $targetUserId = $user_id;
         $levelsToGoUp = (new OrderModel)::getUserOrderCounti($user_id);
-
         // 逐级向上查找
         for ($i = 0; $i < $levelsToGoUp; $i++) {
             $currentUser = static::detail($targetUserId);
@@ -392,6 +454,9 @@
     public static function isExpire($user_id)
     {
         $team = self::detail($user_id);
+        if (!$team) {
+            return false;
+        }
         $setting = Setting::getItem('basic', $team['app_id']);
         return !!$team && $team['is_expire'] && $team['is_permanent'] == 0 && $setting['expire_day'] > 0;
     }
@@ -402,6 +467,9 @@
     public static function getExpireTime($user_id)
     {
         $user = self::detail($user_id);
+        if (!$user) {
+            return 0;
+        }
         $setting = Setting::getItem('basic', $user['app_id']);
         if ($user['tree_level'] <= 3 || $user['is_permanent']) {
             $remain_time = '永久';

--
Gitblit v1.9.2