Преглед на файлове

Merge branch 'master' of http://192.168.1.234:3000/FengR/chat_producer

FengR преди 3 седмици
родител
ревизия
7abe8f6691
променени са 5 файла, в които са добавени 258 реда и са изтрити 69 реда
  1. 8 5
      .env
  2. 166 64
      app/JsonRpc/ChatService.php
  3. 28 0
      app/Model/GroupImp.php
  4. 28 0
      app/Model/GroupMemberImp.php
  5. 28 0
      app/Model/GroupTalkImp.php

+ 8 - 5
.env

@@ -16,11 +16,14 @@ DB_COLLATION=utf8mb4_unicode_ci
 DB_PREFIX=
 
 REDIS_HOST=192.168.1.234
-REDIS_AUTH=YPWWnFnNebc7427B
+REDIS_AUTH=zxt_redis_dev
 REDIS_PORT=26739
+REDIS_PASSWORD=zxt_redis_dev
 REDIS_DB=0
 
-AMQP_HOST=192.168.1.234
-AMQP_PORT=5673
-AMQP_USER=rabbitmq
-AMQP_PASSWORD=H8eDTAk6LY7EjJ8y
+
+AMQP_HOST=192.168.1.122
+AMQP_PORT=5672
+AMQP_USER=admin
+AMQP_PASSWORD=admin
+ 

+ 166 - 64
app/JsonRpc/ChatService.php

@@ -11,6 +11,11 @@ use App\Model\ChatTopicsReply;
 
 use App\Model\ChatTopicClass;
 use App\Model\User;
+use App\Model\GroupMemberImp;
+use App\Model\GroupImp;
+use App\Model\GroupTalkImp;
+
+
 use App\Tools\PublicData;
 use App\Tools\Result;
 use Hyperf\DbConnection\Db;
@@ -774,6 +779,37 @@ class ChatService implements ChatServiceInterface
      */
     public function joinGroup(array $data): array
     {
+        //新版im
+        $group = GroupImp::where(['id' => $data['group_id']])->first();
+        if (empty($group)) {
+            return Result::error("群不存在", 0);
+        }
+        $groupMember = GroupMemberImp::where(['user_id' => $data['user_id'], 'group_id' => $data['group_id']])->first();
+        if ($groupMember) {
+            return Result::error("已加入群", 0);
+        }
+        $groupMember = [
+            'user_id' => $data['user_id'],
+            'group_id' => $data['group_id'],
+            'leader' => 3,
+            'join_time' => Date('Y-m-d H:i:s')
+        ];
+
+        $groupMemberResult = GroupMemberImp::insertGetId($groupMember);
+        $talk_session = [
+            'user_id' => $data['user_id'],
+            'to_from_id' => $data['group_id'],
+            'talk_mode' => 2,
+            'created_at' => Date('Y-m-d H:i:s'),
+            'updated_at' => Date('Y-m-d H:i:s'),
+        ];
+        $talk_session_result = GroupTalkImp::insertGetId($talk_session);
+        if ($groupMemberResult) {
+            return Result::success($data);
+        } else {
+            return Result::error($data);
+        };
+        //ljim
         $group = ChatGroups::where(['id' => $data['group_id']])->first();
         if (empty($group)) {
             return Result::error("群不存在", 0);
@@ -848,58 +884,90 @@ class ChatService implements ChatServiceInterface
     public function addTopic(array $data): array
     {
         $chattopic = [];
-        Db::beginTransaction();
-        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) {
-                $this->sendMessage([
-                    'talk_type' => 300,
-                    'title' => $data['title'],
-                    'content' => '提交了审核',
-                    'messageType' => 4,
-                ]);
-                $data['status'] = 1;
-            } 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);
-                    //更新result的 group_id
-                    $datas['group_id'] = $group_id;
-                    ChatTopic::where(['id' => $data['id']])->update($datas);
+        date_default_timezone_set('Asia/Shanghai');
+        $data['created_at'] = date('Y-m-d H:i:s');
+        $data['updated_at'] = date('Y-m-d H:i:s');
+        $group_id = '';
+        if ($data['type_id'] != 10000) {
+            $this->sendMessage([
+                'talk_type' => 300,
+                'title' => $data['title'],
+                'content' => '提交了审核',
+                'messageType' => 4,
+            ]);
+            $data['status'] = 1;
+        } else {
+            $data['status'] = 2;
+            if ($data['is_group'] == 1) {
+                $group_id = PublicData::uuid();
+                var_dump($group_id);
+                $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);
 
-                    //插入一条消息
-                    $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);
+                //插入imp group  group_member
+                $group = [
+                    'type' => 1,
+                    'name' => $data['group_name'] ?? '',
+                    'profile' => '',
+                    'avatar' => '',
+                    'creator_id' => $data['user_id'],
+                ];
+                $groupResult = GroupImp::insertGetId($group);
+                var_dump($groupResult, '获取imp group_id');
+                $groupMember = [
+                    'user_id' => $data['user_id'],
+                    'group_id' => $groupResult,
+                    'leader' => 1,
+                    'join_time' => Date('Y-m-d H:i:s')
+                ];
+                $groupMemberResult = GroupMemberImp::insertGetId($groupMember);
+                $talk_session = [
+                    'user_id' => $data['user_id'],
+                    'to_from_id' => $groupResult,
+                    'talk_mode' => 2,
+                    'created_at' => Date('Y-m-d H:i:s'),
+                    'updated_at' => Date('Y-m-d H:i:s'),
+                ];
+                $talk_session_result = GroupTalkImp::insertGetId($talk_session);
+                $group_id = $groupResult;
             }
