Levels.php 3.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101
  1. <?php
  2. /**
  3. * 用户要求开通VIP关系表 Table<ai_allwin_user_level>
  4. */
  5. namespace app\allwin\model;
  6. use think\Model;
  7. use think\facade\Validate;
  8. class Levels extends Model{
  9. protected $pk = 'id';
  10. protected $table = 'ai_allwin_user_level';
  11. public function user(){
  12. return $this->hasOne('app\common\model\SystemUser','id','user_id');
  13. }
  14. /**
  15. * 创建用户关系
  16. * @param integer $user_id 当前用户ID
  17. * @param integer $parent_id 上级用户ID
  18. * @return void
  19. */
  20. public static function addLevel(int $user_id,int $parent_id){
  21. if($parent_id){
  22. $data[0]['level'] = 1;
  23. $data[0]['parent_id'] = $parent_id;
  24. $data[0]['user_id'] = $user_id;
  25. $levellist = self::where('user_id',$parent_id)->select();
  26. foreach ($levellist as $value) {
  27. $level = $value['level'] + 1;
  28. $data[] = ['level' => $level,'parent_id' => $value['parent_id'],'user_id' => $user_id];
  29. }
  30. return self::insertAll($data);
  31. }
  32. return true;
  33. }
  34. /**
  35. * 查询子集用户
  36. * @param [type] $uid
  37. * @param array $level [1,2,3,4]层级
  38. * @return void
  39. */
  40. public static function levelUser($uid,array $level){
  41. $lists = self::where(['parent_id' => $uid,'level' => $level])->order('id desc')->paginate(20,false);
  42. if(empty($lists)){
  43. return;
  44. }
  45. $data = [];
  46. foreach ($lists as $key => $value) {
  47. $data[$key]['face'] = $value->user->face;
  48. $data[$key]['nickname'] = $value->user['nickname'];
  49. $data[$key]['level'] = $value->level;
  50. $data[$key]['parent_id'] = $value->parent_id;
  51. $data[$key]['user_id'] = $value->user['id'];
  52. $data[$key]['invite_code'] = $value->user['invite_code'];
  53. $data[$key]['create_time'] = date('m-d H:i',$value->user['create_time']);
  54. }
  55. return $data;
  56. }
  57. /**
  58. * 查询某个条件下用户列表
  59. * @param array $agent 社群主级别
  60. * @param int $user_id 用户ID
  61. * @param int $level 层级
  62. * @return void
  63. */
  64. public function children_user(int $uid){
  65. //读取所有邀请关联用户
  66. $level = self::where(['user_id' => $uid])->field('parent_id,level,user_id')->order('id desc')->select()->toArray();
  67. if(empty($level)){
  68. return [];
  69. }
  70. foreach ($level as $key => $value) {
  71. $uida[$value['parent_id']]['level'] = $value['level'];
  72. $uida[$value['parent_id']]['user_id'] = $value['user_id'];
  73. }
  74. //读取所有用户信息
  75. $uid = array_column($level,'parent_id');
  76. $info = model('AllwinUser')->with(['user','store'])->whereIn('uid',$uid)->order('id desc')->select()->toArray();
  77. if(empty($info)){
  78. return [];
  79. }
  80. $level_user = [];
  81. foreach ($info as $key => $value) {
  82. $level = $uida[$value['uid']]['level'];
  83. $level_user[$level]['user_id'] = $uida[$value['uid']]['user_id'];
  84. $level_user[$level]['invite_code'] = $value['user']['invite_code'];
  85. $level_user[$level]['nickname'] = $value['user']['nickname'];
  86. $level_user[$level]['face'] = $value['user']['face'];
  87. $level_user[$level]['phone_uid'] = $value['user']['phone_uid'];
  88. $level_user[$level]['parent_id'] = $value['user']['id'];
  89. $level_user[$level]['level'] = $level;
  90. $level_user[$level]['store_name'] = empty($value['store']) ? '[无店铺]平台会员' : $value['store']['name'];
  91. }
  92. krsort($level_user);
  93. return $level_user;
  94. }
  95. }