1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374 |
- <?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 = $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' => intval($user['uid']),
- 'username' => $user['username'],
- 'avatar' => $user['avatar'],
- 'follow_status' => $this->getFollowStatus($userInfo['uid'], $user['uid']),
- 'follow_topic' => $names,
- 'topic_name' => $names[0]??'',
- ];
- }
- }
- return jsonSuccess(['list'=>$data]);
- }
- }
- return jsonSuccess();
- }
- }
|