belongsTo('app\\common\\model\\user\\User'); } /** * 关联股东用户表 */ public function region() { return $this->belongsTo('app\\common\\model\\plus\\region\\User')->where('is_delete', '=', 0); } /** * 关联股东用户表 */ public function region1() { return $this->belongsTo('app\\common\\model\\plus\\region\\User', 'region_id')->where('is_delete', '=', 0); } /** * 获取用户的股东id */ public static function getHeadsId($user_id) { $heads_id = (new self)->where(compact('user_id')) ->value('heads_id'); if (!$heads_id) return 0; return User::isregionUser($heads_id) ? $heads_id : 0; } /** * 获取我的团队列表 */ public function getList($user_id) { $model = $this; return $model->with(['user']) ->alias('referee') ->field('referee.*') ->join('user', 'user.user_id = referee.user_id','left') ->where('referee.heads_id', '=', $user_id) ->where('user.is_delete', '=', 0) ->order(['referee.create_time' => 'desc']) ->paginate(15); } public static function detail($user_id) { return (new static())->where('user_id', '=', $user_id)->find(); } /** * 团队人数统计 */ public static function regionCount($heads_id) { return (new static())->where('heads_id', '=', $heads_id)->count(); } /** * 创建团队关系 */ public static function updateRegionRelation($user_id, $referee_id) { if ($user_id == $referee_id) { return false; } // 如果上级不是股东,获取上级的股东 if (!User::isregionUser($referee_id)) { $referee_id = self::getHeadsId($referee_id); } // 新增关系记录 $model = new self; $model->add($referee_id, $user_id); return true; } /** * 新增关系记录 */ private function add($heads_id, $user_id) { $model = static::detail($user_id) ?: new static; $model->save([ 'heads_id' => $heads_id, 'user_id' => $user_id, 'app_id' => self::$app_id ]); // 记录股东成员数量 User::setMemberInc($heads_id); // 更新股东等级 event('RegionUserGrade', $model['heads_id']); return true; } /** * 创建股东团队 */ public static function createRegion($user_id) { if (!User::isregionUser($user_id)) { return false; } $data = (new RelationModel)->getAllList($user_id); if (!empty($list)) { $heads = array( ); $later = array( ); $ids = array( ); foreach( $data as $k => $v ) { if( !empty($v["region"]) ) { $heads[] = $v["user_id"]; //continue; } $ids[] = $v["user_id"]; } if( !empty($heads) ) { $later = (new RelationModel)->getListByIds($heads); } if( !empty($ids) ) { if( !empty($later) ) { $later = array_column($later, "user_id"); $ids = array_diff($ids, $later); } // 更新 (new self)->where('user_id' , 'in', $ids)->data([ 'heads_id' => $user_id ])->update(); } } return true; } /** * 获取用户所有级差股东 */ public static function getAllJcUser($heads_id, $jcUser = [], $percent_total = 0) { $user = User::detail($heads_id, $width = ['grade', 'referee']); $percent_total += $user['grade']['equity']; if($user['referee']['heads_id']) { $parent = User::detail($user['referee']['heads_id'], $width = ['grade', 'referee']); if($parent['grade']['equity'] > $percent_total) { $jcUser[] = [ 'heads_id' => $user['referee']['heads_id'], 'bonus_type' => 20, 'bonus_percent' => $parent['grade']['equity'] - $percent_total //分红比例 ]; } if($parent['referee']['heads_id']) { return self::getAllJcUser($user['referee']['heads_id'], $jcUser, $percent_total); } } return $jcUser; } /** * 获取用户所有平级股东 */ public static function getAllPjUser($heads_id, $pjaward_level, $pjUser = [], $level = 1) { $user = User::detail($heads_id, $width = ['grade', 'referee']); if($user['referee']['heads_id']) { $parent = User::detail($user['referee']['heads_id'], $width = ['grade', 'referee']); if($parent['grade_id'] == $user['grade_id']) { $pjUser[] = [ 'heads_id' => $user['referee']['heads_id'], 'bonus_type' => 30, 'bonus_percent' => $parent['grade']['pjaward_percent'] //分红比例 ]; $level++; } if($parent['referee']['heads_id'] && $pjaward_level > $level) { return self::getAllPjUser($user['referee']['heads_id'], $pjUser, $pjaward_level, $level); } } return $pjUser; } }