rkljw 2 zile în urmă
părinte
comite
6be1acd8a5
1 a modificat fișierele cu 34 adăugiri și 23 ștergeri
  1. 34 23
      app/JsonRpc/ChatService.php

+ 34 - 23
app/JsonRpc/ChatService.php

@@ -918,7 +918,7 @@ class ChatService implements ChatServiceInterface
             // 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 = [
@@ -1072,31 +1072,42 @@ class ChatService implements ChatServiceInterface
      */
     public function updateGroupMembers(array $data): array
     {
-        $where = [
-            'group_id' => $data['group_id'],
-        ];
-        $group_id = $data['group_id'];
-        //先删除群成员
-        $result = ChatGroupsMember::where($where)
-            ->where([["user_id", '!=', $data['user_id']]])->delete();
-        $groupMemberData = [];
-        foreach ($data['group_member'] as $value) {
-            $groupMemberData[] = [
-                'id' => PublicData::uuid(),
-                'user_id' => $value,
-                'group_id' => $group_id,
-                'leader' => 0,
+        DB::beginTransaction();
+        try{
+            $where = [
+                'group_id' => $data['group_id'],
             ];
-        }
-        $result = ChatGroupsMember::where($where)->insert($groupMemberData);
-        // 获取群信息
-        $groupInfo = ChatGroups::where(['id' => $group_id])->first();
-
-        if ($result) {
+            $group_id = $data['group_id'];
+            //先删除群成员
+            $result = ChatGroupsMember::where($where)
+                ->where([["user_id", '!=', $data['user_id']]])->delete();
+            $groupMemberData = [];
+            foreach ($data['group_member'] as $value) {
+                $groupMemberData[] = [
+                    'id' => PublicData::uuid(),
+                    'user_id' => $value,
+                    'group_id' => $group_id,
+                    'leader' => 0,
+                ];
+            }
+            $result = ChatGroupsMember::where($where)->insert($groupMemberData);
+            //删除会话踢出群的会话信息
+            // var_dump("data",$data);
+            //字符串转数组,
+            $groupIdList = $data['group_member'];
+            array_push($groupIdList,$data['user_id']);
+            // var_dump("几个",$groupIdList);
+            ChatRecords::whereNotIn('receiver_id',$groupIdList)->delete();
+            
+            // 获取群信息
+            $groupInfo = ChatGroups::where(['id' => $group_id])->first();
+            DB::commit();
             return Result::success($groupInfo);
-        } else {
-            return Result::error($data);
+        }catch(\Exception $e){
+            DB::rollBack();
+            return Result::error($data, $e->getMessage());
         }
+       
     }
     public function clearGroupRecords(array $data): array
     {