From 31eb86ee296f70a93326ad4f622ab745012a4ce9 Mon Sep 17 00:00:00 2001 From: liapples Date: Thu, 16 Sep 2021 11:58:07 +0800 Subject: [PATCH] =?UTF-8?q?=E8=AE=A2=E5=8D=95=E8=B6=85=E6=97=B6=E7=94=B1?= =?UTF-8?q?=E4=BE=9B=E5=BA=94=E5=95=86=E8=AE=BE=E7=BD=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Controllers/OrderController.php | 10 ---- .../Controllers/OrderController.php | 8 ++- .../Extensions/Grid/ChangeOrderStatus.php | 50 +++++++++++++++++++ 3 files changed, 57 insertions(+), 11 deletions(-) create mode 100644 app/AdminSupplier/Extensions/Grid/ChangeOrderStatus.php diff --git a/app/AdminAgent/Controllers/OrderController.php b/app/AdminAgent/Controllers/OrderController.php index 3d000a2..01632e2 100644 --- a/app/AdminAgent/Controllers/OrderController.php +++ b/app/AdminAgent/Controllers/OrderController.php @@ -3,19 +3,16 @@ 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; use App\Models\OrderProductItem; -use App\Models\Supplier; use Dcat\Admin\Admin; use Dcat\Admin\Form; use Dcat\Admin\Grid; use Dcat\Admin\Grid\Filter\AbstractFilter; use Dcat\Admin\Show; use Dcat\Admin\Http\Controllers\AdminController; -use Dcat\Admin\Widgets\Dropdown; use Dcat\Admin\Widgets\Table; use Illuminate\Support\Arr; use Illuminate\Support\Facades\Storage; @@ -101,10 +98,6 @@ class OrderController extends AdminController } else if ($this->status == OrderStatus::REFUSED_REFUND) { $column->append('已拒绝退款'); } - }) - ->if(fn() => $this->status == OrderStatus::OFFLINE_UNPAID) - ->then(function (Grid\Column $column) { - return $column->action(new ChangeOrderStatus); }); $grid->column('pay_type')->using(PayType::array()); @@ -221,9 +214,6 @@ class OrderController extends AdminController if ($form->status !== null) { if (in_array($form->status, [OrderStatus::REFUNDED, OrderStatus::REFUSED_REFUND])) { return $form->response()->error('请通过订单列表的”通过“和”拒绝“按钮来审核退款'); - } else if ($form->status == OrderStatus::OFFLINE_PAID) { - $form->hidden('timeout'); - $form->timeout = null; //清空超时时间 } else { return $form->response()->error('操作禁止'); } diff --git a/app/AdminSupplier/Controllers/OrderController.php b/app/AdminSupplier/Controllers/OrderController.php index 88e7c8d..7d01749 100644 --- a/app/AdminSupplier/Controllers/OrderController.php +++ b/app/AdminSupplier/Controllers/OrderController.php @@ -2,6 +2,7 @@ namespace App\AdminSupplier\Controllers; +use App\AdminSupplier\Extensions\Grid\ChangeOrderStatus; use App\AdminSupplier\Repositories\Order; use App\Common\OrderStatus; use App\Common\PayType; @@ -59,7 +60,12 @@ class OrderController extends AdminController $grid->column('price'); // $grid->column('refund_info'); $grid->column('pay_type')->using(PayType::array()); - $grid->column('status', '订单状态')->using(OrderStatus::array()); + $grid->column('status', '订单状态') + ->using(OrderStatus::array()) + ->if(fn() => $this->status == OrderStatus::OFFLINE_UNPAID) + ->then(function (Grid\Column $column) { + return $column->action(new ChangeOrderStatus); + }); $grid->column('paid_at'); $grid->column('created_at'); diff --git a/app/AdminSupplier/Extensions/Grid/ChangeOrderStatus.php b/app/AdminSupplier/Extensions/Grid/ChangeOrderStatus.php new file mode 100644 index 0000000..fd63cb8 --- /dev/null +++ b/app/AdminSupplier/Extensions/Grid/ChangeOrderStatus.php @@ -0,0 +1,50 @@ +appendHtmlAttribute('class', 'btn btn-sm btn-success'); + $this->defaultHtmlAttribute('href', 'javascript:;'); + + return "formatHtmlAttributes()}>{$this->title}"; + } + + public function handle() + { + try { + $order = Order::query()->whereHas('orderProductItem', function ($query) { + $query->where(['supplier_id' => Admin::user()->id, 'order_id' => $this->getKey()]); + })->firstWhere(['id' => $this->getKey(), 'status' => OrderStatus::OFFLINE_UNPAID]); + if (!$order) { + return $this->response()->error("订单不存在或已处理过了")->refresh(); + } + $order->status = OrderStatus::OFFLINE_PAID; + $order->verify_code = uniqid(); //生成核销码 + $order->save(); + + return $this->response()->success("操作成功,已设置为“线下已付款”")->refresh(); + } catch (\Exception $e) { + return $this->response()->error($e->getMessage()); + } + } + + public function confirm() + { + return ['确定要设置为已付款吗?', '']; + } +}