Skip to content

Commit 1e170a6

Browse files
committed
完成转发消息
1 parent 5bbc1f8 commit 1e170a6

7 files changed

Lines changed: 79 additions & 26 deletions

File tree

app/Controller/Laboratory/FriendController.php

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -69,6 +69,7 @@ public function historyMessage()
6969
'type' => $value['type'],
7070
'fileSize' => $value['file_size'],
7171
'fileName' => $value['file_name'],
72+
'fileExt' => $value['file_ext'],
7273
'sendTime' => date('Y-m-d', $sendTime) == date('Y-m-d') ? date('H:i:s', $sendTime) : date('Y-m-d, H:i:s', $sendTime) ,
7374
'content' => $value['content'],
7475
'avatar' => User::query()->where('id', $value['from_uid'])->value('avatar'),

app/Controller/Laboratory/Ws/FriendController.php

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -96,6 +96,7 @@ public function pullMessage()
9696
'toContactId' => $value['to_uid'],
9797
'fileSize' => $value['file_size'],
9898
'fileName' => $value['file_name'],
99+
'fileExt' => $value['file_ext'],
99100
'isGroup' => false,
100101
'fromUser' => [
101102
'id' => $value['from_uid'],

app/Controller/Laboratory/Ws/MessageController.php

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,7 @@ public function mergeForwardMessage()
5151
}
5252

5353
/**
54-
* 合并转发信息
54+
* 转发信息
5555
* @RequestMapping(path="forward_message",methods="POST")
5656
*/
5757
public function forwardMessage()
@@ -63,7 +63,6 @@ public function forwardMessage()
6363
foreach ($contactData['contact'] as $item) {
6464
if ($item['is_group'] == 1) {
6565
$groupInfo = Group::query()->where('group_id', $item['id'])->first();
66-
var_dump($groupInfo);
6766
if (empty($groupInfo)) continue;
6867
$groupInfo = objToArray($groupInfo);
6968
$this->container->get(GroupWsTask::class)->forwardMessage($groupInfo, $user, $contactData['message']);
@@ -75,6 +74,5 @@ public function forwardMessage()
7574
}
7675
}
7776
}
78-
7977
}
8078

app/Model/Laboratory/FriendChatHistory.php

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -78,6 +78,7 @@ static function addMessage(array $message, int $receptionState = 0)
7878
$model->content = $message['content'];
7979
$model->file_size = $message['fileSize'] ?? 0;
8080
$model->file_name = $message['fileName'] ?? '';
81+
$model->file_ext = $message['fileExt'] ?? '';
8182
$model->to_uid = $message['toContactId'];
8283
$model->from_uid = $message['fromUser']['id'] ?? 0;
8384
$model->reception_state = $receptionState;

app/Process/TimedTaskProcess.php

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -76,7 +76,6 @@ private function recordTaskLog(bool $result, array $task, $errorInfo = '')
7676
}else {
7777
TimedTask::updateNextExecuteTime($task['id']);
7878
}
79-
var_dump(1);
8079
return $timedTaskLog->save();
8180

8281
}

app/Task/Laboratory/FriendWsTask.php

Lines changed: 49 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,11 +4,10 @@
44
namespace App\Task\Laboratory;
55

