| | |
| | | public function myList($user) |
| | | { |
| | | $ChatRelation = new ChatRelation(); |
| | | $list = $ChatRelation->with(['user']) |
| | | $list = $ChatRelation |
| | | ->where(['user_id' => $user['user_id']]) |
| | | ->whereOr(['other_user_id' => $user['user_id']]) |
| | | ->order('update_time desc') |
| | | ->select(); |
| | | foreach ($list as $key => &$value) { |
| | | $where['relation_id'] = $value['relation_id']; |
| | | if($value['user_id'] == $user['user_id']){ |
| | | $where['user_id']= $other_user_id = $value['other_user_id']; |
| | | }else{ |
| | | $where['user_id']= $other_user_id = $value['user_id']; |
| | | |
| | | // 过滤掉无效的关系记录(即user_id和other_user_id相同的记录) |
| | | $validList = []; |
| | | foreach ($list as $value) { |
| | | if ($value['user_id'] != $value['other_user_id']) { |
| | | $validList[] = $value; |
| | | } |
| | | } |
| | | |
| | | foreach ($validList as $key => &$value) { |
| | | $where['relation_id'] = $value['relation_id']; |
| | | // 确定显示的用户ID:应该是与自己不同的另一个用户 |
| | | if($value['user_id'] == $user['user_id']){ |
| | | // 当前记录是从当前用户角度创建的 |
| | | $where['user_id'] = $other_user_id = $value['other_user_id']; |
| | | } else { |
| | | // 当前记录是从对方角度创建的,对方是user_id |
| | | $where['user_id'] = $other_user_id = $value['user_id']; |
| | | } |
| | | |
| | | // 获取未读消息数量 |
| | | $where['status'] = 0; |
| | | $value['num'] = $this->where($where)->count(); |
| | | unset($where['status']); |
| | | |
| | | // 获取最新消息 |
| | | $value['newMessage'] = $this->where($where)->order('chat_id desc')->field('content,create_time')->find(); |
| | | |
| | | // 获取对方用户信息 |
| | | $value['user'] = UserModel::detail($other_user_id); |
| | | } |
| | | return $list; |
| | | return $validList; |
| | | } |
| | | |
| | | //获取聊天信息 |