TenimService.php 5.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144
  1. <?php
  2. namespace app\common\service;
  3. use getusersig\getusersig;
  4. use tencentim\tencentim;
  5. use think\Db;
  6. use think\Exception;
  7. class TenimService
  8. {
  9. private $url = '';
  10. /**
  11. * 初始化方法
  12. */
  13. public function __construct()
  14. {
  15. $random = rand(10000000,99999999);
  16. $usersig = $this->usersig("administrator");
  17. // 获取配置信息
  18. $config = config("tencent_im");
  19. $url = "?sdkappid=".$config["sdkappid"];
  20. $url .= "&identifier=administrator";
  21. $url .= "&usersig=".$usersig;
  22. $url .= "&random=".$random;
  23. $url .= "&contenttype=json";
  24. $this->url = $url;
  25. }
  26. /**
  27. * 获取usersig签名-具体操作
  28. */
  29. private function usersig($user_id) {
  30. // 获取配置信息
  31. $config = config("tencent_im");
  32. $usersigObj = new getusersig($config["sdkappid"],$config["key"]);
  33. $usersig = $usersigObj->genUserSig($user_id);
  34. return $usersig;
  35. }
  36. /**
  37. * 获取房间用户
  38. */
  39. public function getRoomUser($params=[])
  40. {
  41. $result = [
  42. 'status' => 1,
  43. 'msg' => '获取成功',
  44. 'data' => [],
  45. ];
  46. try {
  47. $partyArr = isset($params['party_ids']) ? $params['party_ids'] : [];
  48. $url = "https://console.tim.qq.com/v4/group_open_avchatroom_http_svc/get_members".$this->url;
  49. $tencentObj = new tencentim($url);
  50. //获取用户 ["57","62","63","105","106","107","108","109","116","119"]
  51. $memberList = [];
  52. if(!empty($partyArr)) {
  53. foreach ($partyArr as $key => $value) {
  54. $data["GroupId"] = (string)$value;
  55. $tencentRes = $tencentObj->toSend($data);
  56. if (isset($tencentRes['ActionStatus']) && $tencentRes['ActionStatus'] == 'OK') {
  57. if (isset($tencentRes['MemberList']) && !empty($tencentRes['MemberList'])) {
  58. foreach ($tencentRes['MemberList'] as $ukey => $uval) {
  59. $memberList[$value]['member_list'][] = [
  60. 'avatar' => $uval['Avatar'],
  61. 'user_id'=> $uval['Member_Account'],
  62. 'nickname' => $uval['NickName'],
  63. ];
  64. }
  65. $memberList[$value]['online_num'] = count($memberList[$value]['member_list']);
  66. }
  67. }
  68. }
  69. }
  70. $result['data'] = $memberList;
  71. } catch (\Exception $e) {
  72. $result['status'] = 0;
  73. $result['msg'] = $e->getMessage();
  74. }
  75. return $result;
  76. }
  77. /**
  78. * 获取房间自定义属性
  79. */
  80. public function getGroupAttr($params=[])
  81. {
  82. $result = [
  83. 'status' => 1,
  84. 'msg' => '获取成功',
  85. 'data' => [],
  86. ];
  87. try {
  88. $partyId = isset($params['party_id']) ? $params['party_id'] : [];
  89. $url = "https://console.tim.qq.com/v4/group_open_attr_http_svc/get_group_attr".$this->url;
  90. $tencentObj = new tencentim($url);
  91. $imResult = [];
  92. if(!empty($partyId)) {
  93. $data["GroupId"] = $partyId;
  94. $imRes = $tencentObj->toSend($data);
  95. if (isset($imRes['ActionStatus']) && $imRes['ActionStatus'] != 'OK') {
  96. $errorInfo = isset($imRes['ErrorInfo']) ? $imRes['ErrorInfo'] : [];
  97. throw new Exception(json_encode($errorInfo));
  98. }
  99. $imResult = isset($imRes['GroupAttrAry']) ? $imRes['GroupAttrAry'] : [];
  100. }
  101. $result['data'] = $imResult;
  102. } catch (\Exception $e) {
  103. $result['status'] = 0;
  104. $result['msg'] = $e->getMessage();
  105. }
  106. return $result;
  107. }
  108. /**
  109. * 更新房间属性
  110. */
  111. public function getGroupAttrEdit($params=[])
  112. {
  113. $result = [
  114. 'status' => 1,
  115. 'msg' => '获取成功',
  116. 'data' => [],
  117. ];
  118. try {
  119. $partyId = isset($params['party_id']) ? $params['party_id'] : [];
  120. $partyAttr = isset($params['party_attr']) ? $params['party_attr'] : [];
  121. $url = "https://console.tim.qq.com/v4/group_open_http_svc/modify_group_attr".$this->url;
  122. $tencentObj = new tencentim($url);
  123. if(!empty($partyId)) {
  124. $data["GroupId"] = $partyId;
  125. $data["GroupAttr"] = $partyAttr;
  126. $imRes = $tencentObj->toSend($data);
  127. if (isset($imRes['ActionStatus']) && $imRes['ActionStatus'] != 'OK') {
  128. $errorInfo = isset($imRes['ErrorInfo']) ? $imRes['ErrorInfo'] : [];
  129. throw new Exception(json_encode($errorInfo));
  130. }
  131. }
  132. } catch (\Exception $e) {
  133. $result['status'] = 0;
  134. $result['msg'] = $e->getMessage();
  135. }
  136. return $result;
  137. }
  138. }