浏览代码

创建排队,初始化环信房间独立出来一个方法

lizhen_gitee 1 年之前
父节点
当前提交
e8e23bd48a
共有 2 个文件被更改,包括 74 次插入53 次删除
  1. 1 0
      application/api/controller/Easemob.php
  2. 73 53
      application/api/controller/Party.php

+ 1 - 0
application/api/controller/Easemob.php

@@ -162,6 +162,7 @@ class Easemob extends Api
                 }
                 // 强制下麦
                 print_r($this->downSite($uid,$groupsites));
+                //理论上,应该轮询所有房间,轮询这个用户所在的麦位,给下麦,如果是房主,应该解散
 
             }
 

+ 73 - 53
application/api/controller/Party.php

@@ -116,8 +116,6 @@ class Party extends Common
                 $this->error("房间数量已达上线,请联系客服!");
             }
 
-            /*$party_name = $this->auth->u_id."的房间"; // 派对名称
-            $party_logo = "/assets/api/party_logo.png"; // 派对logo*/
             $party_type = 8; // 派对类型(情感互动,心动点单 等)
             $party_notice = "请编辑房间公告"; // 派对公告
             $party_notice_detail = "请编辑房间公告内容!"; // 派对公告详情
@@ -141,53 +139,8 @@ class Party extends Common
                 $party_type = 7;
             }
 
-            //[环信]创建聊天室
-            $easemob = new Easemob();
-            $easemob_room_id = $easemob->room_createRoom($party_name,$party_name,$this->auth->id);
-            if(empty($easemob_room_id)){
-                $this->error('创建房间失败');
-            }
-
-            //[环信]初始化房间
-            $matedata = [
-                'seatnum'=> $seatnum,//麦位数量
-                'waitsing_list'  => json_encode([]),//已点歌曲列表
-                'party_name' => $party_name,//房名字
-                'party_logo' => $party_logo,//logo
-                'is_public'  => $is_public,//是否公开
-                'room_type'  => $room_type,//房间类型
-            ];
-            $rs = $easemob->room_setRoomCustomAttributeForced($easemob_room_id,$this->auth->id,$matedata);
-
-            //[环信]初始化N个麦位
-            $seatdata = [];
-            for($i=1;$i<=$seatnum;$i++){
-                $seat = [
-                    'charm'    => 0,                    //红心,魅力值
-
-                    'isMaster'       => false,            // 是否是房主
-                    'headUrl'        => '',              // 头像
-                    'userNo'         => '',               // 座位上用户no
-                    'rtcUid'         => '',               // 座位上用户id,与rtc的userId一致
-                    'name'           => '',                 // 座位上用户昵称
-                    'seatIndex'      => $i,               // 座位编号
-                    'chorusSongCode' => '',             // 是否合唱
-                    'isAudioMuted'   => 1,            // 是否静音
-                    'isVideoMuted'   => 0,            // 是否开启视频
-                ];
-
-                //创建完房间就进入,所以房主直接在麦位1
-                if($i == 1){
-                    $seat['isMaster'] = true;
-                    $seat['headUrl']  = localpath_to_netpath($this->auth->avatar);
-                    $seat['userNo']   = $this->auth->id;
-                    $seat['rtcUid']   = $this->auth->id;
-                    $seat['name']     = $this->auth->nickname;
-                }
-
-                $seatdata['seat'.$i] = json_encode($seat);
-            }
-            $rs = $easemob->room_setRoomCustomAttributeForced($easemob_room_id,$this->auth->id,$seatdata);
+            //创建房间,初始化环信
+            $easemob_room_id = $this->easemob_createroom($party_name,$party_logo,$seatnum,$is_public,$room_type);
 
             //写入派对
             Db::startTrans();
