From 62d2ec5d7307a7be221252a7c4a0c8f06c44aec6 Mon Sep 17 00:00:00 2001 From: liapples Date: Fri, 27 Aug 2021 15:10:10 +0800 Subject: [PATCH] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E2=80=9C=E8=AE=BE=E4=B8=BA?= =?UTF-8?q?=E7=BA=BF=E4=B8=8B=E5=B7=B2=E4=BB=98=E6=AC=BE=E2=80=9D=E6=8C=89?= =?UTF-8?q?=E9=92=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Controllers/OrderController.php | 17 +++++-- .../Extensions/Grid/ChangeOrderStatus.php | 46 +++++++++++++++++++ 2 files changed, 58 insertions(+), 5 deletions(-) create mode 100644 app/AdminAgent/Extensions/Grid/ChangeOrderStatus.php diff --git a/app/AdminAgent/Controllers/OrderController.php b/app/AdminAgent/Controllers/OrderController.php index 28da7c5..b51a8d6 100644 --- a/app/AdminAgent/Controllers/OrderController.php +++ b/app/AdminAgent/Controllers/OrderController.php @@ -3,6 +3,7 @@ namespace App\AdminAgent\Controllers; use App\AdminAgent\Extensions\Grid\AuditRefund; +use App\AdminAgent\Extensions\Grid\ChangeOrderStatus; use App\AdminAgent\Repositories\Order; use App\Common\OrderStatus; use App\Common\PayType; @@ -49,8 +50,8 @@ class OrderController extends AdminController //状态及退款处理 $grid->column('status') + ->using(OrderStatus::array()) ->if(fn() => in_array($this->status, [OrderStatus::REFUNDING, OrderStatus::REFUNDED, OrderStatus::REFUSED_REFUND])) - ->display('查看 ') ->modal('查看退款详情', function (Grid\Displayers\Modal $modal) { $modal->icon(''); if (!$this->refund_info) { @@ -73,6 +74,7 @@ class OrderController extends AdminController ]; return Table::make($refund_info); }) + ->display('退款详情 ') //放在modal下面可以去掉空格 ->then(function (Grid\Column $column) { if ($this->status == OrderStatus::REFUNDING) { $column->append((new AuditRefund(null, 1))->setKey($this->id))->append(' '); @@ -83,8 +85,10 @@ class OrderController extends AdminController $column->append('已拒绝退款'); } }) - ->else() - ->select(OrderStatus::array()); + ->if(fn() => $this->status == OrderStatus::OFFLINE_UNPAID) + ->then(function (Grid\Column $column) { + return $column->action(new ChangeOrderStatus); + }); $grid->column('pay_type')->using(PayType::array()); $grid->column('price'); @@ -165,11 +169,10 @@ class OrderController extends AdminController $form->display('id'); $form->text('name'); $form->text('mobile'); - $form->select('status')->options(OrderStatus::array()); })->saving(function (Form $form) { //不允许修改非自己的数据 if ($form->isCreating()) { - return $form->response()->error('不允许此操作'); + return $form->response()->error('操作禁止'); } if ($form->isEditing() && $form->model()->agent_id != Admin::user()->id) { return $form->response()->error('数据不存在'); @@ -182,7 +185,11 @@ class OrderController extends AdminController //退款不能直接编辑 if (in_array($form->status, [OrderStatus::REFUNDED, OrderStatus::REFUSED_REFUND])) { return $form->response()->error('请通过订单列表的”通过“和”拒绝“按钮来审核退款'); + } else if ($form->status != OrderStatus::OFFLINE_PAID) { + return $form->response()->error('操作禁止'); } + })->saved(function (Form $form) { + return $form->response()->success('更新成功')->refresh(); })->deleting(function (Form $form) { return $form->response()->error('操作禁止'); }); diff --git a/app/AdminAgent/Extensions/Grid/ChangeOrderStatus.php b/app/AdminAgent/Extensions/Grid/ChangeOrderStatus.php new file mode 100644 index 0000000..9db2816 --- /dev/null +++ b/app/AdminAgent/Extensions/Grid/ChangeOrderStatus.php @@ -0,0 +1,46 @@ +appendHtmlAttribute('class', 'btn btn-sm btn-success'); + $this->defaultHtmlAttribute('href', 'javascript:;'); + + return "formatHtmlAttributes()}>{$this->title}"; + } + + public function handle() + { + try { + $order = Order::firstWhere(['id' => $this->getKey(), 'agent_id' => Admin::user()->id, 'status' => OrderStatus::OFFLINE_UNPAID]); + if (!$order) { + return $this->response()->error("订单不存在或已处理过了")->refresh(); + } + $order->status = OrderStatus::OFFLINE_PAID; + $order->save(); + + return $this->response()->success("操作成功,已设置为“线下已付款”")->refresh(); + } catch (\Exception $e) { + return $this->response()->error($e->getMessage()); + } + } + + public function confirm() + { + return ['确定要设置为已付款吗?', '']; + } +}