-            unset($data['type_id']);
-            $result = ChatTopic::insertGetId($data);
-            $chattopic = Chattopic::find($result);
-            Db::commit();
+        }
+        unset($data['type_id']);
+        if ($group_id) {
+            $data['group_id'] = $group_id;
+        }
+        $result = ChatTopic::insertGetId($data);
+        $chattopic = Chattopic::find($result);
+        Db::commit();
+        Db::beginTransaction();
+        try {
         } catch (\Exception $e) {
             Db::rollBack();
             return Result::error($data, $e->getMessage());
@@ -936,6 +1004,32 @@ class ChatService implements ChatServiceInterface
                         'leader' => 2,
                     ];
                     $groupMemberResult = ChatGroupsMember::insertGetId($groupMemberData);
+
+                    $group = [
+                        'type' => 1,
+                        'name' => $topdata['group_name'] ?? '',
+                        'profile' => '',
+                        'avatar' => '',
+                        'creator_id' => $topdata['user_id'],
+                    ];
+                    $groupResult = GroupImp::insertGetId($group);
+                    var_dump($groupResult, '获取imp group_id');
+                    $groupMember = [
+                        'user_id' => $topdata['user_id'],
+                        'group_id' => $groupResult,
+                        'leader' => 1,
+                        'join_time' => Date('Y-m-d H:i:s')
+                    ];
+                    $groupMemberResult = GroupMemberImp::insertGetId($groupMember);
+                    $talk_session = [
+                        'user_id' => $topdata['user_id'],
+                        'to_from_id' => $groupResult,
+                        'talk_mode' => 2,
+                        'created_at' => Date('Y-m-d H:i:s'),
+                        'updated_at' => Date('Y-m-d H:i:s'),
+                    ];
+                    $talk_session_result = GroupTalkImp::insertGetId($talk_session);
+                    $group_id = $groupResult;
                 } else {
                     $group_id = $topdata['group_id'];
                 }
@@ -943,7 +1037,6 @@ class ChatService implements ChatServiceInterface
                 //更新result的 group_id
                 $datas['group_id'] = $group_id;
                 ChatTopic::where(['id' => $data['id']])->update($datas);