@@ -243,9 +196,7 @@ class Party extends Common
             $this->redis->set($this->roomTypeArr[$room_type]."_".$partyInfo["id"],json_encode($partyInfo));
 
             if($room_type != 2) {
-                // 创建公会
-                /*\app\common\model\Guild::createGuild($partyInfo["id"], $partyInfo["party_name"], $user_id);
-                \app\common\model\User::update(["is_guild" => 3,'guild_id'], ["id" => $user_id]);*/
+
                 //更新家族 party_id
                 $guildWhere['user_id'] = $user_id;
                 $guildWhere['status'] = 1;
@@ -273,7 +224,12 @@ class Party extends Common
             $partyInfo["is_new"] = 0;
             //naming avatar type_name
 
-            $easemob_room_id = $sqlPartyInfo['easemob_room_id'];
+            if(empty($sqlPartyInfo['easemob_room_id'])){
+                $easemob_room_id = $this->easemob_createroom($party_name,$party_logo,$seatnum,$is_public,$room_type);
+            }else{
+                $easemob_room_id = $sqlPartyInfo['easemob_room_id'];
+            }
+
         }
 
         //声网三个token
@@ -282,6 +238,59 @@ class Party extends Common
         $this->success("获取成功!",$partyInfo);
     }
 
+    //创建房间,初始化环信
+    private function easemob_createroom($party_name,$party_logo,$seatnum,$is_public,$room_type){
+        //[环信]创建聊天室
+        $easemob = new Easemob();
+        $easemob_room_id = $easemob->room_createRoom($party_name,$party_name,$this->auth->id);
+        if(empty($easemob_room_id)){
+            $this->error('创建房间失败');
+        }
+
+        //[环信]初始化房间
+        $matedata = [
+            'seatnum'=> $seatnum,//麦位数量
+            'waitsing_list'  => json_encode([]),//已点歌曲列表
+            'party_name' => $party_name,//房名字
+            'party_logo' => $party_logo,//logo
+            'is_public'  => $is_public,//是否公开
+            'room_type'  => $room_type,//房间类型
+        ];
+        $rs = $easemob->room_setRoomCustomAttributeForced($easemob_room_id,$this->auth->id,$matedata);
+
+        //[环信]初始化N个麦位
+        $seatdata = [];
+        for($i=1;$i<=$seatnum;$i++){
+            $seat = [
+                'charm'    => 0,                    //红心,魅力值
+
+                'isMaster'       => false,            // 是否是房主
+                'headUrl'        => '',              // 头像
+                'userNo'         => '',               // 座位上用户no
+                'rtcUid'         => '',               // 座位上用户id,与rtc的userId一致
+                'name'           => '',                 // 座位上用户昵称
+                'seatIndex'      => $i,               // 座位编号
+                'chorusSongCode' => '',             // 是否合唱
+                'isAudioMuted'   => 1,            // 是否静音
+                'isVideoMuted'   => 0,            // 是否开启视频
+            ];
+
+            //创建完房间就进入,所以房主直接在麦位1
+            if($i == 1){
+                $seat['isMaster'] = true;
+                $seat['headUrl']  = localpath_to_netpath($this->auth->avatar);
+                $seat['userNo']   = $this->auth->id;
+                $seat['rtcUid']   = $this->auth->id;
+                $seat['name']     = $this->auth->nickname;
+            }
+
+            $seatdata['seat'.$i] = json_encode($seat);
+        }
+        $rs = $easemob->room_setRoomCustomAttributeForced($easemob_room_id,$this->auth->id,$seatdata);
+
+        return $easemob_room_id;
+    }
+
     //声网3个token
     public function shengwang_token($easemob_room_id,$return = 0){
 
@@ -842,6 +851,17 @@ class Party extends Common
     }
 
     /**
+     * 解散房间
+     */
+    public function jiesan(){
+        $party_id = input('party_id',0);
+
+        $party_info = Db::name('party')->where('party_id',$party_id)->find();
+
+
+    }
+
+    /**
      * 派对内搜索用户
      */
     public function searchUserParty() {