Browse Source

增加“设为线下已付款”按钮

develop
李可松 4 years ago
parent
commit
62d2ec5d73
  1. 17
      app/AdminAgent/Controllers/OrderController.php
  2. 46
      app/AdminAgent/Extensions/Grid/ChangeOrderStatus.php

17
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('<a style="cursor: pointer;" class="btn btn-sm btn-info" href="javascript:;">查看</a>&nbsp;')
->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('<a style="cursor: pointer;" class="btn btn-sm btn-info" href="javascript:;">退款详情</a>&nbsp;') //放在modal下面可以去掉空格
->then(function (Grid\Column $column) {
if ($this->status == OrderStatus::REFUNDING) {
$column->append((new AuditRefund(null, 1))->setKey($this->id))->append('&nbsp;');
@ -83,8 +85,10 @@ class OrderController extends AdminController
$column->append('<a style="cursor: pointer;" class="btn btn-sm btn-danger" href="javascript:;">已拒绝退款</a>');
}
})
->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('操作禁止');
});

46
app/AdminAgent/Extensions/Grid/ChangeOrderStatus.php

@ -0,0 +1,46 @@
<?php
namespace App\AdminAgent\Extensions\Grid;
use App\Common\OrderStatus;
use App\Models\Order;
use Dcat\Admin\Admin;
use Dcat\Admin\Grid\RowAction;
/**
* 改变订单状态
* Class ChangeOrderStatus
* @package App\AdminAgent\Extensions\Grid
*/
class ChangeOrderStatus extends RowAction
{
protected $title = '设为 [线下]已付款';
protected function html()
{
$this->appendHtmlAttribute('class', 'btn btn-sm btn-success');
$this->defaultHtmlAttribute('href', 'javascript:;');
return "<a {$this->formatHtmlAttributes()}>{$this->title}</a>";
}
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 ['确定要设置为已付款吗?', ''];
}
}
Loading…
Cancel
Save