Browse Source

Merge branch 'talksec' of 121.43.114.153:/home/git/repositories/shopnc into talksec

stanley-king 6 years ago
parent
commit
e40f88481b
4 changed files with 266 additions and 5 deletions
  1. 8 2
      data/model/evaluate_goods.model.php
  2. 30 1
      data/model/room.model.php
  3. 6 2
      mobile/control/goods_common.php
  4. 222 0
      test/TestTalk.php

+ 8 - 2
data/model/evaluate_goods.model.php

@@ -25,13 +25,19 @@ class evaluate_goodsModel extends Model {
         return $list;
     }
 
-    public function getGoodsCommonEvaluateList($common_id, $limit = 0, $page = null, $order = 'geval_id desc')
+    public function getGoodsCommonEvaluateList($common_id, $limit = 0, $page = null, $order = 'geval_id desc',$condition=[])
     {
         $mod = Model();
+        $where = ['evaluate_goods.geval_commonid' => $common_id];
+        if(!empty($condition)){
+            foreach ($condition as $key =>$value){
+                $where[$key] = $value;
+            }
+        }
         $field = 'member.member_avatar,member.member_nickname,member.member_mobile,goods.goods_spec,evaluate_goods.geval_id,evaluate_goods.geval_commonid,evaluate_goods.geval_goodsid,evaluate_goods.geval_goodsname,evaluate_goods.geval_scores,evaluate_goods.geval_content,evaluate_goods.geval_isanonymous,evaluate_goods.geval_addtime,evaluate_goods.geval_frommemberid,evaluate_goods.geval_frommembername,evaluate_goods.geval_explain,evaluate_goods.geval_image';
         $on = 'evaluate_goods.geval_frommemberid=member.member_id,goods.goods_id=evaluate_goods.geval_goodsid';
         $mod->table('evaluate_goods,member,goods')->field($field);
-        $mod->join('inner,left')->on($on)->where(array('evaluate_goods.geval_commonid' => $common_id));
+        $mod->join('inner,left')->on($on)->where($where);
         $items = $mod->limit($limit)->page($page)->order($order)->select();
 
         return $items;

+ 30 - 1
data/model/room.model.php

@@ -152,7 +152,6 @@ class roomModel extends Model
         }
     }
 
