perf: 优化任务到期前后邮件提醒
This commit is contained in:
@@ -1264,55 +1264,4 @@ class ProjectTask extends AbstractModel
|
||||
//
|
||||
return $task;
|
||||
}
|
||||
|
||||
/**
|
||||
* 预超期任务提醒
|
||||
* @param $task
|
||||
*/
|
||||
public static function overdueRemindEmail($task)
|
||||
{
|
||||
$ownerIds = ProjectTaskUser::whereTaskId($task['id'])->whereOwner(1)->pluck('userid')->toArray();
|
||||
$users = User::whereIn('userid', $ownerIds)->get();
|
||||
if (!$users) {
|
||||
throw new ApiException("ProjectTask::overdueRemindEmail--没有负责人");
|
||||
}
|
||||
$type = $task['end_at'] < Carbon::now() ? 2 : 1;
|
||||
$setting = Base::setting('emailSetting');
|
||||
$hours = floatval($setting['task_remind_hours']);
|
||||
$hours2 = floatval($setting['task_remind_hours2']);
|
||||
$time = $type === 1 ? $hours : $hours2;
|
||||
UserEmailVerification::initMailConfig();
|
||||
foreach ($users as $user) {
|
||||
/** @var User $user */
|
||||
if (ProjectTaskMailLog::whereTaskId($task['id'])->whereUserid($user->userid)->whereType($type)->whereIsSend(1)->exists()) {
|
||||
return;
|
||||
}
|
||||
$email = $user->email;
|
||||
$isSend = 1;
|
||||
try {
|
||||
$emailContent = [
|
||||
'name' => $task['name'],
|
||||
'time' => $time,
|
||||
'type' => $type
|
||||
];
|
||||
Mail::send('taskOverdueRemind', $emailContent, function ($m) use ($email) {
|
||||
$m->from(Config::get("mail.mailers.smtp.username"), env('APP_NAME'));
|
||||
$m->to($email);
|
||||
$m->subject("任务提醒");
|
||||
});
|
||||
} catch (\Exception $e) {
|
||||
$isSend = 0;
|
||||
\Log::error($email . '--邮箱发送报错:', [$e->getMessage()]);
|
||||
}
|
||||
$logData = [
|
||||
'userid' => $user->userid,
|
||||
'task_id' => $task['id'],
|
||||
'email' => $email,
|
||||
'type' => $type,
|
||||
'is_send' => $isSend,
|
||||
];
|
||||
$emailLog = ProjectTaskMailLog::whereTaskId($task['id'])->whereUserid($user->userid)->whereType($type)->first();
|
||||
ProjectTaskMailLog::createInstance($logData, $emailLog->id ?? null)->save();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user