-
                 //插入一条消息
                 $chatRecordsData = [
                     'user_id' => $topdata['user_id'],
@@ -956,11 +1049,20 @@ class ChatService implements ChatServiceInterface
                     '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();
+                    //直接删除imp
+                    GroupImp::where('id', $topdata['group_id'])->delete();
+                    GroupMemberImp::where('group_id', $topdata['group_id'])->delete();
+                    GroupTalkImp::where('to_from_id', $topdata['group_id'])->delete();
+                    //删除group_id
+                    ChatTopic::where('id', $topdata['id'])->update(['group_id' => 0]);
                 }
             }
             if ($data['status'] == 2) {
@@ -1261,29 +1363,29 @@ class ChatService implements ChatServiceInterface
      */
     public function getBusinessDistrictList(array $data): array
     {
-        $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(['chat_groups_members.user_id' => $data['user_id']])
+        $query = GroupMemberImp::Join('hyperf.chat_topics', 'hyperf.chat_topics.group_id', '=', 'imp.group_member.group_id')
+            ->leftJoin('hyperf.chat_topic_class', 'hyperf.chat_topic_class.id', '=', 'hyperf.chat_topics.type')
+            ->where(['imp.group_member.user_id' => $data['user_id']])
             ->when($data, function ($query) use ($data) {
                 if (!empty($data['type'])) {
-                    $query->where(['chat_topics.type' => $data['type']]);
+                    $query->where(['hyperf.chat_topics.type' => $data['type']]);
                 }
                 if (!empty($data['title'])) {
-                    $query->where('chat_topics.title', 'like', '%' . $data['title'] . '%');
+                    $query->where('hyperf.chat_topics.title', 'like', '%' . $data['title'] . '%');
                 }
                 if (!empty($data['created_at'])) {
-                    $query->whereDate('chat_topics.created_at', $data['created_at']);
+                    $query->whereDate('hyperf.chat_topics.created_at', $data['created_at']);
                 }
             })
             ->select(
-                'chat_topics.id',
-                'chat_topics.title',
-                'chat_topics.author',
-                'chat_topics.created_at',
-                'chat_topics.updated_at',
-                'chat_topic_class.topicname',
+                'hyperf.chat_topics.id',
+                'hyperf.chat_topics.title',
+                'hyperf.chat_topics.author',
+                'hyperf.chat_topics.created_at',
+                'hyperf.chat_topics.updated_at',
+                'hyperf.chat_topic_class.topicname',
             )
-            ->orderBy('chat_topics.created_at', 'desc');
+            ->orderBy('hyperf.chat_topics.created_at', 'desc');
         $total = $query->count();
         $list = $query->forPage($data['page'], $data['page_size'])->get();
         $result = [

+ 28 - 0
app/Model/GroupImp.php

@@ -0,0 +1,28 @@
+<?php
+
+declare(strict_types=1);
+
+namespace App\Model;
+
+use Hyperf\DbConnection\Model\Model;
+
+/**
+ */
+class GroupImp extends Model
+{
+    /**
+     * The table associated with the model.
+     */
+    protected ?string $connection = 'imp';
+    protected ?string $table = 'group';
+
+    /**
+     * The attributes that are mass assignable.
+     */
+    protected array $fillable = [];
+
+    /**
+     * The attributes that should be cast to native types.
+     */
+    protected array $casts = [];
+}

+ 28 - 0
app/Model/GroupMemberImp.php

@@ -0,0 +1,28 @@
+<?php
+
+declare(strict_types=1);
+
+namespace App\Model;
+
+use Hyperf\DbConnection\Model\Model;
+
+/**
+ */
+class GroupMemberImp extends Model
+{
+    /**
+     * The table associated with the model.
+     */
+    protected ?string $connection = 'imp';
+    protected ?string $table = 'group_member';
+
+    /**
+     * The attributes that are mass assignable.
+     */
+    protected array $fillable = [];
+
+    /**
+     * The attributes that should be cast to native types.
+     */
+    protected array $casts = [];
+}

+ 28 - 0
app/Model/GroupTalkImp.php

@@ -0,0 +1,28 @@
+<?php
+
+declare(strict_types=1);
+
+namespace App\Model;
+
+use Hyperf\DbConnection\Model\Model;
+
+/**
+ */
+class GroupTalkImp extends Model
+{
+    /**
+     * The table associated with the model.
+     */
+    protected ?string $connection = 'imp';
+    protected ?string $table = 'talk_session';
+
+    /**
+     * The attributes that are mass assignable.
+     */
+    protected array $fillable = [];
+
+    /**
+     * The attributes that should be cast to native types.
+     */
+    protected array $casts = [];
+}