perf: 优化邮件通知

This commit is contained in:
kuaifan 2024-12-02 08:46:40 +08:00
parent b45058de72
commit aa1ea41c5d

View File

@ -106,9 +106,9 @@ class EmailNoticeTask extends AbstractTask
->groupBy('web_socket_dialog_msg_reads.userid'); ->groupBy('web_socket_dialog_msg_reads.userid');
// 分批处理用户的未读消息 // 分批处理用户的未读消息
$query->chunk(self::CHUNK_SIZE, function($users) use ($dialogType, $startTime, $endTime) { $query->chunk(self::CHUNK_SIZE, function($users) use ($dialogType) {
foreach ($users as $userData) { foreach ($users as $userData) {
$this->sendUserEmail($userData->userid, $dialogType, $startTime, $endTime); $this->sendUserEmail($userData->userid, $dialogType);
} }
}); });
@ -121,7 +121,7 @@ class EmailNoticeTask extends AbstractTask
/** /**
* 发送用户的未读消息邮件 * 发送用户的未读消息邮件
*/ */
private function sendUserEmail(int $userId, string $dialogType, Carbon $startTime, Carbon $endTime): void private function sendUserEmail(int $userId, string $dialogType): void
{ {
// 验证用户 // 验证用户
$user = User::whereDisableAt(null)->find($userId); $user = User::whereDisableAt(null)->find($userId);
@ -130,7 +130,7 @@ class EmailNoticeTask extends AbstractTask
} }
// 获取未读消息 // 获取未读消息
$messages = $this->getUnreadMessages($userId, $dialogType, $startTime, $endTime); $messages = $this->getUnreadMessages($userId, $dialogType);
if ($messages->isEmpty()) { if ($messages->isEmpty()) {
return; return;
} }
@ -156,7 +156,7 @@ class EmailNoticeTask extends AbstractTask
/** /**
* 获取用户的未读消息 * 获取用户的未读消息
*/ */
private function getUnreadMessages($userId, $dialogType, Carbon $startTime, Carbon $endTime) private function getUnreadMessages($userId, $dialogType)
{ {
return WebSocketDialogMsg::select([ return WebSocketDialogMsg::select([
'web_socket_dialog_msgs.*', 'web_socket_dialog_msgs.*',
@ -171,7 +171,6 @@ class EmailNoticeTask extends AbstractTask
'web_socket_dialog_msgs.dialog_type' => $dialogType 'web_socket_dialog_msgs.dialog_type' => $dialogType
]) ])
->whereNull('r.read_at') ->whereNull('r.read_at')
->whereBetween('web_socket_dialog_msgs.created_at', [$startTime, $endTime])
->whereIn('web_socket_dialog_msgs.type', self::ALLOWED_MSG_TYPES) ->whereIn('web_socket_dialog_msgs.type', self::ALLOWED_MSG_TYPES)
->orderBy('web_socket_dialog_msgs.created_at') ->orderBy('web_socket_dialog_msgs.created_at')
->limit(self::CHUNK_SIZE) ->limit(self::CHUNK_SIZE)