-
     public function getNotReadCnt($type,$from,$to,$member_cond=0){
         if($type == 'chatwo'){
             $table = "room_chatwo_msg";
@@ -173,6 +172,36 @@ class roomModel extends Model
         return $this->table($table)->where($condtion)->count();
     }
 
+
+    public function getChatsRoom($user)
+    {
+        return $this->table('room_participant,room')
+                ->join('left')->on('room_participant.room_id = room.room_id')
+                ->field('room.*')
+                ->where(['room.type'=>\room\proto_type::room_chat,'room_participant.member_id'=>$user])
+                ->select();
+    }
+
+    public function getJoinedChatRoom($user){
+        $join_rooms = $this->getJoinedRoom($user);
+        if(!empty($join_rooms)){
+            $roomids = [];
+            foreach ($join_rooms as $room){$roomids[] = $room['room_id'];}
+            return $this->table('room')->field('*')->where(['type'=>\room\proto_type::room_chat,'room_id'=>['in',$roomids]])->select();
+        }else{
+            return [];
+        }
+    }
+
+    private function getJoinedRoom($user){
+        return $this->table('room_participant')->field('*')->where(['member_id'=>$user,'state'=>0])->select();
+    }
+
+    public function getRoomMember($room){
+        return  $this->table('room_participant')->field('*')->where(['room_id'=>$room,'state'=>0])->select();
+    }
+
+
     public function getUserRoomMsg($room_id,$userid,$msg_type)
     {
         return $this->table('room_msg')->field('*')->where(['room_id' => $room_id,'member_id' => $userid,'type' => $msg_type])->order('add_time desc')->select();

+ 6 - 2
mobile/control/goods_common.php

@@ -45,7 +45,9 @@ class goods_commonControl extends mobileControl
             else
             {
                 $mod_eva = Model('evaluate_goods');
-                $items = $mod_eva->getGoodsCommonEvaluateList($common_id,1,$this->page_size());
+                $order = "geval_scores desc,geval_id desc";
+                $condi = ['geval_scores'=>['gt',2]];
+                $items = $mod_eva->getGoodsCommonEvaluateList($common_id,1,$this->page_size(),$order,$condi);
 
                 if(empty($items)) {
                     $ret['comment'] = null;
@@ -163,7 +165,9 @@ class goods_commonControl extends mobileControl
         }
 
         $mod_eva = Model('evaluate_goods');
-        $items = $mod_eva->getGoodsCommonEvaluateList($common_id,0,$this->page_size());
+        $order = "geval_scores desc,geval_id desc";
+        $condi = ['geval_scores'=>['gt',2]];
+        $items = $mod_eva->getGoodsCommonEvaluateList($common_id,0,$this->page_size(),$order,$condi);
         $page_count = $mod_eva->gettotalpage();
         $result = $this->format_comment($items);
 

+ 222 - 0
test/TestTalk.php

@@ -280,4 +280,226 @@ class TestTalk extends PHPUnit_Framework_TestCase
         return $items;
     }
 
+
+
+    public function testRoom_list(){
+        $_SESSION['is_login'] =1;
+        $_SESSION['member_id'] = 39623;
+
+        $user = 39623;
+
+        $case1 = $this->room_case1($user);
+
+        $case2 = $this->room_case2($user);
+
+        $case3 = $this->room_case3($user);
+        echo 0;
+    }
+
+    private function room_case2($user)
+    {
+        $mod_room = Model("room");
+        $chats_rooms = $mod_room->getChatsRoom($user);
+
+        $rooms = [];
+        $uids_total = [];
+        if(!empty($chats_rooms))
+        {
+            foreach ($chats_rooms as $room)
+            {
+                $uids = [];
+                $paticipates = $mod_room->getRoomMember($room['room_id']);
+                if(!empty($paticipates))
+                {
+                    foreach ($paticipates as $one)
+                    {
+                        $uids[] = $one['member_id'];
+                    }
+
+                    $uids_total = array_merge($uids_total,$uids);
+                }
+
+
+                $rooms[] = [
+                    "room_id"=>$room['room_id'],
+                    "room_name"=>$room['room_name'],
+                    "avatar"=>"",
+                    "room_members"=>$uids
+                ];
+            }
+
+            $members = [];
+            if(!empty($uids_total))
+            {
+                $uids_total = array_unique($uids_total);
+                $items = Model('member')->getMemberList(['member_id' => ['in',$uids_total]]);
+
+                foreach ($items as $item){
+                    try
+                    {
+                        $info = new member_info($item);
+                        $members[$item['member_id']] = $info->filter();
+                    }
+                    catch (Exception $ex) {
+                        Log::record($ex->getMessage(),Log::ERR);
+                    }
+                }
+            }
+
+
+            if(!empty($members))
+            {
+                foreach ($rooms as $index => $room){
+                    $room_members = [];
+                    if(!empty($room['room_members']))
+                    {
+                        foreach ($room['room_members'] as $uid)
+                        {
+                            if(isset($members[$uid])){
+                                $room_members[] = $members[$uid];
+                            }
+
+                        }
+                    }
+                    $rooms[$index]['room_members'] = $room_members;
+                }
+            }
+        }
+
+        return $rooms;
+    }
+
+    private function room_case1($user)
+    {
+        $mod_room = Model('room');
+        $chat_rooms = $mod_room->getJoinedChatRoom($user);
+
+        $rooms = [];
+        if(!empty($chat_rooms))
+        {
+            foreach ($chat_rooms as $item)
+            {
+                $rooms[] = $this->room_info($item);
+            }
+        }
+
+        return $rooms;
+    }
+
+    private function room_info($room)
+    {
+        $mod_room = Model("room");
+        $paticipates = $mod_room->getRoomMember($room['room_id']);
+
+        $uids = [];
+        if(!empty($paticipates))
+        {
+            foreach ($paticipates as $one){
+                $uids[] = $one['member_id'];
+            }
+        }
+
+        if(empty($uids)){
+            $items = [];
+        }else{
+            $items = Model('member')->getMemberList(['member_id' => ['in',$uids]]);
+        }
+
+        $members = [];
+        foreach ($items as $item){
+            try
+            {
+                $info = new member_info($item);
+                $members[] = $info->filter();
+            }
+            catch (Exception $ex) {
+                Log::record($ex->getMessage(),Log::ERR);
+            }
+        }
+
+        $ret = [
+            "room_id"=>$room['room_id'],
+            "room_name"=>$room["room_name"],
+            "avatar"=> "", //头像和member查询维度太高
+            "room_members"=>$members,
+        ];
+        return $ret;
+    }
+
+    private function room_case3($user){
+        $mod_room = Model("room");
+        $chats_rooms = $mod_room->getChatsRoom($user);
+
+        $rooms = [];
+        if(!empty($chats_rooms))
+        {
+
+            $roomids = [];
+            foreach ($chats_rooms as $room)
+            {
+                $rooms[] = [
+                    "room_id"=>$room['room_id'],
+                    "room_name"=>$room['room_name'],
+                    "avatar"=>"",
+                    "room_members"=>[]
+                ];
+                $roomids[] = intval($room['room_id']);
+            }
+
+            $room_members = [];
+            $uids_total = [];
+            $roomTouser = $mod_room->table('room_msg')
+                ->field('room_id,group_concat(DISTINCT member_id) as uidstr')
+                ->where(['room_id'=>['in',$roomids]])
+                ->group('room_id')
+                ->select();
+            if(!empty($roomTouser))
+            {
+                foreach ($roomTouser as $index => $item)
+                {
+                    $uids = explode(',',$item['uidstr']);
+                    $uids_total = array_merge($uids_total,$uids);
+                    $room_members[$item['room_id']] = $uids;
+                }
+            }
+
+            $members = [];
+            if(!empty($uids_total))
+            {
+                $uids_total = array_unique($uids_total);
+                $items = Model('member')->getMemberList(['member_id' => ['in',$uids_total]]);
+
+                foreach ($items as $item){
+                    try
+                    {
+                        $info = new member_info($item);
+                        $members[$item['member_id']] = $info->filter();
+                    }
+                    catch (Exception $ex) {
+                        Log::record($ex->getMessage(),Log::ERR);
+                    }
+                }
+            }
+
+            if(!empty($members))
+            {
+                foreach ($rooms as $index => $room)
+                {
+                    $room_id = $room['room_id'];
+                    if(isset($room_members[$room_id]))
+                    {
+                        $user_list = [];
+                        foreach ($room_members[$room_id] as $i=>$uid)
+                        {
+                            if(isset($members[$uid])) $user_list[$i] = $members[$uid];
+                        }
+                        $rooms[$index]['room_members'] = $user_list;
+                    }
+                }
+            }
+        }
+
+        return $rooms;
+    }
+
 }