TenimService.php 2.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081
  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. }