MemberGroupRepository.php 2.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677
  1. <?php
  2. /**
  3. * Created by PhpStorm.
  4. * User: Administrator
  5. * Date: 2019-06-20
  6. * Time: 14:23
  7. */
  8. namespace App\Repositories;
  9. use App\Models\MemberGroup;
  10. use App\Models\MemberGroupInfo;
  11. use App\Traits\UserTrait;
  12. use Illuminate\Support\Facades\Redis;
  13. class MemberGroupRepository {
  14. use UserTrait;
  15. public function __construct(MemberGroup $memberGroup,MemberGroupInfo $memberGroupInfo) {
  16. $this->memberGroup = $memberGroup;
  17. $this->memberGroupInfo = $memberGroupInfo;
  18. }
  19. /**
  20. * @param $request
  21. * @return array
  22. * 获取推荐用户
  23. */
  24. public function isSuggestMember($request){
  25. $userInfo = $this->getUserInfo();
  26. if (empty($userInfo)) {
  27. return jsonError('获取用户信息失败');
  28. }
  29. $group = $this->memberGroup->where('is_suggest',1)->first();
  30. $take = 50;
  31. if(!empty($request['take_count'])){
  32. $take = $request['take_count'];
  33. }
  34. if($group){
  35. $ids = $this->memberGroupInfo
  36. ->where('member_group_id',$group->id)
  37. ->orderBy('sort')
  38. ->take($take)
  39. ->pluck('uid')
  40. ->toArray();
  41. if($ids){
  42. $data = [];
  43. foreach($ids as $uid){
  44. $user = Redis::HGETALL('userInfo:'.$uid);
  45. if(!$user){
  46. $user = $this->userInfo($uid);
  47. }
  48. if($user){
  49. $topics = Redis::zrevrange('topic.user_uid' . $user['uid'], 0, 2, 'withscores');
  50. $names = [];
  51. foreach($topics as $key => $item){
  52. $topicNameArray = Redis::ZRANGEBYSCORE('topic.name', $key, $key);
  53. if($topicNameArray){
  54. $names[] = reset($topicNameArray);
  55. }
  56. }
  57. $data[] = [
  58. 'uid' => $user['uid'],
  59. 'username' => subtext($user['username'], 10),
  60. 'avatar' => $user['avatar'],
  61. 'follow_status' => $this->getFollowStatus($userInfo['uid'], $user['uid']),
  62. 'follow_topic' => $names,
  63. 'topic_name' => $names[0]??'',
  64. ];
  65. }
  66. }
  67. return jsonSuccess(['list'=>$data]);
  68. }
  69. }
  70. return jsonSuccess();
  71. }
  72. }