MemberGroupRepository.php 2.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374
  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 = $this->userInfo($uid);
  45. if($user){
  46. $topics = Redis::zrevrange('topic.user_uid' . $user['uid'], 0, 2, 'withscores');
  47. $names = [];
  48. foreach($topics as $key => $item){
  49. $topicNameArray = Redis::ZRANGEBYSCORE('topic.name', $key, $key);
  50. if($topicNameArray){
  51. $names[] = reset($topicNameArray);
  52. }
  53. }
  54. $data[] = [
  55. 'uid' => intval($user['uid']),
  56. 'username' => $user['username'],
  57. 'avatar' => $user['avatar'],
  58. 'follow_status' => $this->getFollowStatus($userInfo['uid'], $user['uid']),
  59. 'follow_topic' => $names,
  60. 'topic_name' => $names[0]??'',
  61. ];
  62. }
  63. }
  64. return jsonSuccess(['list'=>$data]);
  65. }
  66. }
  67. return jsonSuccess();
  68. }
  69. }