<?php
/**
 * Created by PhpStorm.
 * User: Administrator
 * Date: 2019-06-20
 * Time: 14:23
 */

namespace App\Repositories;


use App\Models\MemberGroup;
use App\Models\MemberGroupInfo;
use App\Traits\UserTrait;
use Illuminate\Support\Facades\Redis;

class MemberGroupRepository {
    use UserTrait;
    public function __construct(MemberGroup $memberGroup,MemberGroupInfo $memberGroupInfo) {
        $this->memberGroup = $memberGroup;
        $this->memberGroupInfo = $memberGroupInfo;
    }

    /**
     * @param $request
     * @return array
     * 获取推荐用户
     */
    public function isSuggestMember($request){
        $userInfo = $this->getUserInfo();
        if (empty($userInfo)) {
            return jsonError('获取用户信息失败');
        }
       $group = $this->memberGroup->where('is_suggest',1)->first();
       $take = 50;
       if(!empty($request['take_count'])){
           $take = $request['take_count'];
       }
       if($group){
           $ids = $this->memberGroupInfo
               ->where('member_group_id',$group->id)
               ->orderBy('sort')
               ->take($take)
               ->pluck('uid')
               ->toArray();
           if($ids){
               $data = [];
               foreach($ids as $uid){
                   $user = Redis::HGETALL('userInfo:'.$uid);
                   if(!$user){
                       $user = $this->userInfo($uid);
                   }
                   if($user){
                       $topics = Redis::zrevrange('topic.user_uid' . $user['uid'], 0, 2, 'withscores');
                       $names = [];
                       foreach($topics as $key => $item){
                           $topicNameArray = Redis::ZRANGEBYSCORE('topic.name', $key, $key);
                           if($topicNameArray){
                               $names[] = reset($topicNameArray);
                           }
                       }
                       $data[] = [
                           'uid' => $user['uid'],
                           'username' => subtext($user['username'], 10),
                           'avatar' => $user['avatar'],
                           'follow_status' => $this->getFollowStatus($userInfo['uid'], $user['uid']),
                           'follow_topic' => $names,
                           'topic_name' => $names[0]??'',
                       ];
                   }
               }
               return jsonSuccess(['list'=>$data]);
           }
       }
       return jsonSuccess();
    }
}