101 lines
3.3 KiB
PHP
101 lines
3.3 KiB
PHP
<?php
|
||
|
||
namespace Extend\TencentIm;
|
||
|
||
use App\Constants\HttpEnumCode;
|
||
use App\Exception\BusinessException;
|
||
use GuzzleHttp\Exception\GuzzleException;
|
||
|
||
/**
|
||
* 账户资料
|
||
*/
|
||
class Profile extends Base
|
||
{
|
||
private string $version = 'v4';
|
||
|
||
/**
|
||
* 设置账户资料
|
||
* @param string $user_id 用户id
|
||
* @param array $arg
|
||
* 内置字段:https://cloud.tencent.com/document/product/269/1500#.E6.A0.87.E9.85.8D.E8.B5.84.E6.96.99.E5.AD.97.E6.AE.B5
|
||
* 自定义字段:控制台->应用配置>功能配置->新增
|
||
* Tag_Profile_Custom_Hname:医院名称
|
||
* Tag_Profile_Custom_Title:医生职称
|
||
* @return bool
|
||
* @throws GuzzleException
|
||
*/
|
||
public function setProfile(string $user_id,array $arg): bool
|
||
{
|
||
try {
|
||
$profileItem = [];
|
||
foreach ($arg as $key => $value){
|
||
$profileItem[] = [
|
||
'Tag' => $key,
|
||
'Value' => $value
|
||
];
|
||
}
|
||
|
||
$options = [
|
||
"json"=> [
|
||
"From_Account" => $user_id,
|
||
"ProfileItem" => $profileItem,
|
||
]
|
||
];
|
||
|
||
$path = $this->config['base_url'] . $this->version . "/profile/portrait_set?" . $this->buildRequestParams();
|
||
$this->postRequest($path,$options);
|
||
|
||
return true;
|
||
}catch (\Exception $e) {
|
||
throw new BusinessException($e->getMessage(), HttpEnumCode::SERVER_ERROR);
|
||
}
|
||
}
|
||
|
||
/**
|
||
* 拉取一个账户的多个资料
|
||
* 返回未设置的字段
|
||
* @param string $user_id
|
||
* @param array $arg
|
||
* @return array|string[]
|
||
* @throws GuzzleException
|
||
*/
|
||
public function getOneAccountPortraitList(string $user_id,array $arg = ['Tag_Profile_IM_Gender','Tag_Profile_Custom_Hname','Tag_Profile_Custom_Title',"Tag_Profile_IM_Image"]): array
|
||
{
|
||
try {
|
||
$options = [
|
||
"json"=> [
|
||
"To_Account" => [$user_id],
|
||
"TagList" => $arg,
|
||
]
|
||
];
|
||
|
||
$path = $this->config['base_url'] . $this->version . "/profile/portrait_get?" . $this->buildRequestParams();
|
||
$result = $this->postRequest($path,$options);
|
||
|
||
$result_arg = [];
|
||
if (!empty($result['UserProfileItem'])){
|
||
foreach ($result['UserProfileItem'] as $user_profile_item){
|
||
if(!empty($user_profile_item['ProfileItem'])){
|
||
foreach ($user_profile_item['ProfileItem'] as $profile_item){
|
||
if (!empty($profile_item['Value'])){
|
||
// 性别为未知时跳过
|
||
if ($profile_item['Tag'] == "Tag_Profile_IM_Gender" && $profile_item['Value'] == "Gender_Type_Unknown"){
|
||
continue;
|
||
}
|
||
$result_arg[] = $profile_item['Tag'];
|
||
}
|
||
}
|
||
}
|
||
}
|
||
}
|
||
|
||
if (empty($result_arg)){
|
||
return $arg;
|
||
}
|
||
|
||
return array_diff($arg,$result_arg);
|
||
}catch (\Exception $e) {
|
||
throw new BusinessException($e->getMessage(), HttpEnumCode::SERVER_ERROR);
|
||
}
|
||
}
|
||
} |