瀏覽代碼

修改im回调

lizhen_gitee 1 年之前
父節點
當前提交
d4c9d6218e
共有 1 個文件被更改,包括 85 次插入5 次删除
  1. 85 5
      application/api/controller/Tenim.php

+ 85 - 5
application/api/controller/Tenim.php

@@ -126,7 +126,7 @@ exit;
         print_r($groupInfo);exit;
     }
 
-    public function substr(string $string, int $start, int $length = null): string
+    public function substr(string $string, int $start, int $length = null)
     {
         return mb_substr($string, $start, $length, 'UTF-8');
     }
@@ -679,7 +679,7 @@ exit;
 
                 }
                 break;
-            case 'Group.CallbackAfterNewMemberJoin': // 新成员入群
+            /*case 'Group.CallbackAfterNewMemberJoin': // 新成员入群
                 $redis = new Redis();
                 $redisconfig = config("redis");
                 $redis->connect($redisconfig["host"], $redisconfig["port"]);
@@ -709,8 +709,8 @@ exit;
                 $res["ErrorCode"] = 0;
                 $res["ErrorInfo"] = "";
                 echo json_encode($res);
-                break;
-            case 'Group.CallbackAfterMemberExit': // 成员离开
+                break;*/
+            /*case 'Group.CallbackAfterMemberExit': // 成员离开
                 $redis = new Redis();
                 $redisconfig = config("redis");
                 $redis->connect($redisconfig["host"], $redisconfig["port"]);
@@ -753,7 +753,7 @@ exit;
                 $res["ErrorCode"] = 0;
                 $res["ErrorInfo"] = "";
                 echo json_encode($res);
-                break;
+                break;*/
            /* case 'Group.CallbackBeforeSendMsg': // 群内发送消息之前
 
                 $config = config("wxMiniProgram");
@@ -870,6 +870,86 @@ exit;
         $this->sendMessageToUser($from_user,$to_user,$message);
     }
 
+    //请求的基础参数
+    private function baseTencentObj($url)
+    {
+        $random = rand(10000000,99999999);
+        $usersig = $this->usersig("administrator");
+        // 获取配置信息
+        $config = config("tencent_im");
+        $url = "$url";
+        $url .= "?sdkappid=".$config["sdkappid"];
+        $url .= "&identifier=administrator";
+        $url .= "&usersig=".$usersig;
+        $url .= "&random=".$random;
+        $url .= "&contenttype=json";
+        return new tencentim($url);
+    }
+
+    /** 设置管理员(im端的改变)
+     * @param $user_id
+     * @param $party_id
+     * @param int $status 1:yes 0:no
+     * @return array|false|mixed
+     */
+    public function setUpIMAdmin($user_id, $party_id, int $status=0) {
+        $url = "https://console.tim.qq.com/v4/group_open_http_svc/modify_group_member_info";
+        $tencentObj = $this->baseTencentObj($url);
+
+        $groupInfo = $this->getGroupInfo($party_id);
+        if($groupInfo["GroupInfo"][0]["ErrorCode"] > 0) return false;
+        // 更新的信息
+        $data = [];
+        $data["GroupId"] = $party_id;
+        if ($status==1){
+            $data['Role'] = 'Admin';
+        }else{
+            $data['Role'] = 'Member';
+        }
+        $data['Member_Account'] = $user_id;
+        return $tencentObj->toSend($data);
+    }
+
+    //获取群成员详细资料(目前没用到)
+    private function getGroupMemberDetails($party_id)
+    {
+        $url = "https://console.tim.qq.com/v4/group_open_http_svc/get_group_member_info";
+        $tencentObj = $this->baseTencentObj($url);
+        // 获取群组信息
+        $groupInfo = $this->getGroupInfo($party_id);
+        if($groupInfo["GroupInfo"][0]["ErrorCode"] > 0) return false;
+
+        // 更新的信息
+        $data = [];
+        $data["GroupId"] = $party_id;
+        return  $tencentObj->toSend($data);
+    }
+
+    //IM管理员维护,同步本地管理员
+    public function imAdminMaintenance()
+    {
+        $partyIds = \app\admin\model\party\Party::column('id');
+        foreach ($partyIds as $party_id){
+            $groupInfo = $this->getGroupInfo($party_id);
+
+            if($groupInfo["GroupInfo"][0]["ErrorCode"] > 0) continue;
+            $roomInfoData = $groupInfo["GroupInfo"][0]["AppDefinedData"];
+            $roomInfo = [];
+            if($roomInfoData) foreach($roomInfoData as $k => $v) {
+                if($v["Key"] == "roomInfo") $roomInfo = $v["Value"];
+            }
+            $roomInfo = json_decode($roomInfo,true);
+
+            // 更新管理员
+            if(isset($roomInfo["managers"]) && !empty($roomInfo['managers'])) {
+                foreach ($roomInfo['managers'] as $v){
+                    $this->setUpIMAdmin($v,$party_id,1);
+                }
+            }
+        }
+        $this->success("成功!");
+    }
+
     /**
      * 获取用户在线更新
      */