quanwei
2025-12-13 30563323a53b0d0260c97d08a9e8bd4cc8227a95
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
<?php
 
namespace app\common\model\plus\bonus;
 
use app\common\model\BaseModel;
use app\common\model\plus\agent\Referee as agentRefereeModel;
use app\common\model\user\User as UserModel;
/**
 * 队长推荐关系模型
 */
class Referee extends BaseModel
{
    protected $name = 'bonus_referee';
    protected $pk = 'id';
 
    /**
     * 关联用户表
     */
    public function user()
    {
        return $this->belongsTo('app\\common\\model\\user\\User');
    }
 
    /**
     * 关联队长用户表
     */
    public function bonus()
    {
        return $this->belongsTo('app\\common\\model\\plus\\bonus\\User')->where('is_delete', '=', 0);
    }
 
    /**
     * 关联队长用户表
     */
    public function bonus1()
    {
        return $this->belongsTo('app\\common\\model\\plus\\bonus\\User', 'bonus_id')->where('is_delete', '=', 0);
    }
 
    /**
     * 获取上级用户id
     */
    public static function getRefereeUserId($user_id, $level, $is_team = false)
    {
        $bonus_id = (new self)->where(compact('user_id', 'level'))
            ->value('bonus_id');
        if (!$bonus_id) return 0;
        return $is_team ? (User::isBonusUser($bonus_id) ? $bonus_id : 0) : $bonus_id;
    }
 
    /**
     * 获取我的团队列表
     */
    public function getList($user_id, $level = -1)
    {
        $userIds=$this->getBonusUserIds($user_id);
        $model = new UserModel();
        
        $ids = implode(",", $userIds);
        return $model->where('is_delete', '=', 0)
            ->where('user_id', 'in', $userIds)
            ->order(['create_time' => 'desc'])
            ->paginate(15);
    }
    /**
     * 获取队长的所有队员
     */
    public function getBonusUserIds($user_id)
    {
         
        $agentRefereeModel=new agentRefereeModel();
        //获取下级团队成员ID集
        $user_ids=$agentRefereeModel->getBonusUserIds($user_id, 1);
       
        $teamUserIds=array();
        $cengji=0;
        while ($cengji<=10) {
           $cengji++;
           if(!empty($user_ids)){ 
               $old=$user_ids;
               $new=array();
              foreach($old as $key=>$value){
                  $teamUserIds[]=$value;
                  $user_ids=$agentRefereeModel->getBonusUserIds($value, 1);
                  $new=array_merge($new,$user_ids);
              }
              $user_ids=$new;
           }else{
                break;
           }
        }
         
       return $teamUserIds;
    }
 
    /**
     * 创建分红层级关系
     */
    public static function createRelation($user_id, $referee_id)
    {
        $user = UserModel::detail($user_id);
        // 分红基本设置
        $setting = Setting::getItem('basic', $user['app_id']);
        // 是否开启分红功能
        if (!$setting['is_open']) {
            return false;
        }
        // 自分享
        // if ($user_id == $referee_id) {
        //     return false;
        // }
        // # 记录一级推荐关系
        // 判断当前用户是否已存在推荐关系
        // if (self::isExistReferee($user_id)) {
        //     return false;
        // }
        // 判断推荐人是否为分销商
        // if (!User::isBonusUser($referee_id)) {
        //     return false;
        // }
        // 新增关系记录
        $model = new self;
        $model->add($referee_id, $user_id, 1);
        return true;
    }
 
    /**
     * 新增关系记录
     */
    private function add($bonus_id, $user_id, $level = 1)
    {
        $user = UserModel::detail($user_id);
        // 新增推荐关系
        $app_id = $user['app_id'];
        $create_time = time();
        $this->insert(compact('bonus_id', 'user_id', 'level', 'app_id', 'create_time'));
        return true;
    }
    
}