124 lines
4.2 KiB
PHP
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;
|
|
}
|
|
}
|
|
|
|
}
|