<?php
|
|
namespace app\api\model\plus\agent;
|
|
use app\common\model\plus\agent\Relation as RelationModel;
|
use app\common\model\user\User as UserModel;
|
use app\common\model\plus\agent\Referee as RefereeModel;
|
|
/**
|
* 分销商推荐关系模型(所有层级)
|
*/
|
class Relation extends RelationModel
|
{
|
/**
|
* 隐藏字段
|
*/
|
protected $hidden = [];
|
|
/**
|
* 创建推荐关系
|
*/
|
public static function updateRelation($user_id, $referee_id, $level = 1, $later = array())
|
{
|
// 自分享
|
if ($user_id == $referee_id) {
|
return false;
|
}
|
if (!empty($later)) {
|
if (self::inArray($referee_id, $later)) {
|
return UserModel::detail($referee_id);
|
}
|
} else {
|
$later[] = $user_id;
|
}
|
$later[] = $referee_id;
|
$level = max($level, 1);
|
$model = new self;
|
if ( $level == 1 ) {
|
$model->add($referee_id, $user_id, 1);
|
}
|
$parent_id = RefereeModel::getRefereeUserId($referee_id, 1);
|
if (empty($parent_id )) {
|
return false;
|
} else {
|
if ($user_id == $parent_id) {
|
return UserModel::detail($user_id);
|
}
|
$model->add($parent_id, $user_id, ++$level);
|
return self::updateRelation($user_id, $parent_id, $level, $later);
|
}
|
return true;
|
}
|
|
/**
|
* 新增关系记录
|
*/
|
private function add($agent_id, $user_id, $level = 1)
|
{
|
// 新增推荐关系
|
$app_id = self::$app_id;
|
$create_time = time();
|
$this->insert(compact('agent_id', 'user_id', 'level', 'app_id', 'create_time'));
|
return true;
|
}
|
|
private static function inArray($item, $array)
|
{
|
$flipArray = array_flip($array);
|
return isset($flipArray[$item]);
|
}
|
}
|