where(['user_id' => $user['user_id']]) ->whereOr(['other_user_id' => $user['user_id']]) ->order('update_time desc') ->select(); // 过滤掉无效的关系记录(即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 $validList; } //获取聊天信息 public function getMessage($data, $user) { $relation_id = ChatRelationModel::getRelationId($user['user_id'],$data['you_user_id']); $list = $this->where("relation_id","=",$relation_id) ->with(['user']) ->order('chat_id desc') ->paginate($data); $where['relation_id'] = $relation_id; $where['user_id'] = $data['you_user_id']; $this->where($where)->update(['status' => 1]); return $list; } //获取消息条数 public function mCount($user) { $num = 0; if ($user) { $num = $this->where('user_id', '=', $user['user_id'])->whereOr('user_id', '=', $user['user_id'])->count(); } return $num; } //获取用户信息 public function getInfo($user_id) { $userInfo = UserModel::detail($user_id); $data['avatarUrl'] = $userInfo['avatarUrl']; return $data; } public static function getNoReadCount($user_id){ return self::where('user_id', '=', $user_id)->whereOr('user_id', '=', $user_id) //->where('status', '=', 0) ->count(); } }