$value) { if ($value['num'] == $level) { return $value['cname']; } } return $level; } public function getStateTextAttr($value,$data){ $state = $data['state']; $text = ['0'=>'禁用','1'=>'正常','2'=>'出局','3'=>'封号']; return $text[$state]; } public function getActiveTextAttr($value,$data){ $active = $data['active']; $text = ['0'=>'否','1'=>'是']; return $text[$active]; } public function getVipTextAttr($value,$data){ $vip = $data['vip']; $text = ['0'=>'否','1'=>'是']; return $text[$vip]; } public function role(){ return $this->belongsTo('Role','role_id'); } public function getInviterAttr($value,$data){ $Tree = model('Tree'); $tree = $Tree->where(['layer'=>1,'user_id'=>$data['id']])->find(); if (!$tree) { return []; } return $tree['node']; } public function getBindAddressAttr($value,$data){ $Bind = model('Bind'); return $Bind->where(['user_id'=>$data['id'],'type'=>'address'])->value('account'); } public function getForbidAttr($value,$data){ return empty($value)?[]:json_decode($value,true); } public function setForbidAttr($value,$data){ if (!empty($value)) { $value = json_encode($value); } return $value; } public function getHideMobileAttr($value,$data){ $mobile = $data['mobile']; return substr_replace($mobile, '****', 3, 4);; } public function getNicknameAttr($value,$data){ if (empty($value)) { $value = $this['hide_mobile']; } return $value; } public function getAvatarFullUrlAttr($value,$data){ $avatar_url = $data['avatar_url']; if (empty($avatar_url)) { $avatar_url = '/static/images/default_avatar.png'; } $domain = request()->domain(); return $domain.$avatar_url; } public function getInviteNumAttr($value,$data){ $user_id = $data['id']; $Tree = model('Tree'); return $Tree->alias('t') ->join('User u','u.id = t.user_id') ->where(['layer'=>1,'node_id'=>$user_id])->count(); } public function getTeamNumAttr($value,$data){ $user_id = $data['id']; $Tree = model('Tree'); return $Tree->alias('t') ->join('User u','u.id = t.user_id') ->where(['node_id'=>$user_id])->count(); } public function tree($pid,$level=3,$filter=[]){ $func = function ($pid,$level,$filter) use (&$func) { $where['inviter_id'] = $pid; if (!empty($filter)) { $where['id'] = array('in',$filter); } $list = $this->where($where)->order(['id asc'])->select(); $data = []; if($level <= 0) return $data; foreach ($list as $key => $value) { $data[$key]['id'] = $value['id']; $data[$key]['inviter_id'] = $value['inviter_id']; $data[$key]['title'] = $value['id'].' 会员级别:'.$value['vip'].' 市场级别:'.$value['level'].' 邀请人数:'.$value['invite_num'].' 团队人数:'.$value['children_num']; $data[$key]['children'] = $func($value['id'],$level,$filter); } $level --; return $data; }; return $func($pid,$level,$filter); } public function childrenids($id,$level,$filter=[]){ $func = function ($id,$level,$filter) use (&$func) { $data = []; $where['inviter_id'] = $id; $where = array_merge($where,$filter); $list = $this->where($where)->select(); if (count($list) == 0 || $level == 0) { return $data; } $level --; foreach ($list as $key => $value) { $id = $value['id']; $data[] = $id; $data = array_merge($data,$func($id,$level,$filter)); } return $data; }; return $func($id,$level,$filter); } public function parentids($id,$level,$filter=[]){ $func = function ($id,$level,$filter) use (&$func) { $data = []; $where['id'] = $id; $where = array_merge($where,$filter); $parent_id = $this->where($where)->value('inviter_id'); if ( $parent_id == 0 || $level == 0 ) { return $data; } $data[] = $parent_id; $level --; $data = array_merge($data,$func($parent_id,$level,$filter)); return $data; }; return $func($id,$level,$filter); } public function getinfobyno($no,$role_name = 'user'){ $user = $this->field('u.id') ->alias('u') ->join('Role r','r.id = u.role_id') ->where(['u.no'=>$no,'r.name'=>$role_name])->find(); return $user; } }