Browse Source

房间列表调整

zhangxiaobin 1 year ago
parent
commit
e6a7fa9bd2
1 changed files with 38 additions and 15 deletions
  1. 38 15
      application/common/service/RoomService.php

+ 38 - 15
application/common/service/RoomService.php

@@ -114,8 +114,10 @@ class RoomService
                     $roomTypeStr = isset($this->roomTypeArr[$roomType]) ? $this->roomTypeArr[$roomType] : '';
                     $getredisPartyInfo = $this->redis->get($roomTypeStr.'_'.$v['id']);
                     $foreachData = json_decode($getredisPartyInfo,true);
-                    if(!$foreachData || $foreachData["is_close"] == 1) continue;
-                    if(!$foreachData || $foreachData["party_pass"] != '') continue;
+                    $isClose = isset($foreachData["is_close"]) ? $foreachData["is_close"] : 0;
+                    $partyPass = isset($foreachData["party_pass"]) ? $foreachData["party_pass"] : '';
+                    if(!$foreachData || $isClose == 1) continue;
+                    if(!$foreachData || $partyPass != '') continue;
                     $mod = isset($foreachData["party_type"])?intval($foreachData["party_type"])%5:1;
                     if(isset($foreachData["type_name"]) && $foreachData["type_name"]) {
                         $type_name = $foreachData["type_name"];
@@ -135,19 +137,40 @@ class RoomService
                     }
                     if($foreachData["status"] != 1) $hasdata = false;
                     $foreachData = info_domain_image($foreachData,['party_logo']);
-                    $hasdata && $redisPartyInfo[] = [
-                        "id" => $foreachData["id"],
-                        "party_id" => $foreachData["party_id"],
-                        "r_id" => $foreachData["party_id"],
-                        "party_name" => $foreachData["party_name"],
-                        "party_pass" => $foreachData["party_pass"] ? $foreachData["party_pass"]:"",
-                        "party_hot" => $v['party_hot'],
-                        "party_logo" => $foreachData["party_logo"],
-                        "party_type" => $type_name,
-                        "avatar" => $roomType == 2 ? $foreachData["avatar"]:"",
-                        "party_type_color" => $mod == 0?5:$mod,
-                        "party_user" => isset($foreachData["party_user"]) ? array_values($foreachData["party_user"]) : [] // 当前麦位人头像
-                    ];
+                    $userIds = $this->redis->zRange("party_user_".$foreachData["id"],0,-1);
+                    if ($hasdata) {
+                        $field = 'id,avatar';
+                        $fieldArr = explode(',',$field);
+                        $userWhere['id'] = ['in', $userIds];
+                        $userModel = new \app\common\model\User();
+                        $userData = $userModel->field($field)->where($userWhere)->select();
+                        $userDatas = [];
+                        if (!empty($userData)) {
+                            foreach($userData as $key => $value) {
+                                foreach ($fieldArr as $fieldk => $fieldv) {
+                                    $userDatas[$key][$fieldv] = $value[$fieldv];
+                                }
+                            }
+                            $userDatas = list_domain_image($userDatas,['avatar']);
+                        }
+                        $partyUserList = [
+                            'user_list' => $userDatas,
+                            'online_num' => count($userData),
+                        ];
+                        $redisPartyInfo[] = [
+                            "id" => $foreachData["id"],
+                            "party_id" => $foreachData["party_id"],
+                            "r_id" => $foreachData["party_id"],
+                            "party_name" => $foreachData["party_name"],
+                            "party_pass" => $foreachData["party_pass"] ? $foreachData["party_pass"]:"",
+                            "party_hot" => $v['party_hot'],
+                            "party_logo" => $foreachData["party_logo"],
+                            "party_type" => $type_name,
+                            "avatar" => $roomType == 2 ? $foreachData["avatar"]:"",
+                            "party_type_color" => $mod == 0?5:$mod,
+                            "party_user" => $partyUserList,
+                        ];
+                    }
                 }
 
                 if($index == 1) {