From 4ca6e78619b30bc50f15ffd2a1639e8ee6bdd74c Mon Sep 17 00:00:00 2001 From: Jing Li Date: Wed, 17 Apr 2024 10:27:21 +0800 Subject: [PATCH 1/4] =?UTF-8?q?=E4=B8=8A=E6=8A=A5=E6=95=B0=E6=8D=AE?= =?UTF-8?q?=E4=BB=BB=E5=8A=A1=E5=A2=9E=E5=8A=A0=E5=BA=97=E9=95=BF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/Console/Commands/TaskLedgerGenerateCommand.php | 4 +++- app/Models/TaskLedger.php | 3 ++- .../2024_04_15_081617_create_task_ledgers_table.php | 3 ++- 3 files changed, 7 insertions(+), 3 deletions(-) diff --git a/app/Console/Commands/TaskLedgerGenerateCommand.php b/app/Console/Commands/TaskLedgerGenerateCommand.php index aa01cbb..f6229c0 100644 --- a/app/Console/Commands/TaskLedgerGenerateCommand.php +++ b/app/Console/Commands/TaskLedgerGenerateCommand.php @@ -63,7 +63,7 @@ class TaskLedgerGenerateCommand extends Command return $planable->setRelation('plan', $plan); }); - $stores = Store::all(); + $stores = Store::with(['master'])->all(); /** @var \App\Models\Store */ foreach ($stores as $store) { @@ -71,6 +71,8 @@ class TaskLedgerGenerateCommand extends Command $taskable = TaskLedger::firstOrNew([ 'store_id' => $store->id, 'date' => $planable->date, + ], [ + 'store_master_id' => $store->master?->id, ]); if ($taskable->exists) { diff --git a/app/Models/TaskLedger.php b/app/Models/TaskLedger.php index 3bed357..00a525a 100644 --- a/app/Models/TaskLedger.php +++ b/app/Models/TaskLedger.php @@ -13,8 +13,9 @@ class TaskLedger extends Model use HasFactory, HasDateTimeFormatter; protected $fillable = [ - 'store_id', 'date', + 'store_id', + 'store_master_id', ]; public function task(): MorphOne diff --git a/database/migrations/2024_04_15_081617_create_task_ledgers_table.php b/database/migrations/2024_04_15_081617_create_task_ledgers_table.php index 07b128e..3d9baa5 100644 --- a/database/migrations/2024_04_15_081617_create_task_ledgers_table.php +++ b/database/migrations/2024_04_15_081617_create_task_ledgers_table.php @@ -13,8 +13,9 @@ return new class extends Migration { Schema::create('task_ledgers', function (Blueprint $table) { $table->id(); - $table->foreignId('store_id')->comment('门店ID'); $table->date('date')->comment('日期'); + $table->foreignId('store_id')->comment('门店ID'); + $table->foreignId('store_master_id')->comment('店长'); $table->timestamps(); }); } From a56d03d82298adcaa7ceb01233553061a6b03293 Mon Sep 17 00:00:00 2001 From: Jing Li Date: Wed, 17 Apr 2024 10:28:28 +0800 Subject: [PATCH 2/4] Fix --- app/Console/Commands/TaskLedgerGenerateCommand.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/Console/Commands/TaskLedgerGenerateCommand.php b/app/Console/Commands/TaskLedgerGenerateCommand.php index f6229c0..52e88c9 100644 --- a/app/Console/Commands/TaskLedgerGenerateCommand.php +++ b/app/Console/Commands/TaskLedgerGenerateCommand.php @@ -63,7 +63,7 @@ class TaskLedgerGenerateCommand extends Command return $planable->setRelation('plan', $plan); }); - $stores = Store::with(['master'])->all(); + $stores = Store::with(['master'])->get(); /** @var \App\Models\Store */ foreach ($stores as $store) { From fd5c2c679eadf7732ccea91dad713cc40c59d3a1 Mon Sep 17 00:00:00 2001 From: Jing Li Date: Wed, 17 Apr 2024 10:34:38 +0800 Subject: [PATCH 3/4] =?UTF-8?q?=E6=80=BB=E8=B4=A6=E5=BD=95=E5=85=A5?= =?UTF-8?q?=E4=BB=BB=E5=8A=A1=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/Admin/Controllers/Plan/PlanController.php | 2 +- app/Admin/Controllers/Plan/TaskController.php | 2 +- app/Console/Commands/TaskLedgerGenerateCommand.php | 2 +- app/Models/TaskLedger.php | 5 +++++ 4 files changed, 8 insertions(+), 3 deletions(-) diff --git a/app/Admin/Controllers/Plan/PlanController.php b/app/Admin/Controllers/Plan/PlanController.php index 34cc2ec..24f245b 100644 --- a/app/Admin/Controllers/Plan/PlanController.php +++ b/app/Admin/Controllers/Plan/PlanController.php @@ -178,7 +178,7 @@ class PlanController extends AdminController amis()->TableColumn('name', __('plan.task.name')), amis()->TableColumn('taskable.date', __('plan.task_ledger.date')), amis()->TableColumn('taskable.store.title', __('plan.task_ledger.store')), - amis()->TableColumn('taskable.store.master.name', __('plan.task_ledger.store_master')), + amis()->TableColumn('taskable.store_master.name', __('plan.task_ledger.store_master')), amis()->TableColumn('task_status', __('plan.task.status'))->type('mapping')->map(TaskStatus::labelMap()), amis()->TableColumn('completed_at', __('plan.task.completed_at')), amis()->TableColumn('created_at', __('plan.task.created_at')), diff --git a/app/Admin/Controllers/Plan/TaskController.php b/app/Admin/Controllers/Plan/TaskController.php index 32298d6..f0a81f2 100644 --- a/app/Admin/Controllers/Plan/TaskController.php +++ b/app/Admin/Controllers/Plan/TaskController.php @@ -23,7 +23,7 @@ class TaskController extends AdminController ->with([ 'taskable' => function (MorphTo $morphTo) { $morphTo->morphWith([ - TaskLedger::class => ['store.master'], + TaskLedger::class => ['store', 'storeMaster'], ]); }, ]) diff --git a/app/Console/Commands/TaskLedgerGenerateCommand.php b/app/Console/Commands/TaskLedgerGenerateCommand.php index 52e88c9..84edba3 100644 --- a/app/Console/Commands/TaskLedgerGenerateCommand.php +++ b/app/Console/Commands/TaskLedgerGenerateCommand.php @@ -56,7 +56,7 @@ class TaskLedgerGenerateCommand extends Command $planable->save(); $plan = $planable->plan()->create([ - 'name' => "{$planable->date} 总账录入", + 'name' => "【{$planable->date}】总账录入", 'plan_status' => PlanStatus::Published, ]); diff --git a/app/Models/TaskLedger.php b/app/Models/TaskLedger.php index 00a525a..2be71f8 100644 --- a/app/Models/TaskLedger.php +++ b/app/Models/TaskLedger.php @@ -27,4 +27,9 @@ class TaskLedger extends Model { return $this->belongsTo(Store::class); } + + public function storeMaster(): BelongsTo + { + return $this->belongsTo(Employee::class, 'store_master_id'); + } } From 1dcc10d0d35ae3e79d012342b46e2cc7d2ade0b0 Mon Sep 17 00:00:00 2001 From: Jing Li Date: Wed, 17 Apr 2024 13:13:05 +0800 Subject: [PATCH 4/4] Update --- app/Admin/Controllers/AdminController.php | 21 ++++++++++++++------- app/Exceptions/Handler.php | 2 ++ 2 files changed, 16 insertions(+), 7 deletions(-) diff --git a/app/Admin/Controllers/AdminController.php b/app/Admin/Controllers/AdminController.php index ef2bc15..6a2daaf 100644 --- a/app/Admin/Controllers/AdminController.php +++ b/app/Admin/Controllers/AdminController.php @@ -41,7 +41,7 @@ abstract class AdminController extends Controller DB::commit(); } catch (Throwable $th) { DB::rollBack(); - throw $this->prepareException($th); + return $this->renderException($th); } return $this->response()->successMessage(__('admin.save').__('admin.successfully')); @@ -70,7 +70,7 @@ abstract class AdminController extends Controller DB::commit(); } catch (Throwable $th) { DB::rollBack(); - throw $this->prepareException($th); + return $this->renderException($th); } return $this->response()->successMessage(__('admin.save').__('admin.successfully')); @@ -89,7 +89,7 @@ abstract class AdminController extends Controller DB::commit(); } catch (Throwable $th) { DB::rollBack(); - throw $this->prepareException($th); + return $this->renderException($th); } return $this->response()->successMessage(__('admin.delete').__('admin.successfully')); @@ -106,16 +106,23 @@ abstract class AdminController extends Controller return $path; } - protected function prepareException(Throwable $e) + protected function renderException(Throwable $e) { + report($e); + + if ($e instanceof AdminException) { + return $e->render(); + } + + $message = $e->getMessage(); + if ($e instanceof ValidationException) { $message = Arr::first($e->errors()); if (is_array($message)) { - $message = Arr::first($message); + $message = Arr::first($message) ?: '参数错误'; } - $e = new AdminException($message ?: '参数错误'); } - return $e; + return $this->response()->fail($message); } } diff --git a/app/Exceptions/Handler.php b/app/Exceptions/Handler.php index 5cc2140..6bfc524 100644 --- a/app/Exceptions/Handler.php +++ b/app/Exceptions/Handler.php @@ -6,6 +6,7 @@ use Illuminate\Foundation\Exceptions\Handler as ExceptionHandler; use Throwable; use Illuminate\Http\{Request}; use Illuminate\Validation\ValidationException; +use Slowlyo\OwlAdmin\Exceptions\AdminException; class Handler extends ExceptionHandler { @@ -21,6 +22,7 @@ class Handler extends ExceptionHandler ]; protected $dontReport = [ + AdminException::class, RuntimeException::class, ];