User.php 5.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183
  1. <?php
  2. namespace app\common\model;
  3. use think\Model;
  4. use traits\model\SoftDelete;
  5. class User extends Model{
  6. use SoftDelete;
  7. protected $deleteTime = 'delete_time';
  8. public function setOppwdAttr($value){
  9. return md5($value);
  10. }
  11. public function getLevelTextAttr($value,$data){
  12. $level = $data['level'];
  13. if ($level == 0) {
  14. return '注册用户';
  15. }
  16. $order_cnf = cnf('order');
  17. $level_cnf = $order_cnf['level'];
  18. foreach ($level_cnf as $key => $value) {
  19. if ($value['num'] == $level) {
  20. return $value['cname'];
  21. }
  22. }
  23. return $level;
  24. }
  25. public function getStateTextAttr($value,$data){
  26. $state = $data['state'];
  27. $text = ['0'=>'禁用','1'=>'正常','2'=>'出局','3'=>'封号'];
  28. return $text[$state];
  29. }
  30. public function getActiveTextAttr($value,$data){
  31. $active = $data['active'];
  32. $text = ['0'=>'否','1'=>'是'];
  33. return $text[$active];
  34. }
  35. public function getVipTextAttr($value,$data){
  36. $vip = $data['vip'];
  37. $text = ['0'=>'否','1'=>'是'];
  38. return $text[$vip];
  39. }
  40. public function role(){
  41. return $this->belongsTo('Role','role_id');
  42. }
  43. public function getInviterAttr($value,$data){
  44. $Tree = model('Tree');
  45. $tree = $Tree->where(['layer'=>1,'user_id'=>$data['id']])->find();
  46. if (!$tree) {
  47. return [];
  48. }
  49. return $tree['node'];
  50. }
  51. public function getBindAddressAttr($value,$data){
  52. $Bind = model('Bind');
  53. return $Bind->where(['user_id'=>$data['id'],'type'=>'address'])->value('account');
  54. }
  55. public function getForbidAttr($value,$data){
  56. return empty($value)?[]:json_decode($value,true);
  57. }
  58. public function setForbidAttr($value,$data){
  59. if (!empty($value)) {
  60. $value = json_encode($value);
  61. }
  62. return $value;
  63. }
  64. public function getHideMobileAttr($value,$data){
  65. $mobile = $data['mobile'];
  66. return substr_replace($mobile, '****', 3, 4);;
  67. }
  68. public function getNicknameAttr($value,$data){
  69. if (empty($value)) {
  70. $value = $this['hide_mobile'];
  71. }
  72. return $value;
  73. }
  74. public function getAvatarFullUrlAttr($value,$data){
  75. $avatar_url = $data['avatar_url'];
  76. if (empty($avatar_url)) {
  77. $avatar_url = '/static/images/default_avatar.png';
  78. }
  79. $domain = request()->domain();
  80. return $domain.$avatar_url;
  81. }
  82. public function getInviteNumAttr($value,$data){
  83. $user_id = $data['id'];
  84. $Tree = model('Tree');
  85. return $Tree->alias('t')
  86. ->join('User u','u.id = t.user_id')
  87. ->where(['layer'=>1,'node_id'=>$user_id])->count();
  88. }
  89. public function getTeamNumAttr($value,$data){
  90. $user_id = $data['id'];
  91. $Tree = model('Tree');
  92. return $Tree->alias('t')
  93. ->join('User u','u.id = t.user_id')
  94. ->where(['node_id'=>$user_id])->count();
  95. }
  96. public function tree($pid,$level=3,$filter=[]){
  97. $func = function ($pid,$level,$filter) use (&$func) {
  98. $where['inviter_id'] = $pid;
  99. if (!empty($filter)) {
  100. $where['id'] = array('in',$filter);
  101. }
  102. $list = $this->where($where)->order(['id asc'])->select();
  103. $data = [];
  104. if($level <= 0) return $data;
  105. foreach ($list as $key => $value) {
  106. $data[$key]['id'] = $value['id'];
  107. $data[$key]['inviter_id'] = $value['inviter_id'];
  108. $data[$key]['title'] = $value['id'].' 会员级别:'.$value['vip'].' 市场级别:'.$value['level'].' 邀请人数:'.$value['invite_num'].' 团队人数:'.$value['children_num'];
  109. $data[$key]['children'] = $func($value['id'],$level,$filter);
  110. }
  111. $level --;
  112. return $data;
  113. };
  114. return $func($pid,$level,$filter);
  115. }
  116. public function childrenids($id,$level,$filter=[]){
  117. $func = function ($id,$level,$filter) use (&$func) {
  118. $data = [];
  119. $where['inviter_id'] = $id;
  120. $where = array_merge($where,$filter);
  121. $list = $this->where($where)->select();
  122. if (count($list) == 0 || $level == 0) {
  123. return $data;
  124. }
  125. $level --;
  126. foreach ($list as $key => $value) {
  127. $id = $value['id'];
  128. $data[] = $id;
  129. $data = array_merge($data,$func($id,$level,$filter));
  130. }
  131. return $data;
  132. };
  133. return $func($id,$level,$filter);
  134. }
  135. public function parentids($id,$level,$filter=[]){
  136. $func = function ($id,$level,$filter) use (&$func) {
  137. $data = [];
  138. $where['id'] = $id;
  139. $where = array_merge($where,$filter);
  140. $parent_id = $this->where($where)->value('inviter_id');
  141. if ( $parent_id == 0 || $level == 0 ) {
  142. return $data;
  143. }
  144. $data[] = $parent_id;
  145. $level --;
  146. $data = array_merge($data,$func($parent_id,$level,$filter));
  147. return $data;
  148. };
  149. return $func($id,$level,$filter);
  150. }
  151. public function getinfobyno($no,$role_name = 'user'){
  152. $user = $this->field('u.id')
  153. ->alias('u')
  154. ->join('Role r','r.id = u.role_id')
  155. ->where(['u.no'=>$no,'r.name'=>$role_name])->find();
  156. return $user;
  157. }
  158. }