Skip to content

Commit 5bbc1f8

Browse files
committed
消息增加是否组消息字段
1 parent 3d9395a commit 5bbc1f8

5 files changed

Lines changed: 75 additions & 8 deletions

File tree

app/Controller/Laboratory/Ws/FriendController.php

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -52,6 +52,7 @@ public function sendMessage()
5252
'content' => $contactData['content'],
5353
'toContactId' => $contactData['fromUser']['id'],
5454
'fromUser' => $contactData['fromUser'],
55+
'isGroup' => false,
5556
],
5657
'event' => ''
5758
],
@@ -95,6 +96,7 @@ public function pullMessage()
9596
'toContactId' => $value['to_uid'],
9697
'fileSize' => $value['file_size'],
9798
'fileName' => $value['file_name'],
99+
'isGroup' => false,
98100
'fromUser' => [
99101
'id' => $value['from_uid'],
100102
'avatar' => User::query()->where('id', $value['from_uid'])->value('avatar'),

app/Controller/Laboratory/Ws/GroupController.php

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -66,6 +66,7 @@ public function sendMessage()
6666
'content' => $contactData['content'],
6767
'toContactId' =>$contactData['toContactId'],
6868
'fromUser' => $contactData['fromUser'],
69+
'isGroup' => true,
6970
],
7071
],
7172
'fd' => $fdList
@@ -100,6 +101,7 @@ public function pullMessage()
100101
'toContactId' => $value['to_group_id'],
101102
'fileSize' => $value['file_size'],
102103
'fileName' => $value['file_name'],
104+
'isGroup' => true,
103105
];
104106
if ($value['from_uid'] != 0) $temp['fromUser'] = [
105107
'id' => $value['from_uid'],

app/Controller/Laboratory/Ws/MessageController.php

Lines changed: 30 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -25,27 +25,53 @@
2525
class MessageController extends AbstractController
2626
{
2727
/**
28-
* 发送信息
28+
* 合并转发信息
29+
* @RequestMapping(path="merge_forward_message",methods="POST")
30+
*/
31+
public function mergeForwardMessage()
32+
{
33+
$chatMessage = MessageParser::decode(conGet('chat_message'));
34+
$contactData = $chatMessage['message'];
35+
36+
$content = json_encode($contactData['message']);
37+
$user = $contactData['user'];
38+
foreach ($contactData['contact'] as $item) {
39+
if ($item['is_group'] == 1) {
40+
$groupInfo = Group::query()->where('group_id', $item['id'])->first();
41+
if (empty($groupInfo)) continue;
42+
$groupInfo = objToArray($groupInfo);
43+
$this->container->get(GroupWsTask::class)->mergeForwardMessage($groupInfo, $user, $content);
44+
}else {
45+
$userInfo = User::query()->where('id', $item['id'])->first();
46+
if (empty($userInfo)) continue;
47+
$userInfo = objToArray($userInfo);
48+
$this->container->get(FriendWsTask::class)->mergeForwardMessage($userInfo, $user, $content);
49+
}
50+
}
51+
}
52+
53+
/**
54+
* 合并转发信息
2955
* @RequestMapping(path="forward_message",methods="POST")
3056
*/
3157
public function forwardMessage()
3258
{
3359
$chatMessage = MessageParser::decode(conGet('chat_message'));
3460
$contactData = $chatMessage['message'];
3561

36-
$content = json_encode($contactData['message']);
3762
$user = $contactData['user'];
3863
foreach ($contactData['contact'] as $item) {
3964
if ($item['is_group'] == 1) {
4065
$groupInfo = Group::query()->where('group_id', $item['id'])->first();
66+
var_dump($groupInfo);
4167
if (empty($groupInfo)) continue;
4268
$groupInfo = objToArray($groupInfo);
43-
$this->container->get(GroupWsTask::class)->forwardMessage($groupInfo, $user, $content);
69+
$this->container->get(GroupWsTask::class)->forwardMessage($groupInfo, $user, $contactData['message']);
4470
}else {
4571
$userInfo = User::query()->where('id', $item['id'])->first();
4672
if (empty($userInfo)) continue;
4773
$userInfo = objToArray($userInfo);
48-
$this->container->get(FriendWsTask::class)->forwardMessage($userInfo, $user, $content);
74+
$this->container->get(FriendWsTask::class)->forwardMessage($userInfo, $user, $contactData['message']);
4975
}
5076
}
5177
}

app/Task/Laboratory/FriendWsTask.php

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -64,13 +64,13 @@ public function friendOnlineAndOfflineNotify(array $userInfo, string $event, boo
6464
}
6565

6666
/**
67-
* 转发信息
67+
* 合并转发信息
6868
* @param array $userInfo
6969
* @param array $user
7070
* @param string $content
7171
* @return bool
7272
*/
73-
function forwardMessage(array $userInfo, array $user, string $content)
73+
function mergeForwardMessage(array $userInfo, array $user, string $content)
7474
{
7575
//添加聊天记录
7676
$message = [];
@@ -83,6 +83,7 @@ function forwardMessage(array $userInfo, array $user, string $content)
8383
$message['content'] = $content;
8484
$message['toContactId'] = $userInfo['id'];
8585
$message['fromUser'] = $user;
86+
$message['isGroup'] = false;
8687
$contactId = Redis::getInstance()->hget(ChatRedisKey::ONLINE_USER_FD_KEY, (string)$userInfo['id']);
8788
$fromUserFd = Redis::getInstance()->hget(ChatRedisKey::ONLINE_USER_FD_KEY, (string)$user['id']);
8889
$receptionState = empty($contactId) ? FriendChatHistory::RECEPTION_STATE_NO : FriendChatHistory::RECEPTION_STATE_YES;

app/Task/Laboratory/GroupWsTask.php

Lines changed: 38 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -297,13 +297,13 @@ public function changeGroupAvatar(array $groupInfo)
297297
}
298298

299299
/**
300-
* 转发信息
300+
* 合并转发信息
301301
* @param array $groupInfo
302302
* @param array $user
303303
* @param string $content
304304
* @return bool
305305
*/
306-
function forwardMessage(array $groupInfo, array $user, string $content)
306+
function mergeForwardMessage(array $groupInfo, array $user, string $content)
307307
{
308308
//添加聊天记录
309309
$message = [];
@@ -326,6 +326,41 @@ function forwardMessage(array $groupInfo, array $user, string $content)
326326
return true;
327327
}
328328

329+
/**
330+
* 逐条转发信息
331+
* @param array $groupInfo
332+
* @param array $user
333+
* @param array $content
334+
* @return bool
335+
*/
336+
function forwardMessage(array $groupInfo, array $user, array $content)
337+
{
338+
if (is_array($content)) {
339+
foreach ($content as $item) {
340+
var_dump($item);
341+
// //添加聊天记录
342+
// $message = [];
343+
// $message['id'] = generate_rand_id();
344+
// $message['from_uid'] = $user['id'];
345+
// $message['to_group_id'] = $groupInfo['group_id'];
346+
// $message['type'] = GroupChatHistory::GROUP_CHAT_MESSAGE_TYPE_FORWARD;
347+
// $message['status'] = GroupChatHistory::GROUP_CHAT_MESSAGE_STATUS_SUCCEED;
348+
// $message['sendTime'] = time() * 1000;
349+
// $message['content'] = $content;
350+
// $message['toContactId'] = $groupInfo['group_id'];
351+
// $message['fromUser'] = $user;
352+
//
353+
// //获取不在线用户,并添加到未读历史消息中
354+
// $unOnlineUidList = GroupService::getInstance()->getUnOnlineGroupMember($groupInfo['group_id']);
355+
// foreach ($unOnlineUidList as $uid) {
356+
// Redis::getInstance()->sAdd(ChatRedisKey::GROUP_CHAT_UNREAD_MESSAGE_BY_USER . $uid, $groupInfo['group_id']);
357+
// }
358+
// $this->sendMessage($groupInfo['group_id'], $message, GroupEvent::FORWARD_MESSAGE);
359+
return true;
360+
}
361+
}
362+
}
363+
329364
/**
330365
* 组消息发送
331366
* @param string $groupId
@@ -340,6 +375,7 @@ public function sendMessage(string $groupId, array $message, $event = '')
340375
$message['fromUser']['id'] = 0;
341376
$message['fromUser']['displayName'] = '系统通知';
342377
}
378+
$message['isGroup'] = true;
343379
//添加聊天记录
344380
GroupChatHistory::addMessage($message, 1);
345381
$uidFdList = GroupService::getInstance()->getOnlineGroupMemberFd($groupId);

0 commit comments

Comments
 (0)