MemberGroupRepository.php 2.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970
  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. $group = $this->memberGroup->where('is_suggest',1)->first();
  26. $take = 50;
  27. if(!empty($request['take_count'])){
  28. $take = $request['take_count'];
  29. }
  30. if($group){
  31. $ids = $this->memberGroupInfo
  32. ->where('member_group_id',$group->id)
  33. ->orderBy('sort')
  34. ->take($take)
  35. ->pluck('uid')
  36. ->toArray();
  37. if($ids){
  38. $data = [];
  39. foreach($ids as $uid){
  40. $user = $this->userInfo($uid);
  41. if($user){
  42. $topics = Redis::zrevrange('topic.user_uid' . $user['uid'], 0, 2, 'withscores');
  43. $names = [];
  44. foreach($topics as $key => $item){
  45. $topicNameArray = Redis::ZRANGEBYSCORE('topic.name', $key, $key);
  46. if($topicNameArray){
  47. $names[] = reset($topicNameArray);
  48. }
  49. }
  50. $data[] = [
  51. 'uid' => intval($user['uid']),
  52. 'username' => $user['username'],
  53. 'avatar' => $user['avatar'],
  54. 'follow_status' => $this->getFollowStatus($userInfo['uid'], $user['uid']),
  55. 'follow_topic' => $names,
  56. 'topic_name' => $names[0]??'',
  57. ];
  58. }
  59. }
  60. return jsonSuccess(['list'=>$data]);
  61. }
  62. }
  63. return jsonSuccess();
  64. }
  65. }