123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171 |
- <?php
- namespace app\enterprise\controller;
- use app\BaseController;
- use app\enterprise\model\{Friend as FriendModel,User};
- class Friend extends BaseController
- {
- // 好友申请列表
- public function index()
- {
- $param = $this->request->param();
- $map = [];
- $map[]=['is_invite','=',1];
- $isMine=$param['is_mine'] ?? 0;
- if($isMine){
- // 我发起的
- $map[]=['create_user','=',$this->uid];
- }else{
- // 我收到的
- $map[]=['friend_user_id','=',$this->uid];
- }
- $data=[];
- $model = new FriendModel();
- $list = $this->paginate($model->where($map)->order('friend_id desc'));
- if ($list) {
- $data = $list->toArray()['data'];
- $userList = User::matchUser($data, true, ['create_user','friend_user_id'], 120);
- foreach ($data as $k => $v) {
- $data[$k]['create_user_info'] = $userList[$v['create_user']] ?? [];
- $data[$k]['user_id_info'] = $userList[$v['friend_user_id']] ?? [];
- $data[$k]['is_group'] = 0;
- }
- }
- return success('', $data,$list->total(),$list->currentPage());
- }
- // 添加好友
- public function add()
- {
- $param = $this->request->param();
- $user_id=$param['user_id'] ?? 0;
- if($user_id==$this->uid){
- return warning('不能添加自己为好友');
- }
- $friend=FriendModel::where(['friend_user_id'=>$user_id,'create_user'=>$this->uid])->find();
- if($friend){
- if($friend->status==1){
- return warning('你们已经是好友了');
- }elseif($friend->status==2){
- return warning('你已经申请过了,请等待对方同意');
- }
- }
- $status=2;
- $otherFriend=FriendModel::where(['friend_user_id'=>$this->uid,'create_user'=>$user_id])->find();
- if($otherFriend){
- if($otherFriend->status>0){
- $status=1;
- }
- }
- $model = new FriendModel();
- $data=[
- 'friend_user_id'=>$user_id,
- 'status'=>$status,
- 'create_user'=>$this->uid,
- 'remark'=>$param['remark'],
- 'is_invite'=>1 // 是否为发起方
- ];
- $model->save($data);
- $msg=[
- 'fromUser'=>[
- 'id'=>'system',
- 'displayName'=>'新朋友',
- 'avatar'=>'',
- ],
- 'toContactId'=>'system',
- 'id'=>uniqid(),
- 'is_group'=>2,
- 'content'=>"添加您为好友",
- 'status'=>'succeed',
- 'sendTime'=>time()*1000,
- 'type'=>'event',
- 'fileSize'=>0,
- 'fileName'=>'',
- ];
- // 发送好友申请
- wsSendMsg($user_id,'simple',$msg);
- return success('添加成功');
- }
- // 接受或者拒绝好友申请
- public function update()
- {
- $param = $this->request->param();
- $friend=FriendModel::find($param['friend_id']);
- if(!$friend){
- return warning('申请不存在');
- }
- $map=[
- 'friend_id'=>$param['friend_id']
- ];
- FriendModel::where($map)->update(['status'=>$param['status']]);
- // 如果是接收,就添加到好友列表
- if($param['status']){
- $data=[
- 'friend_user_id'=>$friend->create_user,
- 'create_user'=>$this->uid,
- ];
- $newFriend=FriendModel::where($data)->find();
- if($newFriend){
- FriendModel::where($data)->update(['status'=>1]);
- return success('你们已经是好友了');
- }else{
- $data['status']=1;
- FriendModel::create($data);
- }
- // 将对方的信息发送给我,把我的信息发送对方
- $user=User::setContact($friend->create_user);
- if($user){
- wsSendMsg($this->uid,'appendContact',$user);
- }
- $myInfo=User::setContact($this->uid);
- if($myInfo){
- wsSendMsg($friend->create_user,'appendContact',$myInfo);
- }
-
- }
- return success('操作成功');
- }
- // 删除好友
- public function del()
- {
- $param = $this->request->param();
- $map=['friend_user_id'=>$param['id'],'create_user'=>$this->uid];
- $friend=FriendModel::where($map)->find();
- if(!$friend){
- return warning('好友不存在');
- }
- // 需要删除双方的好友关系
- FriendModel::where($map)->delete();
- FriendModel::where(['friend_user_id'=>$this->uid,'create_user'=>$param['id']])->delete();
- // 性质和删除群聊一样
- wsSendMsg($param['id'],'removeGroup',['group_id'=>$this->uid]);
- return success('删除成功');
- }
- // 设置好友备注
- public function setNickname()
- {
- $param = $this->request->param();
- if(!$param['nickname']){
- return warning('备注不能为空');
- }
- FriendModel::update(['nickname'=>$param['nickname']],['friend_id'=>$param['friend_id']]);
- return success('设置成功');
- }
- // 获取最新的一条和申请的总数
- public function getApplyMsg(){
- $model = new FriendModel();
- $map[]=['friend_user_id','=',$this->uid];
- $map[]=['status','=',2];
- $count=$model->where($map)->count();
- return success('', $count);
- }
- }
|