|
@@ -18,6 +18,15 @@ class Guild extends Api
|
|
|
protected $noNeedLogin = ['getGuildList'];
|
|
|
protected $noNeedRight = ['*'];
|
|
|
|
|
|
+ protected $roomTypeArr;
|
|
|
+
|
|
|
+ public function __construct()
|
|
|
+ {
|
|
|
+ parent::__construct();
|
|
|
+
|
|
|
+ $this->roomTypeArr = [1=>"party",2=>"live"];
|
|
|
+ }
|
|
|
+
|
|
|
/**
|
|
|
* 获取搜索公会列表
|
|
|
*/
|
|
@@ -234,8 +243,11 @@ class Guild extends Api
|
|
|
$guildInfo->g_id = getUinqueId(4, [$ids]);
|
|
|
$guildInfo->status = 0;
|
|
|
|
|
|
- //去环信建个房间
|
|
|
//去派对建个房间
|
|
|
+ $party_info = $this->createParty($user_id,$guild_name,$guild_image,$guild_desc,$guild_notice,8,1,1);
|
|
|
+ $guildInfo->party_id = $party_info['party_id'];
|
|
|
+ $guildInfo->easemob_room_id = $party_info['easemob_room_id'];
|
|
|
+
|
|
|
} else {
|
|
|
// 获取公会信息
|
|
|
$guildInfo = \app\common\model\Guild::where(["id"=>$guild_id])->find();
|
|
@@ -293,6 +305,150 @@ class Guild extends Api
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
+ * 创建/进入派对
|
|
|
+ */
|
|
|
+ private function createParty($user_id,$party_name,$party_logo,$guild_desc,$guild_notice,$seatnum = 8,$is_public = 1,$room_type = 1) {
|
|
|
+
|
|
|
+ $partyModel = new \app\common\model\Party();
|
|
|
+ // 判断派对是否存在
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ // sql中不存在派对信息
|
|
|
+
|
|
|
+ $party_type = 7; // 派对类型(情感互动,心动点单 等)
|
|
|
+ $party_notice = $guild_desc; // 派对公告
|
|
|
+ $party_notice_detail = $guild_notice; // 派对公告详情
|
|
|
+
|
|
|
+ $party_ids = $partyModel->column("party_id");
|
|
|
+ // 创建派对ID (临时ID四位,派对数不超过8999)
|
|
|
+ $party_id = $this->auth->getUinqueId(4,$party_ids);
|
|
|
+ if($party_id > 9999) {
|
|
|
+ $this->error("房间超限,请联系客服");
|
|
|
+ }
|
|
|
+
|
|
|
+ //创建房间,初始化环信
|
|
|
+ $easemob_room_id = $this->easemob_createroom($party_name,$party_logo,$seatnum,$is_public,$room_type);
|
|
|
+
|
|
|
+ //写入派对
|
|
|
+ $data = [];
|
|
|
+ $data["user_id"] = $user_id;
|
|
|
+ $data["room_type"] = $room_type;
|
|
|
+ $data["party_id"] = $party_id;
|
|
|
+ $data["party_hot"] = 0;
|
|
|
+ $data["party_name"] = $party_name;
|
|
|
+ $data["party_logo"] = $party_logo;
|
|
|
+ $data["party_type"] = $party_type;
|
|
|
+ $data["party_notice"] = $party_notice;
|
|
|
+ $data["party_notice_detail"] = $party_notice_detail;
|
|
|
+ $data["is_online"] = 1;
|
|
|
+ $data["status"] = -1;//封禁状态
|
|
|
+ $data["is_recommend"] = 0;
|
|
|
+ $data["createtime"] = time();
|
|
|
+ $data["easemob_room_id"] = $easemob_room_id;
|
|
|
+ $id = $partyModel->insertGetId($data);
|
|
|
+ if(!$id) {
|
|
|
+ $this->error("工会房间创建失败,请稍后重试!");
|
|
|
+ }
|
|
|
+ $data["id"] = $id;
|
|
|
+
|
|
|
+ $partyInfo = $partyModel->where(["id"=>$id])->find();
|
|
|
+ $partyInfo["is_new"] = 1;
|
|
|
+
|
|
|
+
|
|
|
+ $partyInfo["type_name"] = '工会房';
|
|
|
+
|
|
|
+ //redis
|
|
|
+ $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']);
|
|
|
+ }
|
|
|
+
|
|
|
+ // 加入缓存排序,rediskey:派对热度
|
|
|
+ $redis->zAdd($this->roomTypeArr[$room_type]."Rank", $partyInfo['party_hot'], $partyInfo["id"]);
|
|
|
+ // 加入缓存,rediskey:派对详情
|
|
|
+ $redis->set($this->roomTypeArr[$room_type]."_".$partyInfo["id"],json_encode($partyInfo));
|
|
|
+
|
|
|
+ //更新家族 party_id
|
|
|
+ $rs = [
|
|
|
+ 'party_id' => $party_id,
|
|
|
+ 'easemob_room_id' => $easemob_room_id,
|
|
|
+ ];
|
|
|
+
|
|
|
+ return $rs;
|
|
|
+
|
|
|
+ //声网三个token
|
|
|
+// $partyInfo['shengwang_token'] = $this->shengwang_token_private($easemob_room_id);
|
|
|
+
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ //创建房间,初始化环信
|
|
|
+ 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,//房间类型
|
|
|
+ 'online_user_num' => 0,//当前房间在线的人
|
|
|
+ 'wealth_top3_userlist' => json_encode([]),//财富榜前3个人列表
|
|
|
+ 'background' => '', //房间背景
|
|
|
+ ];
|
|
|
+ $rs = $easemob->room_setRoomCustomAttributeForced($easemob_room_id,$this->auth->id,$matedata);
|
|
|
+
|
|
|
+ //[环信]初始化N个麦位
|
|
|
+ $seatdata = [];
|
|
|
+ for($i=0;$i<$seatnum;$i++){
|
|
|
+ $seat = [
|
|
|
+ 'charm' => 0, //红心,魅力值
|
|
|
+
|
|
|
+ 'isMaster' => false, // 是否是房主
|
|
|
+ 'headUrl' => '', // 头像
|
|
|
+ 'userNo' => '', // 座位上用户no
|
|
|
+ 'rtcUid' => '', // 座位上用户id,与rtc的userId一致
|
|
|
+ 'name' => '', // 座位上用户昵称
|
|
|
+ 'seatIndex' => -1, // 座位编号
|
|
|
+ 'chorusSongCode' => '', // 是否合唱
|
|
|
+ 'isAudioMuted' => 1, // 是否静音
|
|
|
+ 'isVideoMuted' => 0, // 是否开启视频
|
|
|
+ 'checked' => false, // 用于送礼物选择用户
|
|
|
+ 'isUsed' => true, // 用于送礼物选择用户
|
|
|
+ 'gender' => 1, //性别
|
|
|
+ ];
|
|
|
+
|
|
|
+ //创建完房间就进入,所以房主直接在麦位0
|
|
|
+ if($i == 0){
|
|
|
+ $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;
|
|
|
+ $seat['seatIndex'] = $i;
|
|
|
+ }
|
|
|
+
|
|
|
+ $seatdata['seat'.$i] = json_encode($seat);
|
|
|
+ }
|
|
|
+ $rs = $easemob->room_setRoomCustomAttributeForced($easemob_room_id,$this->auth->id,$seatdata);
|
|
|
+
|
|
|
+ return $easemob_room_id;
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
* 公会签约申请
|
|
|
*/
|
|
|
public function guildJoinin() {
|