app_key, $this->client_id, $this->client_secret); $user = new User($auth); try { // 注册单个用户 $data = [ 'username' => $user_info['user_number'], 'password' => $this->user_password, 'nickname' => $user_info['nickname'], ]; $add_info = $user->create($data); //更新换新表token if (!isset($add_info['code'])){ UserHuanxinModel::create_userinfo($user_info['id'],$add_info); }else{ return ['code'=>'0','msg'=>$add_info['error_description']??'信息错误']; } }catch (\Exception $e){ return ['code'=>'0','msg'=>$e->getMessage()??'信息错误']; } return ['code'=>'200','data'=>$add_info,'msg'=>'成功']; } //获取用户token public function getUserToken($username,$user_id){ $user_huanxin = UserHuanxinModel::get(['user_id'=>$user_id]); if (empty($user_huanxin)) return ['code'=>'0','msg'=>'环信用户不存在']; if ($user_huanxin['hx_expires_in'] <= time()-60){ $auth = new Auth($this->app_key, $this->client_id, $this->client_secret); $result = $auth->getUserToken($username,$this->user_password,60*60*24*60); if (!empty($result)){ //更新环信用户表token UserHuanxinModel::update_userinfo($user_id,$result); } }else{ $result = [ 'access_token'=>$user_huanxin['hx_access_token'], 'expires_in'=>$user_huanxin['hx_expires_in'], ]; } return $result; } // 获取用户信息 public function getUser($username) { $auth = new Auth($this->app_key, $this->client_id, $this->client_secret); $user = new User($auth); return $user->show($username); } //发送消息 public function sendMessage($from_user_id,$to_user_id,$send_type,$content,$uuid,$url,$length=0,$thumb_uuid=''){ //查询环信用户表 $from_user_info = UserModel::get($from_user_id); $to_user_info = UserModel::get($to_user_id); $auth = new Auth($this->app_key, $this->client_id, $this->client_secret); $message = new Message($auth); switch ($send_type){ case 'text': $result = $message->text('users',[$to_user_info['user_number']],['msg'=>$content],$from_user_info['user_number']); break; case 'image': //$data = $this->uploadFile($content); $msg = array( 'uuid' => $uuid, 'url' => $url.'/'.$uuid, 'size' => array( 'width' => 36, 'height' => 36, ), ); $result = $message->image('users',[$to_user_info['user_number']],$msg,$from_user_info['user_number']); break; case 'audio': // $data = $this->uploadFile($content); // var_dump($data); // die; $msg = array( 'uuid' => $uuid, 'url' => $url.'/'.$uuid, 'length'=>$length, ); $result = $message->audio('users',[$to_user_info['user_number']],$msg,$from_user_info['user_number']); break; case 'video': //$data = $this->uploadFile($content); $msg = array( 'uuid' => $uuid, // 成功上传视频文件返回的UUID 'url' => $url.'/'.$uuid, // 成功上传视频文件后返回的secret 'thumb'=>$url.'/'.$thumb_uuid, 'thumb_uuid'=>$thumb_uuid, ); $result = $message->video('users',[$to_user_info['user_number']],$msg,$from_user_info['user_number']); break; case 'file': //$data = $this->uploadFile($content); $msg = array( 'uuid' => $uuid, // 获取上传文件成功返回的uuid 'secret' => $url.'/'.$uuid, // 获取上传文件成功返回的secret ); $result = $message->file('users',[$to_user_info['user_number']],$msg,$from_user_info['user_number']); break; } } //传附件 public function uploadFile($file_path){ $auth = new Auth($this->app_key, $this->client_id, $this->client_secret); $Attachment = new Attachment($auth); return $Attachment->uploadFile(dirname(__DIR__, 2).'/public/'.$file_path); } /* * 获取在线用户 */ public function getOnlineUsers($user_ids){ $user_ids = explode(',',$user_ids); $user_lists = UserModel::whereIn('id',$user_ids)->field('id,user_number')->select(); $user_nums = []; foreach ($user_lists as $v){ $user_nums[]=$v['user_number']; } $auth = new Auth($this->app_key, $this->client_id, $this->client_secret); $User = new User($auth); $result = $User->isUsersOnline($user_nums); foreach ($user_lists as $v){ $v['is_online'] = false; foreach ($result as $kk=>$vv){ if (!$v['user_number']) continue; if ($v['user_number'] == $kk){ $v['is_online'] = true; } } } return $user_lists; } }