فهرست منبع

直播与音聊合并

lizhen_gitee 3 سال پیش
والد
کامیت
c4fd2693e7
2فایلهای تغییر یافته به همراه72 افزوده شده و 12 حذف شده
  1. 3 2
      application/api/controller/Livebc.php
  2. 69 10
      application/api/controller/Tenim.php

+ 3 - 2
application/api/controller/Livebc.php

@@ -105,6 +105,7 @@ class Livebc extends Api
             $this->error("您的金币余额不足");
         }
 
+        $partyid = Db::name('party')->where(['user_id'=>$this->auth->id,'room_type'=>2])->value('id');
 
         Db::startTrans();
 
@@ -154,12 +155,12 @@ class Livebc extends Api
             $redis->connect($redisconfig["host"], $redisconfig["port"], 86400 * 31);
 
             // 添加redis记录做财富排行榜日榜用,用直播用户的uid作为房间号
-            $redis->zIncrBy("livebc_jewel_to_" . $user_id, $giftinfo['value'], $this->auth->id);
+            $redis->zIncrBy("livebc_jewel_to_" . $partyid, $giftinfo['value'], $this->auth->id);
 
         }
 
         // tcp 获取房间用户周前三名
-        $partyUserTop = $this->getPartyUserTop($user_id);
+        $partyUserTop = $this->getPartyUserTop($partyid);
         $returnData["partyUserTop"] = $partyUserTop;
         $returnData["image"] = one_domain_image($giftinfo["image"]);
         $returnData["gif_image"] = one_domain_image($giftinfo["special"]);

+ 69 - 10
application/api/controller/Tenim.php

@@ -655,6 +655,7 @@ exit;
         }';*/
 
         $input = json_decode($input,true);
+        $roomId = $input['EventInfo']['RoomId'];
         //房间事件组
         if($input['EventGroupId'] == 1){
             if($input['EventType'] == 101){
@@ -664,19 +665,77 @@ exit;
                 //没有UserId
             }elseif($input['EventType'] == 103){
                 //进入房间,主播role=20 观众role=21
+                $redis = new Redis();
+                $redisconfig = config("redis");
+                $redis->connect($redisconfig["host"], $redisconfig["port"]);
+
+                $userId = $input['EventInfo']['UserId'];
+                $redis->hSet("online_" . $roomId, $userId, $userId);
+
+                // 记录在线用户在房间情况
+                $redis->hSet("livingUser",$userId,$roomId);
+
+                // 更新房间在线状态
+                $partyInfo = $redis->get("party_" . $roomId);
+                if ($partyInfo) {
+                    $partyInfo = json_decode($partyInfo, true);
+                    if ($partyInfo["is_online"] != 1) {
+                        $partyInfo["is_online"] = 1;
+                        $redis->set("party_" . $roomId, json_encode($partyInfo));
+                        \app\common\model\Party::update(["is_online" => 1], ["id" => $roomId]);
+                    }
+                }
+
+                // 更新房间在线状态
+                $liveInfo = $redis->get("livebc_" . $roomId);
+                if ($liveInfo) {
+                    $liveInfo = json_decode($liveInfo, true);
+                    if ($liveInfo["is_online"] != 1 && $input['EventInfo']['Role'] == 20) {
+                        $liveInfo["is_online"] = 1;
+                        $redis->set("livebc_" . $roomId, json_encode($liveInfo));
+                        \app\common\model\Party::update(["is_online" => 1], ["id" => $roomId]);
+                    }
+                }
+
             }elseif($input['EventType'] == 104){
                 //退出房间,主播role=20 观众role=21
-                if($input['EventInfo']['Role'] == 20){
-                    $user_id = $input['EventInfo']['UserId'];
-                    $live_bc = Db::name('livebc')->where('user_id',$input['EventInfo']['UserId'])->update(['is_online'=>0]);
-                    $rs_user = Db::name('user')->where('id',$input['EventInfo']['UserId'])->update(['is_livebc'=>0]);
-                    //清空房间排行榜
-                    $redis = new Redis();
-                    $redisconfig = config("redis");
-                    $redis->connect($redisconfig["host"], $redisconfig["port"]);
-                    $redis->del('livebc_jewel_to_' . $user_id);
-                    $redis->hDel("livebc_jewel_top3",$user_id);
+                $redis = new Redis();
+                $redisconfig = config("redis");
+                $redis->connect($redisconfig["host"], $redisconfig["port"]);
+
+                $userId = $input['EventInfo']['UserId'];
+                $redis->HDel("online_" . $roomId, $userId);
+
+                // 扣除在线用户在房间情况
+                $redis->hDel("livingUser",$userId);
+
+                // 更新房间在线状态
+                $partyInfo = $redis->get("party_" . $roomId);
+                if ($partyInfo) {
+                    $partyInfo = json_decode($partyInfo, true);
+                    $memCount = count($redis->hGetAll("online_" . $roomId));
+                    if ($memCount <= 0) {
+                        $partyInfo["is_online"] = 0;
+                        $redis->set("party_" . $roomId, json_encode($partyInfo));
+                        \app\common\model\Party::update(["is_online" => 0], ["id" => $roomId]);
+                    }
                 }
+                //
+                $liveInfo = $redis->get("livebc_" . $roomId);
+                if ($liveInfo) {
+                    $liveInfo = json_decode($liveInfo, true);
+                    if($input['EventInfo']['Role'] == 20){
+                        $liveInfo["is_online"] = 0;
+                        $redis->set("livebc_" . $roomId, json_encode($liveInfo));
+                        \app\common\model\Party::update(["is_online" => 0], ["id" => $roomId]);
+                        $rs_user = Db::name('user')->where('id',$userId)->update(['is_livebc'=>0]);
+
+                        //清空房间排行榜
+                        $redis->del('livebc_jewel_to_' . $roomId);
+                        $redis->hDel("livebc_jewel_top3",$roomId);
+                    }
+                }
+
             }
         }elseif($input['EventGroupId'] == 2){