huangdong 6 年之前
父節點
當前提交
384e18dcc1
共有 3 個文件被更改,包括 58 次插入22 次删除
  1. 7 2
      data/model/room.model.php
  2. 11 2
      helper/room/proto_type.php
  3. 40 18
      helper/room/util.php

+ 7 - 2
data/model/room.model.php

@@ -19,8 +19,8 @@ class roomModel extends Model
     {
         return $this->table('room_participant')->field('*')->where(['room_id' => $room_id,'state' => 0])->limit(false)->select();
     }
-    public function getPartRooms($cond,$field = '*') {
-        return  $this->table('room_participant')->field($field)->where($cond)->limit(false)->select();
+    public function getPartRooms($cond,$field = '*',$limit = false) {
+        return  $this->table('room_participant')->field($field)->where($cond)->limit($limit)->select();
     }
     public function invite($room_id,$user,$inviter) {
         $ret = $this->table('room_participant')->insert(['room_id' => $room_id,'member_id' => $user,'inviter' => $inviter,'invite_time' => time(),'join_time' => 0,'jointimes' => 0,'state' => 0],true);
@@ -36,6 +36,11 @@ class roomModel extends Model
         $params = ['type' => $type,'room_name' => $name,'room_creator' => $creator,'room_owner' => $owner,'owner_name' => $owner_name,'max_user' => $max_user,'add_time' => time()];
         return $this->table('room')->insert($params);
     }
+    public function edit_room($cond,$update)
+    {
+        return $this->table('room')->where($cond)->update($update);
+    }
+
     public function getRoom($roomid) {
         return $this->table('room')->field('*')->where(['room_id' => $roomid])->limit(1)->find();
     }

+ 11 - 2
helper/room/proto_type.php

@@ -141,12 +141,21 @@ class base_info
     public function user_count() {
         return intval($this->mParams['users']);
     }
+    public function room_avatar(){
+        return $this->mParams['room_avatar'];
+    }
+    public function tmp_name(){
+        return $this->mParams['tmp_name'];
+    }
+
     public function format()
     {
         $ret = [];
         $ret['room_id'] = $this->room_id();
-        $ret['name'] = $this->name();
-        $ret['avatar'] = "";
+        $ret['name']    = $this->name();
+        $ret['tmp_name'] = $this->tmp_name();
+        $ret['avatar'] = $this->room_avatar();
+        $ret['users'] = $this->user_count();
         return $ret;
     }
 }

+ 40 - 18
helper/room/util.php

@@ -124,33 +124,20 @@ class talks_helper
         if(empty($items)) return [];
 
         $result = [];
-        foreach ($items as $item) {
+        foreach ($items as $item)
+        {
             $roomids[] = intval($item['room_id']);
             $info = new base_info($item);
             $room_info = $info->format();
 
-
-            ////////todo test make test room_name
-            if(empty($room_info["name"]))
-            {
-                $member = Model('room')->table('room_participant')->field('member_id')->distinct(true)->where(["room_id"=>$room_info["room_id"]])->limit(4)->select();
-                $uids = [];
-                foreach ($member as $one){
-                    $uids[] = $one['member_id'];
-                }
-
-                $names = Model('member')->field('member_nickname')->where(["member_id"=>["in",$uids]])->select();
-                foreach ($names as $name){
-                    $room_info["name"] .= $name['member_nickname'] .'、';
-                }
-
-                $room_info["name"] =  trim($room_info["name"],"、");
+            if(empty($room_info["name"])) {
+                $room_info["name"] = $this->room_tmp_name($room_info);
             }
 
+            //todo delete test data
             if(empty($room_info["avatar"])){
                 $room_info["avatar"] = "http://wx.qlogo.cn/mmopen/cTcqoIpA3hc3DYFZJ0C9tpBA79rTdFPpTI4G5ib8wxSnbYy4nxPiaVHXXPjfLA0cfnhAJTsMQicJSsLDyIOgf06vYFiaE4657hpD/0";
             }
-            ////////
 
             $result[] = $room_info;
         }
@@ -158,6 +145,41 @@ class talks_helper
         return $result;
     }
 
+    private function room_tmp_name($room)
+    {
+        if(!empty($room['tmp_name']))
+        {
+            $tmp_len = count(explode('、',$room['tmp_name']));
+            $cnt     = $room['users'];
+            if($tmp_len > 3 || $tmp_len >= $cnt){
+                return $room['tmp_name'];
+            }
+        }
+
+        $uids = [];
+        $items = $this->mod_room->getPartRooms(["room_id" => $room["room_id"]],'member_id',4);
+        foreach ($items as $item){
+            $uids[] = $item['member_id'];
+        }
+
+        $tmp_name = "";
+        $names = Model('member')->field('member_nickname')->where(["member_id" => ["in",$uids]])->select();
+        foreach ($names as $name){
+            $tmp_name .= $name['member_nickname'] .'、';
+        }
+        $tmp_name =  trim($tmp_name,"、");
+
+        $cond = ["room_id" => $room['room_id']];
+        $update = ["tmp_name" => $tmp_name];
+        $ret = $this->mod_room->edit_room($cond,$update);
+
+        if($ret){
+            return $tmp_name;
+        }else{
+            return false;
+        }
+    }
+
     //$msg_type == 0 表示 房间消息,1 表示单聊消息
     private function lastmsgs($roomids,&$senders,$msg_type = 0)
     {