66
use App\Constants\Laboratory\ChatRedisKey;
7-
use App\Constants\Laboratory\GroupEvent;
87
use App\Constants\Laboratory\WsMessage;
98
use App\Model\Laboratory\FriendChatHistory;
109
use App\Model\Laboratory\FriendRelation;
11-
use App\Model\Laboratory\GroupRelation;
10+
use App\Model\Laboratory\GroupChatHistory;
1211
use App\Pool\Redis;
1312
use App\Service\Laboratory\FriendService;
1413
use App\Service\Laboratory\MessageService;
@@ -99,4 +98,52 @@ function mergeForwardMessage(array $userInfo, array $user, string $content)
9998
$this->sender->push((int) $fromUserFd, json_encode($sendMessage));
10099
return true;
101100
}
101+
102+
/**
103+
* 逐条转发信息
104+
* @param array $userInfo
105+
* @param array $user
106+
* @param array $content
107+
* @return bool
108+
*/
109+
function forwardMessage(array $userInfo, array $user, array $content)
110+
{
111+
if (is_array($content)) {
112+
foreach ($content as $item) {
113+
$messageSource = $item['is_group'] == true ? GroupChatHistory::query()->where('message_id', $item['id'])->first() : FriendChatHistory::query()->where('message_id', $item['id'])->first();
114+
$messageSource = objToArray($messageSource);
115+
if (empty($messageSource)) continue;
116+
//添加聊天记录
117+
$message = [];
118+
$message['id'] = generate_rand_id();
119+
$message['from_uid'] = $user['id'];
120+
$message['to_uid'] = $userInfo['id'];
121+
$message['type'] = $messageSource['type'];
122+
$message['status'] = GroupChatHistory::GROUP_CHAT_MESSAGE_STATUS_SUCCEED;
123+
$message['sendTime'] = time() * 1000;
124+
$message['content'] = $messageSource['content'];
125+
$message['toContactId'] = $userInfo['id'];
126+
$message['fromUser'] = $user;
127+
$message['fileSize'] = $messageSource['file_size'];
128+
$message['fileName'] = $messageSource['file_name'];
129+
$message['fileExt'] = $messageSource['file_ext'];
130+
$message['isGroup'] = false;
131+
$contactId = Redis::getInstance()->hget(ChatRedisKey::ONLINE_USER_FD_KEY, (string)$userInfo['id']);
132+
$fromUserFd = Redis::getInstance()->hget(ChatRedisKey::ONLINE_USER_FD_KEY, (string)$user['id']);
133+
$receptionState = empty($contactId) ? FriendChatHistory::RECEPTION_STATE_NO : FriendChatHistory::RECEPTION_STATE_YES;
134+
135+
//添加消息记录
136+
FriendChatHistory::addMessage($message, $receptionState);
137+
if ($message['type'] == FriendChatHistory::FRIEND_CHAT_MESSAGE_TYPE_FORWARD) $message['content'] = MessageService::getInstance()->formatForwardMessage($message['content'], $message['fromUser']);
138+
139+
$sendMessage = [
140+
'message' => $message,
141+
];
142+
$this->sender->push((int) $contactId, json_encode($sendMessage));
143+
$this->sender->push((int) $fromUserFd, json_encode($sendMessage));
144+
}
145+
return true;
146+
}
147+
}
148+
102149
}

app/Task/Laboratory/GroupWsTask.php

Lines changed: 26 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
use App\Constants\Laboratory\GroupEvent;
88
use App\Foundation\Utils\GroupAvatar;
99
use App\Model\Auth\User;
10+
use App\Model\Laboratory\FriendChatHistory;
1011
use App\Model\Laboratory\Group;
1112
use App\Model\Laboratory\GroupChatHistory;
1213
use App\Model\Laboratory\GroupRelation;
@@ -337,27 +338,32 @@ function forwardMessage(array $groupInfo, array $user, array $content)
337338
{
338339
if (is_array($content)) {
339340
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;
341+
$messageSource = $item['is_group'] == true ? GroupChatHistory::query()->where('message_id', $item['id'])->first() : FriendChatHistory::query()->where('message_id', $item['id'])->first();
342+
$messageSource = objToArray($messageSource);
343+
if (empty($messageSource)) continue;
344+
//添加聊天记录
345+
$message = [];
346+
$message['id'] = generate_rand_id();
347+
$message['from_uid'] = $user['id'];
348+
$message['to_group_id'] = $groupInfo['group_id'];
349+
$message['type'] = $messageSource['type'];
350+
$message['status'] = GroupChatHistory::GROUP_CHAT_MESSAGE_STATUS_SUCCEED;
351+
$message['sendTime'] = time() * 1000;
352+
$message['content'] = $messageSource['content'];
353+
$message['toContactId'] = $groupInfo['group_id'];
354+
$message['fromUser'] = $user;
355+
$message['fileSize'] = $messageSource['file_size'];
356+
$message['fileName'] = $messageSource['file_name'];
357+
$message['fileExt'] = $messageSource['file_ext'];
358+
359+
//获取不在线用户,并添加到未读历史消息中
360+
$unOnlineUidList = GroupService::getInstance()->getUnOnlineGroupMember($groupInfo['group_id']);
361+
foreach ($unOnlineUidList as $uid) {
362+
Redis::getInstance()->sAdd(ChatRedisKey::GROUP_CHAT_UNREAD_MESSAGE_BY_USER . $uid, $groupInfo['group_id']);
363+
}
364+
$this->sendMessage($groupInfo['group_id'], $message, GroupEvent::FORWARD_MESSAGE);
360365
}
366+
return true;
361367
}
362368
}
363369

0 commit comments

Comments
 (0)