Browse Source

派对设置1=房管,2=禁言,3=拉黑,4=踢出

lizhen_gitee 1 year ago
parent
commit
548457856a
2 changed files with 33 additions and 3 deletions
  1. 26 3
      application/api/controller/Party.php
  2. 7 0
      application/common/library/Easemob.php

+ 26 - 3
application/api/controller/Party.php

@@ -1197,10 +1197,15 @@ class Party extends Api
     }
 
     //腾讯im设置管理员
-    private function setGroupAdmin($easemob_room_id,$user_id)
+    private function setGroupAdmin($easemob_room_id,$user_id,$type = 1)
     {
         $easemob = new Easemob();
-        $easemob->room_promoteRoomAdmin($easemob_room_id,$user_id);
+
+        if($type == 1){
+            $easemob->room_promoteRoomAdmin($easemob_room_id,$user_id);
+        }else{
+            $easemob->room_demoteRoomAdmin($easemob_room_id,$user_id);
+        }
     }
 
     /**
@@ -1226,6 +1231,11 @@ class Party extends Api
             $this->error("您当前无权限操作!");
         }
 
+        //只有房主才能加管理员
+        if($item == 1 && $this->auth->id != $partyinfo['user_id']){
+            $this->error('只有房主才能设置管理员');
+        }
+
         // 获取用户信息
         $userInfo = \app\common\model\User::field("avatar,nickname,gender")->where(["id"=>$user_id])->find();
         if(!$userInfo) $this->error("用户信息获取失败!");
@@ -1244,7 +1254,7 @@ class Party extends Api
         $res = $this->redis->hSet("party_manage_".$party_id,$user_id."-".$item,serialize($data));
 
         if ($item==1) {
-            $this->setGroupAdmin($partyinfo['easemob_room_id'],$user_id);
+            $this->setGroupAdmin($partyinfo['easemob_room_id'],$user_id,1);
         }
 
         if($res !== false) {
@@ -1257,6 +1267,7 @@ class Party extends Api
 
     /**
      * 派对管理设置列表
+     * 仅用来给前端展示,禁言的鉴权在isNotalk接口,拉黑与提出的鉴权在joinparty接口
      */
     public function partyManageSetList() {
         $party_id = input('party_id',0,"intval"); // 直播间ID
@@ -1295,7 +1306,19 @@ class Party extends Api
             $this->error(__('Invalid parameters'));
         }
 
+        $partyinfo = \app\common\model\Party::where('id', $party_id)->field('user_id,easemob_room_id')->find();
+
+        //只有房主才能加管理员
+        if($item == 1 && $this->auth->id != $partyinfo['user_id']){
+            $this->error('只有房主才能免除管理员');
+        }
+
         $res = $this->redis->hDel("party_manage_".$party_id,$id."-".$item);
+
+        if ($item==1) {
+            $this->setGroupAdmin($partyinfo['easemob_room_id'],$id,0);
+        }
+
         if($res !== false) {
             $this->success("移除成功!",$res);
         } else {

+ 7 - 0
application/common/library/Easemob.php

@@ -236,6 +236,13 @@ class Easemob {
         return $rs;
     }
     //移除聊天室管理员
+    public function room_demoteRoomAdmin($roomId, $oldadmin){
+        $oldadmin = ''.$oldadmin.'';
+        $rs = $this->room->demoteRoomAdmin($roomId, $oldadmin);
+        //dump($rs);
+        return $rs;
+    }
+
 
     //////////////////管理黑名单///////////
     //////////////////管理白名单///////////