123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183 |
- <?php
- namespace app\common\model;
- use think\Model;
- use traits\model\SoftDelete;
- class User extends Model{
- use SoftDelete;
- protected $deleteTime = 'delete_time';
- public function setOppwdAttr($value){
- return md5($value);
- }
- public function getLevelTextAttr($value,$data){
- $level = $data['level'];
- if ($level == 0) {
- return '注册用户';
- }
- $order_cnf = cnf('order');
- $level_cnf = $order_cnf['level'];
- foreach ($level_cnf as $key => $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;
- }
- }
|