<?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;
|
}
|
|
}
|