so-manager-dev.com/app/Console/Commands/ShjMailSendCommand.php
Your Name 10a917b556
All checks were successful
Deploy so-manager (auto) / deploy (push) Successful in 24s
【更新】SHJ関連の修正
2025-10-10 19:55:46 +09:00

124 lines
4.2 KiB
PHP

<?php
namespace App\Console\Commands;
use Illuminate\Console\Command;
use Illuminate\Support\Facades\Log;
use App\Services\ShjMailSendService;
/**
* SHJ メール送信処理コマンド
*
* メールテンプレートを使用したメール送信処理を実行する
* バックグラウンドで実行される定期バッチ処理
*/
class ShjMailSendCommand extends Command
{
/**
* コンソールコマンドの名前とシグネチャ
*
* 引数:
* - mail_address: メールアドレス (必須)
* - backup_mail_address: 予備メールアドレス (必須)
* - mail_template_id: メールテンプレートID (必須)
*
* @var string
*/
protected $signature = 'shj:mail-send {mail_address : メールアドレス} {backup_mail_address : 予備メールアドレス} {mail_template_id : メールテンプレートID}';
/**
* コンソールコマンドの説明
*
* @var string
*/
protected $description = 'SHJ メール送信処理 - テンプレートに基づくメール送信を実行';
/**
* SHJメール送信サービスクラス
*
* @var ShjMailSendService
*/
protected $shjMailSendService;
/**
* コンストラクタ
*
* @param ShjMailSendService $shjMailSendService
*/
public function __construct(ShjMailSendService $shjMailSendService)
{
parent::__construct();
$this->shjMailSendService = $shjMailSendService;
}
/**
* コンソールコマンドを実行
*
* SHJ-7 メール送信処理フロー:
* 【処理1】入力パラメーターをチェックする
* 【判断1】チェック結果
* 【処理2】メール送信テンプレート情報を取得する
* 【判断2】取得結果
* 【処理3】メールを送信する
* 【処理4】処理結果を返却する
*
* @return int
*/
public function handle()
{
try {
// 開始ログ出力
$startTime = now();
$this->info('SHJ-7 メール送信処理を開始します。');
Log::info('SHJ-7 メール送信処理開始', [
'start_time' => $startTime,
'mail_address' => $this->argument('mail_address'),
'backup_mail_address' => $this->argument('backup_mail_address'),
'mail_template_id' => $this->argument('mail_template_id')
]);
// 引数取得
$mailAddress = $this->argument('mail_address');
$backupMailAddress = $this->argument('backup_mail_address');
$mailTemplateId = $this->argument('mail_template_id');
// SHJ-7 メール送信処理実行
$result = $this->shjMailSendService->executeMailSend($mailAddress, $backupMailAddress, $mailTemplateId);
// 【処理4】処理結果を返却する
if ($result['result'] === 0) {
$endTime = now();
$this->info('SHJ-7 メール送信処理が正常に完了しました。');
$this->info("処理時間: {$startTime->diffInSeconds($endTime)}");
Log::info('SHJ-7 メール送信処理完了', [
'end_time' => $endTime,
'duration_seconds' => $startTime->diffInSeconds($endTime),
'result' => $result['result'],
'error_info' => $result['error_info']
]);
return self::SUCCESS;
} else {
$this->error('SHJ-7 メール送信処理でエラーが発生しました: ' . $result['error_info']);
Log::error('SHJ-7 メール送信処理エラー', [
'result' => $result['result'],
'error_info' => $result['error_info']
]);
return self::FAILURE;
}
} catch (\Exception $e) {
$this->error('SHJ-7 メール送信処理で予期しないエラーが発生しました: ' . $e->getMessage());
Log::error('SHJ-7 メール送信処理例外エラー', [
'exception' => $e->getMessage(),
'trace' => $e->getTraceAsString()
]);
return self::FAILURE;
}
}
}