$data['fd']])->delete(); if($result){ return Result::success($data); }else{ return Result::error($data); } } /** * @param array $data * @return array */ public function addChatChannel(array $data): array { $result = ChatChannel::insertGetId($data); if($result){ return Result::success($data); }else{ return Result::error($data); } } /** * 添加申请 * @param array $data * @return array */ public function addContactApply(array $data): array { $result = ContactApply::insertGetId($data); if($result){ return Result::success($result); }else{ return Result::error('添加申请失败'); } } /** * 更新申请 * @param array $data * @return array */ public function updateContactApply(array $data): array { $type = $data['type']; //判断同意还是不同意 if($type == 1){ Db::beginTransaction(); try{ //同意 双方互为好友 -添加好友关系 $data1 = [ 'user_id'=>$data['user_id'], 'friend_id'=>$data['friend_id'], ]; var_dump("好友关系表insert",$data1); Contact::insertGetId($data1); $data2 = [ 'user_id'=>$data['friend_id'], 'friend_id'=>$data['user_id'], ]; var_dump("好友关系表insert22",$data1); Contact::insertGetId($data2); $where1 = [ 'friend_id'=>$data['user_id'], 'user_id'=>$data['friend_id'], ]; var_dump("申请记录删除:",$data1); ContactApply::where($where1)->delete(); var_dump("会话id:",PublicData::uuid()); //创建会话 $sessionData = [ 'id'=>PublicData::uuid(), 'talk_type'=>'1', ]; TalkSession::insert($sessionData); //添加会话关系 $talkSessionAssociationData = [ [ 'id'=>PublicData::uuid(), 'user_id'=>$data['user_id'], 'to_user_id'=>$data['friend_id'], 'session_id'=>$sessionData['id'] ] ,[ 'id'=>PublicData::uuid(), 'user_id'=>$data['friend_id'], 'to_user_id'=>$data['user_id'], 'session_id'=>$sessionData['id'] ] ]; var_dump("创建会话:",$talkSessionAssociationData); TalkSessionAssociation::insert($talkSessionAssociationData); Db::commit(); } catch(\Throwable $ex){ Db::rollBack(); var_dump($ex->getMessage()); return Result::error("同意添加为好友失败",0); } }else if($type == 2){ Db::beginTransaction(); try{ $where1 = [ 'friend_id'=>$data['user_id'], 'user_id'=>$data['friend_id'], ]; ContactApply::where($where1)->delete(); Db::commit(); } catch(\Throwable $ex){ Db::rollBack(); var_dump($ex->getMessage()); return Result::error("拒绝添加好友失败",0); } } return Result::success([]); } /** * 好友申请列表 * @param array $data * @return array */ public function getContactApplyList(array $data): array { $where = [ 'friend_id'=>$data['user_id'] ]; $result = ContactApply::where($where)->get(); return Result::success($result); } /** * 好有查询 * @param array $data * @return array */ public function getContactList(array $data): array { $where = [ ['contact.status','=','1'], ['contact.user_id','=',$data['user_id']], ]; if(isset($data['pageSize'])){ $result = Contact::where($where) ->where(function ($query) use ($data) { $query->where('user.nickname', 'like','%'.$data['keyWord'].'%') ->orWhere('contact.remark', 'like','%'.$data['keyWord'].'%'); }) ->leftJoin('user', 'user.id', '=', 'contact.friend_id') ->select('contact.*', 'user.nickname','user.avatar') ->limit($data['pageSize'])->offset(($data['page']-1)*$data['pageSize'])->orderBy("contact.created_at","desc")->get(); }else{ $result = Contact::where($where) ->where(function ($query) use ($data) { $query->where('user.nickname', 'like','%'.$data['keyWord'].'%') ->orWhere('contact.remark', 'like','%'.$data['keyWord'].'%'); }) ->leftJoin('user', 'user.id', '=', 'contact.friend_id') ->select('contact.*', 'user.nickname','user.avatar') ->get(); } $count = Contact::where($where) ->where(function ($query) use ($data) { $query->where('user.nickname', 'like','%'.$data['keyWord'].'%') ->orWhere('contact.remark', 'like','%'.$data['keyWord'].'%'); }) ->leftJoin('user', 'user.id', '=', 'contact.friend_id') ->count(); if (empty($result)) { return Result::error("没有数据",0); } $rep = $result->toArray(); $data = [ 'rows'=>$rep, 'count'=>$count ]; return Result::success($data); } /** * 添加好友 * @param array $data * @return array */ public function addContact(array $data): array { $result = Contact::insertGetId($data); if($result){ return Result::success($data); }else{ return Result::error($data); } } /** * 更新好友 * @param array $data * @return array */ public function updateContact(array $data): array { $where = [ 'id'=>$data['id'] ]; $result = Contact::where($where)->update($data); if($result){ return Result::success($data); }else{ return Result::error($data); } } /** * 删除好友 -- 软删除 * @param array $data * @return array */ public function delContact(array $data): array { $where = [ 'user_id'=>$data['user_id'], 'friend_id'=>$data['friend_id'], ]; $result = Contact::where($where)->update(['status'=>2]); if($result){ return Result::success($result); }else{ return Result::error('删除失败'); } } /** * 会话列表 * @param array $data * @return array */ public function getTalkSessionList(array $data): array { $where = [ 'talk_session_association.status'=>'1', 'talk_session_association.user_id'=>$data['user_id'] ]; $result = TalkSessionAssociation::where($where) ->leftJoin('talk_session','talk_session.id','talk_session_association.session_id') ->leftJoin('user','user.id','talk_session_association.to_user_id') ->leftJoin('talk_group','talk_group.id','talk_session_association.to_user_id') ->select( 'talk_session.talk_type', 'talk_group.group_name', 'talk_group.avatar as group_avatar', 'user.avatar as user_avatar', 'user.nickname', 'talk_session.last_content', 'user.user_name', 'talk_session.id as session_id', 'talk_session.talk_type', 'user.id as user_id', 'talk_group.id as group_id' ) ->limit($data['pageSize'])->offset(($data['page']-1)*$data['pageSize'])->orderBy("talk_session.updated_at","desc")->get(); $count = TalkSessionAssociation::where($where) ->leftJoin('talk_session','talk_session.id','talk_session_association.session_id') ->leftJoin('user','user.id','talk_session_association.to_user_id') ->leftJoin('talk_group','talk_group.id','talk_session_association.to_user_id') ->count(); $repData = [ 'row'=>$result, 'count'=>$count ]; return Result::success($repData); } /** * 添加会话 * @param array $data * @return array */ public function addTalkSession(array $data): array { $result = TalkSession::insert($data); if($result){ return Result::success(['id'=>$data['id']]); }else{ return Result::error('创建会话失败'); } } /** * 更新会话 * @param array $data * @return array */ public function updateTalkSession(array $data): array { $where = [ 'id'=>$data['id'] ]; $result = TalkSession::where($where)->update($data); if($result){ return Result::success($data); }else{ return Result::error($data); } } /** * 删除会话 * @param array $data * @return array */ public function delTalkSession(array $data): array { $where = [ 'id'=>$data['id'] ]; $result = TalkSession::where($where)->delete(); if($result){ return Result::success($data); }else{ return Result::error($data); } } /** * 聊天内容-获取聊天内容列表 * @param array $data * @return array */ public function getTalkRecordsList(array $data): array { $talkSessionAssociationInfo = TalkSessionAssociation::where(['session_id'=>$data['session_id'],'to_user_id'=>$data['user_id']])->first(); $where = [ 'talk_records.session_id' =>$data['session_id'], ]; if($talkSessionAssociationInfo['status'] == 2){ $where[] = ['talk_records.created_at','>=',$talkSessionAssociationInfo['del_at']]; } $result = TalkRecords::where($where) ->leftJoin('user','user.id','talk_records.user_id') ->select("user.avatar","talk_records.*") ->limit($data['pageSize']) ->offset(($data['page']-1)*$data['pageSize']) ->orderBy("talk_session.updated_at","desc") ->get(); return Result::success($result); } /** * 添加聊天内容 * @param array $data * @return array */ public function addTalkRecords(array $data): array { Db::beginTransaction(); try{; //添加会话内容 $talkRecordsData = [ 'id'=>PublicData::uuid(), 'msg_type'=>$data['msg_type']??0, 'user_id'=>$data['user_id']??0, 'session_id'=>$data['session_id']??'', 'talk_type'=>$data['talk_type']??0, 'content'=>$data['content']??'', 'receiver_id'=>$data['receiver_id']??'' ]; TalkRecords::insert($talkRecordsData); $fileData = [ 'id'=>PublicData::uuid(), 'record_id'=>$talkRecordsData['id']??'', 'user_id'=>$data['user_id']??0, 'source'=>$data['source']??'', 'type'=>$data['type']??0, 'drive'=>$data['drive']??'', 'original_name'=>$data['original_name']??'', 'suffix'=>$data['suffix']??'', 'size'=>$data['size']??0, 'path'=>$data['path']??'', ]; var_dump($fileData); TalkRecordsFile::insert($fileData); Db::commit(); } catch(\Throwable $ex){ Db::rollBack(); var_dump($ex->getMessage()); return Result::error("存储消息失败",0); } return Result::success([]); } /** * 更新聊天内容 * @param array $data * @return array */ public function updateTalkRecords(array $data): array { $where = [ 'id'=>$data['id'] ]; $result = TalkRecords::where($where)->update($data); if($result){ return Result::success($data); }else{ return Result::error($data); } } /** * 删除聊天内容 * @param array $data * @return array */ public function delTalkRecords(array $data): array { $where = [ 'id'=>$data['id'] ]; $result = TalkRecords::where($where)->delete(); if($result){ return Result::success($data); }else{ return Result::error($data); } } /** * 聊天内容-附件列表 * @param array $data * @return array */ public function getTalkRecordsFileList(array $data): array { $result = TalkRecordsFile::get(); return Result::success($result); } /** * 聊天内容-添加附件 * @param array $data * @return array */ public function addTalkRecordsFile(array $data): array { $result = TalkRecordsFile::insertGetId($data); if($result){ return Result::success($data); }else{ return Result::error($data); } } /** * 聊天内容 - 更新附件 * @param array $data * @return array */ public function updateTalkRecordsFile(array $data): array { $where = [ 'id'=>$data['id'] ]; $result = TalkRecordsFile::where($where)->update($data); if($result){ return Result::success($data); }else{ return Result::error($data); } } /** * 聊天内容 - 删除附件 * @param array $data * @return array */ public function delTalkRecordsFile(array $data): array { $where = [ 'id'=>$data['id'] ]; $result = TalkRecordsFile::where($where)->delete(); if($result){ return Result::success($data); }else{ return Result::error($data); } } /** * 群组 - 群列表 * @param array $data * @return array */ public function getTalkGroupList(array $data): array { $result = TalkGroup::get(); return Result::success($result); } /** * 群组 - 创建群 * @param array $data * @return array */ public function addTalkGroup(array $data): array { Db::beginTransaction(); try{ //创建群 $groupData = [ 'id' => PublicData::uuid(), 'creator_id'=>$data['user_id'], 'group_name'=>$data['group_name'] ]; TalkGroup::insert($groupData); //创建群用户 $groupMemberData = []; if($data['user_id_arr']){ foreach ($data['user_id_arr'] as $key=>$val){ $groupMemberData[$key] = [ 'id' => PublicData::uuid(), 'group_id' => $groupData['id'], 'user_id' =>$val, 'leader' =>$data['user_id'] == $val?2:0, ]; } } TalkGroupMember::insert($groupMemberData); //创建会话 $sessionData = [ 'id' => PublicData::uuid(), 'talk_type' => '2' ]; TalkSession::insertGetId($sessionData); //创建会话关系 $talkSessionAssociationData = []; if($data['user_id_arr']){ foreach ($data['user_id_arr'] as $key=>$val){ $talkSessionAssociationData[$key] = [ 'id' => PublicData::uuid(), 'user_id' => $val, 'to_user_id' => $groupData['id'], 'session_id' =>$sessionData['id'] ]; } } TalkSessionAssociation::insert($talkSessionAssociationData); Db::commit(); } catch(\Throwable $ex){ Db::rollBack(); var_dump($ex->getMessage()); return Result::error("创建群失败",0); } return Result::success([]); } /** * 群组 - 更新群 * @param array $data * @return array */ public function updateTalkGroup(array $data): array { $where = [ 'id'=>$data['id'] ]; $result = TalkGroup::where($where)->update($data); if($result){ return Result::success($data); }else{ return Result::error($data); } } /** * 群组 - 删除群 * @param array $data * @return array */ public function delTalkGroup(array $data): array { $where = [ 'id'=>$data['id'] ]; $result = TalkGroup::where($where)->delete(); if($result){ return Result::success($data); }else{ return Result::error($data); } } /** * 群组 - 群用户列表 * @param array $data * @return array */ public function getTalkGroupMember(array $data): array { $where = [ 'group_id'=>$data['group_id'] ]; $result = TalkGroupMember::where($where)->get(); return Result::success($result); } /** * 群组 - 全部群用户列表 * @param array $data * @return array */ public function getAllTalkGroupMember(array $data): array { $where = [ 'group_id'=>$data['group_id'] ]; $result = TalkGroupMember::where($where)->get(); return Result::success($result); } /** * 群组 - 创建群用户 * @param array $data * @return array */ public function addTalkGroupMember(array $data): array { $result = TalkGroupMember::insertGetId($data); if($result){ return Result::success($data); }else{ return Result::error($data); } } /** * 群组 - 更新群用户 * @param array $data * @return array */ public function updateTalkGroupMember(array $data): array { $where = [ 'id'=>$data['id'] ]; $result = TalkGroupMember::where($where)->update($data); if($result){ return Result::success($data); }else{ return Result::error($data); } } /** * 群组 - 删除群用户 * @param array $data * @return array */ public function delTalkGroupMember(array $data): array { $where = [ 'id'=>$data['id'] ]; $result = TalkGroupMember::where($where)->delete(); if($result){ return Result::success($data); }else{ return Result::error($data); } } /** * 更新 会话关系 * @param array $data * @return array */ public function updateTalkSessionAssociation(array $data): array { $where = [ 'id'=>$data['id'] ]; $result = TalkSessionAssociation::where($where)->update($data); if($result){ return Result::success($data); }else{ return Result::error($data); } } /** * 添加会话关系 * @param array $data * @return array */ public function addTalkSessionAssociation(array $data): array { var_dump($data); $result = TalkSessionAssociation::insertGetId($data); if($result){ return Result::success($data); }else{ return Result::error($data); } } }