|  | @@ -14,7 +14,7 @@ use think\Db;
 | 
	
		
			
				|  |  |   */
 | 
	
		
			
				|  |  |  class Tenim extends Api
 | 
	
		
			
				|  |  |  {
 | 
	
		
			
				|  |  | -    protected $noNeedLogin = ["callback",'test','createIMGroup','updateRoomInfo','setImManage','sendMessageToUser','outMemberFromRoom',
 | 
	
		
			
				|  |  | +    protected $noNeedLogin = ['trtc_callback',"callback",'test','createIMGroup','updateRoomInfo','setImManage','sendMessageToUser','outMemberFromRoom',
 | 
	
		
			
				|  |  |          'autoUserLine','getRoomUser','getGroupList','getGroupInfo'];
 | 
	
		
			
				|  |  |      protected $noNeedRight = ['*'];
 | 
	
		
			
				|  |  |  
 | 
	
	
		
			
				|  | @@ -584,6 +584,123 @@ exit;
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | +    public function trtc_callback(){
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +        $input = file_get_contents("php://input");
 | 
	
		
			
				|  |  | +        filePut('start:'.$input,'callback.txt');
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +        /*$input = '{
 | 
	
		
			
				|  |  | +            "EventGroupId":	1,
 | 
	
		
			
				|  |  | +            "EventType":	104,
 | 
	
		
			
				|  |  | +            "CallbackTs":	1640331295244,
 | 
	
		
			
				|  |  | +            "EventInfo":	{
 | 
	
		
			
				|  |  | +                "RoomId":	1604,
 | 
	
		
			
				|  |  | +                "EventTs":	1640331295,
 | 
	
		
			
				|  |  | +                "EventMsTs":	1640331295239,
 | 
	
		
			
				|  |  | +                "UserId":	"26",
 | 
	
		
			
				|  |  | +                "Role":	20,
 | 
	
		
			
				|  |  | +                "Reason":	1
 | 
	
		
			
				|  |  | +            }
 | 
	
		
			
				|  |  | +        }';*/
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +        $input = json_decode($input,true);
 | 
	
		
			
				|  |  | +        $roomId = $input['EventInfo']['RoomId'];
 | 
	
		
			
				|  |  | +        //房间事件组
 | 
	
		
			
				|  |  | +        if($input['EventGroupId'] == 1){
 | 
	
		
			
				|  |  | +            if($input['EventType'] == 101){
 | 
	
		
			
				|  |  | +                //创建房间,第一个进来的
 | 
	
		
			
				|  |  | +            }elseif($input['EventType'] == 102){
 | 
	
		
			
				|  |  | +                //解散房间,最后一个走的
 | 
	
		
			
				|  |  | +                //没有UserId
 | 
	
		
			
				|  |  | +            }elseif($input['EventType'] == 103){
 | 
	
		
			
				|  |  | +                //进入房间,主播role=20 观众role=21
 | 
	
		
			
				|  |  | +                $redis = new Redis();
 | 
	
		
			
				|  |  | +                $redisconfig = config("redis");
 | 
	
		
			
				|  |  | +                $redis->connect($redisconfig["host"], $redisconfig["port"]);
 | 
	
		
			
				|  |  | +                if ($redisconfig['redis_pwd']) {
 | 
	
		
			
				|  |  | +                    $redis->auth($redisconfig['redis_pwd']);
 | 
	
		
			
				|  |  | +                }
 | 
	
		
			
				|  |  | +                if($redisconfig['redis_selectdb'] > 0){
 | 
	
		
			
				|  |  | +                    $redis->select($redisconfig['redis_selectdb']);
 | 
	
		
			
				|  |  | +                }
 | 
	
		
			
				|  |  | +                $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("live_" . $roomId);
 | 
	
		
			
				|  |  | +                if ($liveInfo) {
 | 
	
		
			
				|  |  | +                    $liveInfo = json_decode($liveInfo, true);
 | 
	
		
			
				|  |  | +                    if ($input['EventInfo']['Role'] == 20) {
 | 
	
		
			
				|  |  | +                        $liveInfo["is_online"] = 1;
 | 
	
		
			
				|  |  | +                        $redis->set("live_" . $roomId, json_encode($liveInfo));
 | 
	
		
			
				|  |  | +                        \app\common\model\Party::update(["is_online" => 1], ["id" => $roomId]);
 | 
	
		
			
				|  |  | +                        $rs_user = Db::name('user')->where('id',$userId)->update(['is_livebc'=>1]);
 | 
	
		
			
				|  |  | +                    }
 | 
	
		
			
				|  |  | +                }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +            }elseif($input['EventType'] == 104){
 | 
	
		
			
				|  |  | +                //退出房间,主播role=20 观众role=21
 | 
	
		
			
				|  |  | +                $redis = new Redis();
 | 
	
		
			
				|  |  | +                $redisconfig = config("redis");
 | 
	
		
			
				|  |  | +                $redis->connect($redisconfig["host"], $redisconfig["port"]);
 | 
	
		
			
				|  |  | +                if ($redisconfig['redis_pwd']) {
 | 
	
		
			
				|  |  | +                    $redis->auth($redisconfig['redis_pwd']);
 | 
	
		
			
				|  |  | +                }
 | 
	
		
			
				|  |  | +                if($redisconfig['redis_selectdb'] > 0){
 | 
	
		
			
				|  |  | +                    $redis->select($redisconfig['redis_selectdb']);
 | 
	
		
			
				|  |  | +                }
 | 
	
		
			
				|  |  | +                $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("live_" . $roomId);
 | 
	
		
			
				|  |  | +                if ($liveInfo) {
 | 
	
		
			
				|  |  | +                    $liveInfo = json_decode($liveInfo, true);
 | 
	
		
			
				|  |  | +                    if($input['EventInfo']['Role'] == 20){
 | 
	
		
			
				|  |  | +                        $liveInfo["is_online"] = 0;
 | 
	
		
			
				|  |  | +                        $redis->set("live_" . $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]);
 | 
	
		
			
				|  |  | +                    }
 | 
	
		
			
				|  |  | +                }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +            }
 | 
	
		
			
				|  |  | +        }elseif($input['EventGroupId'] == 2){
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +        //结束
 | 
	
		
			
				|  |  | +        echo json_encode(['code' => 0]);exit;
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |      /**
 | 
	
		
			
				|  |  |       * 回调
 | 
	
		
			
				|  |  |       */
 |