1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859 |
- <?php
- namespace General\Jobs;
- use General\Helpers\AliOSSHelper;
- use General\Helpers\ExcelHelper;
- use General\Services\Export\AbstractDataExportHandle;
- use General\Services\Export\AbstractExportTask;
- use Illuminate\Bus\Queueable;
- use Illuminate\Queue\SerializesModels;
- use Illuminate\Queue\InteractsWithQueue;
- use Illuminate\Contracts\Queue\ShouldQueue;
- use Illuminate\Foundation\Bus\Dispatchable;
- class ExportTaskJob implements ShouldQueue
- {
- use Dispatchable, InteractsWithQueue, Queueable, SerializesModels;
- private $task;
- private $export_handle;
- /**
- * Create a new job instance.
- *
- * @return void
- */
- public function __construct(AbstractExportTask $task, AbstractDataExportHandle $handle)
- {
- $this->task = $task;
- $this->export_handle = $handle;
- }
- /**
- * Execute the job.
- *
- * @return void
- */
- public function handle()
- {
- $task_model = $this->task->getModel();
- $this->task->setStatus(AbstractExportTask::running);
- $data = $this->export_handle->getExportData();
- $headers = $this->export_handle->getHeaders();
- $file_name = md5($task_model->id . strtotime($task_model->created_at)) . ".csv";
- $local_path = storage_path('tmp');
- ExcelHelper::saveFileCsv($headers, $data, $file_name, $local_path);
- $oss_service = new AliOSSHelper;
- $oss_path = $oss_service->uploadFile("reports", $local_path);
- unlink($local_path . '/' . $file_name);
- if ($oss_path) {
- $task_model->file_path = $oss_path;
- $this->task->setModel($task_model);
- $this->task->setStatus(AbstractExportTask::complete);
- } else {
- $this->task->setStatus(AbstractExportTask::failure);
- }
- $task_model->save();
- }
- }
|