Excel 输出后,我想向此人的手机号码发送一条短信,其中包含在 Excel 中输入的日期 5 天前的日期。
我还使用了 job 命令。
控制器.php
public function import(Request $request)
{
Excel::import(new OtherImport, $request->file('file')->store('temp'));
$insuranceData = Other::query()->select('personal_insurance', 'mobile')->get();
$sentMobileNumbers = [];
foreach ($insuranceData as $data) {
$insuranceDate = $data->personal_insurance;
$mobileNumber = $data->mobile;
if (!empty($insuranceDate) && !in_array($mobileNumber, $sentMobileNumbers)) {
try {
$jalaliDate = Jalalian::fromFormat('Y/m/d', $insuranceDate);
$carbonDate = Carbon::create($jalaliDate->getYear(), $jalaliDate->getMonth(), $jalaliDate->getDay());
$smsDate = $carbonDate->subDay(5);
if ($smsDate->isPast()) {
SendSmsJob::dispatch([$mobileNumber]);
$sentMobileNumbers[] = $mobileNumber;
}
} catch (\Exception $e) {
dd($e->getMessage());
}
}
}
return back();
}
解决方案可能是将有延迟的作业发送到队列。然后使用
smsDate
变量。我建议还设置一个时间,在客户方便的时间触发短信发送。