LiuJ 4 miesięcy temu
rodzic
commit
a74666ce60
1 zmienionych plików z 139 dodań i 207 usunięć
  1. 139 207
      app/JsonRpc/ChatService.php

+ 139 - 207
app/JsonRpc/ChatService.php

@@ -10,19 +10,15 @@ use App\Model\ChatTopic;
 use App\Model\ChatTopicsReply;
 
 use App\Model\ChatTopicClass;
-use App\Model\ImGroup;
-use App\Model\ImGroupMember;
 use App\Model\User;
 use App\Tools\PublicData;
 use App\Tools\Result;
-use Hyperf\Context\Context;
 use Hyperf\DbConnection\Db;
 use Hyperf\RpcServer\Annotation\RpcService;
 use Hyperf\Context\ApplicationContext as ContextApplicationContext;
 use Hyperf\Amqp\Producer;
 
 use App\Amqp\Producer\MqProducer;
-use function Hyperf\Support\env;
 
 #[RpcService(name: "ChatService", protocol: "jsonrpc-http", server: "jsonrpc-http")]
 class ChatService implements ChatServiceInterface
@@ -778,43 +774,26 @@ class ChatService implements ChatServiceInterface
      */
     public function joinGroup(array $data): array
     {
-        try {
-            var_dump("========",$data);
-            $group = ImGroup::where(['id' => $data['group_id']])->first();
-            if (empty($group)) {
-                return Result::error("群不存在", 0);
-            }
-            $groupMember = ImGroupMember::where(['user_id' => $data['user_id'], 'group_id' => $data['group_id']])->first();
-            if ($groupMember) {
-                return Result::error("已加入群", 0);
-            }
-//        $info = [
-//            'id' => PublicData::uuid(),
-//            'user_id' => $data['user_id'],
-//            'group_id' => $data['group_id'],
-//        ];
-//        $result = ChatGroupsMember::insert($info);
-            $url = env('IM_URL').'/api/v1/group/invite';
-            $dataIM = [
-                'group_id' => intval($data['group_id']),
-                'ids' => (string)$data['user_id'],
-            ];
-            $options = [
-                'authorization'=>$data['token']
-            ];
-            var_dump("参数:",$url,$dataIM,$options);
-            $result = PublicData::im_post($url,$dataIM,$options);
-            var_dump("结果:",$result);
-            if ($result) {
-                return Result::success($data);
-            } else {
-                return Result::error($data);
-            }
-        }catch (\Exception $ex){
-            var_dump($ex->getMessage());
-            return Result::error([]);
+        $group = ChatGroups::where(['id' => $data['group_id']])->first();
+        if (empty($group)) {
+            return Result::error("群不存在", 0);
         }
-
+        $groupMember = ChatGroupsMember::where(['user_id' => $data['user_id'], 'group_id' => $data['group_id']])->first();
+        if ($groupMember) {
+            return Result::error("已加入群", 0);
+        }
+        $info = [
+            'id' => PublicData::uuid(),
+            'user_id' => $data['user_id'],
+            'group_id' => $data['group_id'],
+        ];
+        $result = ChatGroupsMember::insert($info);
+        var_dump($result, '--------------------');
+        if ($result) {
+            return Result::success($data);
+        } else {
+            return Result::error($data);
+        };
     }
     /**
      * 话题 - 列表
@@ -872,51 +851,49 @@ class ChatService implements ChatServiceInterface
         try {
             $data['created_at'] = date('Y-m-d H:i:s');
             $data['updated_at'] = date('Y-m-d H:i:s');
-            if($data['type_id'] != 10000){
+            if ($data['type_id'] != 10000) {
                 $this->sendMessage([
-                    'talk_type'=>300,
-                    'title'=>$data['title'],
-                    'content'=>'提交了审核',
-                    'messageType'=>4,
+                    'talk_type' => 300,
+                    'title' => $data['title'],
+                    'content' => '提交了审核',
+                    'messageType' => 4,
                 ]);
                 $data['status'] = 1;
-            }else{
+            } else {
                 $data['status'] = 2;
-               
-//                if($data['is_group'] == 1){
-//                    $group_id = PublicData::uuid();
-//                    $groupData = [
-//                        'id' => $group_id,
-//                        'creator_id' => $data['user_id'],
-//                        'group_name' => $data['group_name'] ?? '',
-//                        'profile' => '',
-//                    ];
-//                    $groupResult = ChatGroups::insertGetId($groupData);
-//                    $groupMemberData = [
-//                        'id' => PublicData::uuid(),
-//                        'user_id' => $data['user_id'],
-//                        'group_id' => $group_id,
-//                        'leader' => 2,
-//                    ];
-//                    $groupMemberResult = ChatGroupsMember::insertGetId($groupMemberData);
+                if ($data['is_group'] == 1) {
+                    $group_id = PublicData::uuid();
+                    $groupData = [
+                        'id' => $group_id,
+                        'creator_id' => $data['user_id'],
+                        'group_name' => $data['group_name'] ?? '',
+                        'profile' => '',
+                    ];
+                    $groupResult = ChatGroups::insertGetId($groupData);
+                    $groupMemberData = [
+                        'id' => PublicData::uuid(),
+                        'user_id' => $data['user_id'],
+                        'group_id' => $group_id,
+                        'leader' => 2,
+                    ];
+                    $groupMemberResult = ChatGroupsMember::insertGetId($groupMemberData);
                     //更新result的 group_id
-//                    $datas['group_id'] = $group_id;
-//                    ChatTopic::where(['id' => $data['id']])->update($datas);
-    
+                    $datas['group_id'] = $group_id;
+                    ChatTopic::where(['id' => $data['id']])->update($datas);
+
                     //插入一条消息
-//                    $chatRecordsData = [
-//                        'user_id' => $data['user_id'],
-//                        'receiver_id' => $group_id,
-//                        'content' => '我创建了一个群' . Date('Y-m-d H:i:s'),
-//                        'msg_type' => 1,
-//                        'is_read' => 0,
-//                        'talk_type' => 2,
-//                        'action' => 'said',
-//                        'group_receiver_id' => $data['user_id'],
-//                    ];
-//                    ChatRecords::insert($chatRecordsData);
-//                }
-                
+                    $chatRecordsData = [
+                        'user_id' => $data['user_id'],
+                        'receiver_id' => $group_id,
+                        'content' => '我创建了一个群' . Date('Y-m-d H:i:s'),
+                        'msg_type' => 1,
+                        'is_read' => 0,
+                        'talk_type' => 2,
+                        'action' => 'said',
+                        'group_receiver_id' => $data['user_id'],
+                    ];
+                    ChatRecords::insert($chatRecordsData);
+                }
             }
             unset($data['type_id']);
             $result = ChatTopic::insertGetId($data);
@@ -936,115 +913,72 @@ class ChatService implements ChatServiceInterface
             $query = ChatTopic::where(['id' => $data['id']]);
             $topdata = $query->first();
 
-           $group_id = '';
-            /**************************************new*************************************************************/
-            if($data['status']==2){
-                //同意-需要创建群聊-开始创建
-                if($topdata['is_group']==1){
-                    //是否已经创建过群聊-没有创建才进行创建
-                    if(!$topdata['group_id']){
-                        $url = env('IM_URL').'/api/v1/group/create';
-                        $dataIM = [
-                            'avatar' => '',
-                            'name' => $topdata['group_name'],
-                            'profile'=>'',
-                            'ids' => '',
-                            'create_user_id'=>$topdata['user_id']
-                        ];
-                        $options = [
-                            'authorization'=>$data['token']
-                        ];
-                        $res = PublicData::im_post($url,$dataIM,$options);
-                        if($res['code']==200){
-                            $group_id = $res['data']['group_id'];
-                        }
-                    }
-                }
-                $this->sendMessage([
-                    'talk_type'=>301,
-                    'title'=>$topdata['title'],
-                    'content'=>'审核通过',
-                    'messageType'=>4,
-                    'user_id'=>$topdata['user_id'],
-                ]);
-            }else if($data['status']==3){
-                if($topdata['group_id']){
-                    $url = env('IM_URL').'/api/v1/group/dismiss';
-                    $dataIM = [
-                        'group_id' => intval($topdata['group_id']),
-                        'create_user_id'=>$topdata['user_id']
+            $result = ChatTopic::where(['id' => $data['id']])->update(['status' => $data['status']]);
+            // var_dump($data, 'tedst111111111111111');
+            // var_dump(date('Y-m-d H:i:s'), 'tedst111111111111111');
+            $creatter = $topdata['user_id'];
+            if ($data['status'] == 2 && $topdata['is_group'] == 1) {
+                $group_id = '';
+                if (empty($topdata['group_id'])) {
+                    $group_id = PublicData::uuid();
+                    $groupData = [
+                        'id' => $group_id,
+                        'creator_id' => $topdata['user_id'],
+                        'group_name' => $topdata['group_name'] ?? '',
+                        'profile' => '',
                     ];
-                    $options = [
-                        'authorization'=>$data['token']
+                    $groupResult = ChatGroups::insertGetId($groupData);
+                    $groupMemberData = [
+                        'id' => PublicData::uuid(),
+                        'user_id' => $topdata['user_id'],
+                        'group_id' => $group_id,
+                        'leader' => 2,
                     ];
-                    $res = PublicData::im_post($url,$dataIM,$options);
-                    if($res['code']!=200){
-                        //$group_id = $res['data']['group_id'];
-                        Db::rollBack();
-                        return Result::error($data, '群聊解散失败');
-                    }
-                    $group_id = '';
+                    $groupMemberResult = ChatGroupsMember::insertGetId($groupMemberData);
+                } else {
+                    $group_id = $topdata['group_id'];
+                }
+
+                //更新result的 group_id
+                $datas['group_id'] = $group_id;
+                ChatTopic::where(['id' => $data['id']])->update($datas);
+
+                //插入一条消息
+                $chatRecordsData = [
+                    'user_id' => $topdata['user_id'],
+                    'receiver_id' => $group_id,
+                    'content' => '我创建了一个群' . Date('Y-m-d H:i:s'),
+                    'msg_type' => 1,
+                    'is_read' => 0,
+                    'talk_type' => 2,
+                    'action' => 'said',
+                    'group_receiver_id' => $topdata['user_id'],
+                ];
+                ChatRecords::insert($chatRecordsData);
+            } elseif ($data['status'] == 3) {
+                if (isset($topdata['group_id']) && !empty($topdata['group_id'])) {
+                    ChatRecords::where('receiver_id', $topdata['group_id'])->delete();
+                    ChatGroupsMember::where('group_id', $topdata['group_id'])
+                        ->where([["user_id", '!=', $creatter]])->delete();
                 }
+            }
+            if ($data['status'] == 2) {
+                $this->sendMessage([
+                    'talk_type' => 301,
+                    'title' => $topdata['title'],
+                    'content' => '审核通过',
+                    'messageType' => 4,
+                    'user_id' => $topdata['user_id'],
+                ]);
+            } else if ($data['status'] == 3) {
                 $this->sendMessage([
-                    'talk_type'=>301,
-                    'title'=>$topdata['title'],
-                    'content'=>'审核拒绝',
-                    'messageType'=>4,
-                    'user_id'=>$topdata['user_id'],
+                    'talk_type' => 301,
+                    'title' => $topdata['title'],
+                    'content' => '审核拒绝',
+                    'messageType' => 4,
+                    'user_id' => $topdata['user_id'],
                 ]);
             }
-//====================================================================================
-//            $creatter = $topdata['user_id'];
-//            if ($data['status'] == 2 && $topdata['is_group'] == 1) {
-//                    $group_id = '';
-//                    if(empty($topdata['group_id'])){
-//                        $group_id = PublicData::uuid();
-//                        $groupData = [
-//                            'id' => $group_id,
-//                            'creator_id' => $topdata['user_id'],
-//                            'group_name' => $topdata['group_name'] ?? '',
-//                            'profile' => '',
-//                        ];
-//                        $groupResult = ChatGroups::insertGetId($groupData);
-//                        $groupMemberData = [
-//                            'id' => PublicData::uuid(),
-//                            'user_id' => $topdata['user_id'],
-//                            'group_id' => $group_id,
-//                            'leader' => 2,
-//                        ];
-//                        $groupMemberResult = ChatGroupsMember::insertGetId($groupMemberData);
-//                    }else{
-//                        $group_id = $topdata['group_id'];
-//                    }
-                    
-                    //更新result的 group_id
-//                    $datas['group_id'] = $group_id;
-
-//                    ChatTopic::where(['id' => $data['id']])->update($datas);
-
-                    //插入一条消息
-//                    $chatRecordsData = [
-//                        'user_id' => $topdata['user_id'],
-//                        'receiver_id' => $group_id,
-//                        'content' => '我创建了一个群' . Date('Y-m-d H:i:s'),
-//                        'msg_type' => 1,
-//                        'is_read' => 0,
-//                        'talk_type' => 2,
-//                        'action' => 'said',
-//                        'group_receiver_id' => $topdata['user_id'],
-//                    ];
-//                    ChatRecords::insert($chatRecordsData);
-                
-               
-//            } elseif ($data['status'] == 3) {
-//                if(isset($topdata['group_id']) && !empty($topdata['group_id'])){
-//                    ChatRecords::where('receiver_id', $topdata['group_id'])->delete();
-//                    ChatGroupsMember::where('group_id', $topdata['group_id'])
-//                        ->where([["user_id", '!=', $creatter]])->delete();
-//                }
-//            }
-//====================================================================================
-            $result = ChatTopic::where(['id' => $data['id']])->update(['status' => $data['status'],'group_id'=>$group_id]);
             Db::commit();
             if ($result) {
                 return Result::success($data);
@@ -1064,17 +998,16 @@ class ChatService implements ChatServiceInterface
         if (empty($data['id'])) {
             return Result::error('id不能为空');
         }
-        if($data['type_id'] != 10000){
+        if ($data['type_id'] != 10000) {
             $this->sendMessage([
-                'talk_type'=>300,
-                'title'=>$data['title'],
-                'content'=>'提交了审核',
-                'messageType'=>4,
+                'talk_type' => 300,
+                'title' => $data['title'],
+                'content' => '提交了审核',
+                'messageType' => 4,
             ]);
             $data['status'] = 1;
         }
-        var_dump($data);
-        unset($data['type_id']);
+
         $result = ChatTopic::where(['id' => $data['id']])->update($data);
         if ($result) {
             return Result::success($data);
@@ -1138,7 +1071,7 @@ class ChatService implements ChatServiceInterface
     public function updateGroupMembers(array $data): array
     {
         DB::beginTransaction();
-        try{
+        try {
             $where = [
                 'group_id' => $data['group_id'],
             ];
@@ -1160,19 +1093,18 @@ class ChatService implements ChatServiceInterface
             // var_dump("data",$data);
             //字符串转数组,
             $groupIdList = $data['group_member'];
-            array_push($groupIdList,$data['user_id']);
+            array_push($groupIdList, $data['user_id']);
             // var_dump("几个",$groupIdList);
-            ChatRecords::whereNotIn('user_id',$groupIdList)->where('group_id',$data['group_id'])->delete();
-            
+            ChatRecords::whereNotIn('receiver_id', $groupIdList)->delete();
+
             // 获取群信息
             $groupInfo = ChatGroups::where(['id' => $group_id])->first();
             DB::commit();
             return Result::success($groupInfo);
-        }catch(\Exception $e){
+        } catch (\Exception $e) {
             DB::rollBack();
             return Result::error($data, $e->getMessage());
         }
-       
     }
     public function clearGroupRecords(array $data): array
     {
@@ -1328,9 +1260,9 @@ class ChatService implements ChatServiceInterface
      */
     public function getBusinessDistrictList(array $data): array
     {
-        $query = ImGroupMember::Join('chat_topics', 'chat_topics.group_id', '=', 'im_group_member.group_id')
+        $query = ChatGroupsMember::Join('chat_topics', 'chat_topics.group_id', '=', 'chat_groups_members.group_id')
             ->leftJoin('chat_topic_class', 'chat_topic_class.id', '=', 'chat_topics.type')
-            ->where(['im_group_member.user_id' => $data['user_id']])
+            ->where(['chat_groups_members.user_id' => $data['user_id']])
             ->when($data, function ($query) use ($data) {
                 if (!empty($data['type'])) {
                     $query->where(['chat_topics.type' => $data['type']]);
@@ -1361,24 +1293,24 @@ class ChatService implements ChatServiceInterface
         ];
         return  Result::success($result);
     }
-     
+
     /**
      * 发送消息
      * @param array $messageData
      * @return void
      */
-    public function sendMessage($messageData){
-        $msg =[
-          'talk_type'=>$messageData['talk_type'],
-          'title'=>$messageData['title'],
-          'content'=>$messageData['content'],
-          'messageType'=>$messageData['messageType'],
-          'user_id'=>$messageData['user_id']??'',
-          'time'=>microtime(),
+    public function sendMessage($messageData)
+    {
+        $msg = [
+            'talk_type' => $messageData['talk_type'],
+            'title' => $messageData['title'],
+            'content' => $messageData['content'],
+            'messageType' => $messageData['messageType'],
+            'user_id' => $messageData['user_id'] ?? '',
+            'time' => microtime(),
         ];
         $message = new MqProducer($msg);
         $producer = ContextApplicationContext::getContainer()->get(Producer::class);
         $producer->produce($message);
-        
     }
 }