Browse Source

重写派对列表

lizhen_gitee 1 year ago
parent
commit
df857713e7
1 changed files with 66 additions and 33 deletions
  1. 66 33
      application/api/controller/Party.php

+ 66 - 33
application/api/controller/Party.php

@@ -329,19 +329,76 @@ class Party extends Common
 
     /**
      * 获取派对列表排序
-     * getPartyRankList改的,少传入了room_type,所有room_type的都给返回了
      */
     public function getPartyList() {
-        $thispage = input('page',1,"intval"); // 当前页数
-        $pagenum = input('listrow',10,"intval"); // 每页显示条数0=不做分页
-        $type_id = 0; //input('type_id'); // 派对类型
-        $is_recommend = input('is_recommend',0); // 推荐0=否1=是
-        $all = 1; //input('all'); // 全部分类0=否1=是
-        $index = input('index',0); // 全部分类0=否1=是
+        $order = input('orderby','new');
 
-        $start = ($thispage-1)*$pagenum;
-        $end = $start+($pagenum-1);
+        $this->reset_all_party();
+
+        //
+        $orderby = 'party.party_hot desc, party.id desc';
+        $where = [];
+
+        if($order == 'recommend'){
+            $where['party.is_recommend'] = 1;
+        }
+        if($order == 'follow'){
+            $follow_party_ids = Db::name('party_follow')->where('user_id',$this->auth->id)->column('party_id');
+            $where['party.id'] = ['IN',$follow_party_ids];
+        }
+
+
+        $where['party.status'] = 1;   //正常
+        $where['party.is_online'] = 1; //在线
+        $where['party.is_close'] = 0;  //未关闭
+
+        $field = 'party.id,party.room_type,party.party_id,party.party_name,party.party_hot,party.party_logo,party.party_pass,party.party_type,party.easemob_room_id,type.name as type_name';
+        $list = Db::name('party')->alias('party')
+            ->join('party_type type','party.party_type = type.id','LEFT')
+            ->field($field)->where($where)->order($orderby)->select();
+        if (!empty($list)) {
+
+            $roomService = new RoomService();
+
+            foreach($list as $k => $v) {
+
+                $mod = isset($v["party_type"]) ? intval($v["party_type"])%5 : 1;
 
+                //房间用户列表
+                $userDataResult = $roomService->getPartyUserList(['party_id'=>$v['id']]);
+                $userDataRes = isset($userDataResult['data']) ? $userDataResult['data'] : [];
+                $userData = isset($userDataRes['member_list']) ? $userDataRes['member_list'] : [];
+                $userDatas = [];
+                if (!empty($userData)) {
+                    $userDatas = $userData;
+                    $userDatas = list_domain_image($userDatas,['avatar']);
+                }
+                $partyUserList = [
+                    'user_list' => $userDatas,
+                    'online_num' => count($userData),
+                ];
+
+                $resdata[] = [
+                    "id"               => $v["id"],
+                    "room_type"        => $v['room_type'],
+                    "party_id"         => $v["party_id"],
+                    "r_id"             => $v["party_id"],
+                    "party_name"       => $v["party_name"],
+                    "party_pass"       => $v["party_pass"] ? $v["party_pass"]:"",
+                    "party_hot"        => $v['party_hot'],
+                    "party_logo"       => $v["party_logo"],
+                    "party_type"       => $v['type_name'],
+                    "party_type_color" => $mod == 0?5:$mod,
+                    "party_user"       => $partyUserList,
+                ];
+            }
+
+        }
+
+        $this->success("获取成功!",$list);
+    }
+
+    private function reset_all_party(){
         //rediskey:派对热度
         $redisPartyRankList = $this->redis->zRevRange("partyRank",0,-1,true);
         //rediskey:派对热度
@@ -358,30 +415,6 @@ class Party extends Common
             $roomLiveRes = $roomService->roomRedis($roomParams);
             $redisLiveRankList = $roomLiveRes['data'];
         }
-        $redisRoomListIds = [];
-        $partyIds = !empty($redisPartyRankList) ? array_keys($redisPartyRankList) : [];
-        $liveIds = !empty($redisLiveRankList) ? array_keys($redisLiveRankList) : [];
-        $redisRoomListIds = array_merge($redisRoomListIds,$partyIds,$liveIds);
-        if(!empty($redisRoomListIds)) {
-            $roomListParams = [
-                'ids' => $redisRoomListIds,
-                'type_id' => $type_id,
-                'is_recommend' => $is_recommend,
-                'all' => $all,
-                'start' => $start,
-                'end' => $end,
-                'index' => $index,
-            ];
-            $resultInfo = $roomService->getRoomList($roomListParams);
-            if (!$resultInfo['status']) {
-                $this->error($resultInfo['msg']);
-            }
-        }
-        if (!isset($resultInfo['data'])) {
-            $resultInfo['data'] = [];
-        }
-        $this->success("获取成功!",$resultInfo['data']);
-
     }
 
     /**