From 2ae9362179819ef77692ef4d057642c72ce2f1f1 Mon Sep 17 00:00:00 2001 From: Jing Li Date: Mon, 29 Apr 2024 23:23:28 +0800 Subject: [PATCH] =?UTF-8?q?=E7=AB=99=E5=86=85=E6=B6=88=E6=81=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Services/Train/ExaminationService.php | 23 +++++++--------- .../CreateWorkflowCheckFailedMessage.php | 19 +++++++++++--- .../CreateWorkflowCheckNextMessage.php | 2 +- .../CreateWorkflowCheckSuccessMessage.php | 9 ++++++- app/Traits/UploadTrait.php | 26 +++++++++++++++---- 5 files changed, 55 insertions(+), 24 deletions(-) diff --git a/app/Admin/Services/Train/ExaminationService.php b/app/Admin/Services/Train/ExaminationService.php index 2849cff..bed63f8 100644 --- a/app/Admin/Services/Train/ExaminationService.php +++ b/app/Admin/Services/Train/ExaminationService.php @@ -86,27 +86,22 @@ class ExaminationService extends BaseService $employees = Employee::whereIn('id', $ids)->get(); // 为员工生成考卷 foreach ($employees as $employee) { - $examination->papers()->create([ + $paper = $examination->papers()->create([ 'employee_id' => $employee->id, 'content' => $questions, ]); + + (new MessageService())->create( + MessageType::Exam, + '考试通知', + '您有一张待完成试卷,请尽快完成考试。', + [$employee], + ['paper' => ['id' => $paper->id]], + ); } $examination->update(['exam_status' => ExamStatus::Published, 'published_at' => now()]); - (new MessageService())->create( - MessageType::Exam, - '考试通知', - '您有一张待完成试卷,请尽快完成考试。', - $employees->all(), - [ - 'examination' => [ - 'id' => $examination->id, - 'name' => $examination->name, - ], - ] - ); - return true; } diff --git a/app/Listeners/CreateWorkflowCheckFailedMessage.php b/app/Listeners/CreateWorkflowCheckFailedMessage.php index d4701f3..93a3102 100644 --- a/app/Listeners/CreateWorkflowCheckFailedMessage.php +++ b/app/Listeners/CreateWorkflowCheckFailedMessage.php @@ -4,6 +4,12 @@ namespace App\Listeners; use App\Enums\MessageType; use App\Events\WorkflowCheckFailed; +use App\Models\EmployeePromotion; +use App\Models\EmployeeSignRepair; +use App\Models\HolidayApply; +use App\Models\OfficalBusiness; +use App\Models\OvertimeApply; +use App\Models\Reimbursement; use App\Services\MessageService; use Illuminate\Contracts\Queue\ShouldQueue; use Illuminate\Queue\InteractsWithQueue; @@ -29,7 +35,11 @@ class CreateWorkflowCheckFailedMessage implements ShouldQueue return; } - if (is_null($event->workflowCheck->employee)) { + if (is_null($employee = $event->workflowCheck->employee)) { + return; + } + + if (is_null($subject = $event->workflowCheck->subject)) { return; } @@ -37,8 +47,11 @@ class CreateWorkflowCheckFailedMessage implements ShouldQueue MessageType::Approval, '审批提醒', "您有一条【{$subjectTypeText}】未通过审核。", - [$event->workflowCheck->employee], - ['workflow_check' => $event->workflowCheck], + [$employee], + [ + 'subject_type' => $subject->subject_type, + 'subject' => $subject, + ], ); } } diff --git a/app/Listeners/CreateWorkflowCheckNextMessage.php b/app/Listeners/CreateWorkflowCheckNextMessage.php index 687098d..d587a66 100644 --- a/app/Listeners/CreateWorkflowCheckNextMessage.php +++ b/app/Listeners/CreateWorkflowCheckNextMessage.php @@ -55,7 +55,7 @@ class CreateWorkflowCheckNextMessage implements ShouldQueue '审批提醒', "您有一条【{$subjectTypeText}】待审批。", $employees->all(), - ['workflow_log' => $event->workflowLog], + ['workflow_log' => $event->workflowLog->withoutRelations()], ); } } diff --git a/app/Listeners/CreateWorkflowCheckSuccessMessage.php b/app/Listeners/CreateWorkflowCheckSuccessMessage.php index 141c0ee..f516b65 100644 --- a/app/Listeners/CreateWorkflowCheckSuccessMessage.php +++ b/app/Listeners/CreateWorkflowCheckSuccessMessage.php @@ -33,12 +33,19 @@ class CreateWorkflowCheckSuccessMessage implements ShouldQueue return; } + if (is_null($subject = $event->workflowCheck->subject)) { + return; + } + $this->messageService->create( MessageType::Approval, '审批提醒', "您有一条【{$subjectTypeText}】已通过审核。", [$event->workflowCheck->employee], - ['workflow_check' => $event->workflowCheck], + [ + 'subject_type' => $subject->getMorphClass(), + 'subject' => $subject, + ], ); } } diff --git a/app/Traits/UploadTrait.php b/app/Traits/UploadTrait.php index f60d603..a47a50c 100644 --- a/app/Traits/UploadTrait.php +++ b/app/Traits/UploadTrait.php @@ -2,10 +2,11 @@ namespace App\Traits; -use Slowlyo\OwlAdmin\Admin; +use Illuminate\Http\UploadedFile; use Illuminate\Support\Arr; -use Illuminate\Support\Str; use Illuminate\Support\Facades\Storage; +use Illuminate\Support\Str; +use Slowlyo\OwlAdmin\Admin; trait UploadTrait { @@ -61,7 +62,7 @@ trait UploadTrait return $this->response()->fail(__('admin.upload_file_error')); } - $path = $file->store(Admin::config('admin.upload.tem_directory.'.$type).'/'.date('Y-m-d'), Admin::config('admin.upload.disk')); + $path = $file->storeAs(Admin::config('admin.upload.tem_directory.'.$type).'/'.date('Ymd'), $this->hashFilename($file), Admin::config('admin.upload.disk')); if (request()->has('full-url')) { $path = Storage::disk(Admin::config('admin.upload.disk'))->url($path); } @@ -80,7 +81,7 @@ trait UploadTrait public function saveFile($field = 'file', $path) { $file = request()->file($field); - + if (!$file) { $file = request()->get($field); } @@ -220,4 +221,19 @@ trait UploadTrait return $this->response()->fail(__('admin.upload_file_error')); } } -} \ No newline at end of file + + protected function hashFilename(UploadedFile $file): string + { + $hash = Str::random(40); + + $extension = ''; + + if ($originalExtension = $file->getClientOriginalExtension()) { + $extension = '.'.$originalExtension; + } elseif ($guessExtension = $this->guessExtension()) { + $extension = '.'.$guessExtension; + } + + return $hash.$extension; + } +}