belongsTo('app\\common\\model\\user\\User'); } /** * 关联团队分红用户表 */ public function team() { return $this->belongsTo('app\\common\\model\\plus\\team\\User')->where('is_delete', '=', 0); } /** * 关联团队分红用户表 */ public function team1() { return $this->belongsTo('app\\common\\model\\plus\\team\\User', 'user_id')->where('is_delete', '=', 0); } /** * 关联分销商用户表 */ public function agent1() { return $this->belongsTo('app\\common\\model\\plus\\agent\\User', 'agent_id')->where('is_delete', '=', 0); } /** * 获取所有下线ID集 */ public function getAllIds($agent_id) { return $this->where('agent_id', '=', $agent_id)->column('user_id'); } /** * 获取指定用户的下线列表 */ public function getAllList($userId) { return $this->with(['team1'])->where('agent_id', '=', $userId)->select(); } /** * 获取指定用户的下线列表 */ public function getListByIds($userIds, $with = []) { return $this->getListByInArray('agent_id', $userIds, $with); } /** * 获取指定用户的下线列表 */ private function getListByInArray($field, $data, $with = []) { return $this->with($with) ->where($field, 'in', $data) ->select(); } /** * 创建推荐关系 */ 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; } /** * 删除推荐关系 */ public static function deleteRelation($user_id) { $model = new self; $parent = $model->where('agent_id', '=', $user_id)->select(); if ($parent) { foreach ($parent as $p) { $model->where('user_id', '=', $p['user_id'])->where('level', '>=', $p['level'])->delete(); } } $model->where('user_id', '=', $user_id)->delete(); } /** * 删除推荐关系 */ public static function modifyRelation($user_id, $agent_id = NULL) { $model = new self; $model->where('user_id', '=', $user_id)->delete(); if( !empty($agent_id) ) { self::updateRelation($user_id, $agent_id); } $parent = $model->where('agent_id', '=', $user_id)->select(); if ($parent) { foreach ($parent as $p) { $model->where('user_id', '=', $p['user_id'])->where('level', '>', $p['level'])->delete(); self::updateRelation($p['id'], $p['agent_id'], $p['level']); } } } /** * 新增关系记录 */ 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]); } }