You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
aquaculture/app/Admin/Actions/Post/OrderReceivedAction.php

44 lines
1.3 KiB

<?php
namespace App\Admin\Actions\Post;
use App\Enums\OrderShipStatusEnum;
use App\Enums\OrderStatusEnum;
use App\Models\Order;
use Encore\Admin\Actions\RowAction;
class OrderReceivedAction extends RowAction
{
// 动作名称,显示在界面上的按钮文本
public $name = '确认收货';
/**
* 处理确认收货的逻辑
*
* @param Order $order 当前订单模型实例
* @return \Encore\Admin\Actions\Response 返回操作结果的响应
*/
public function handle(Order $order)
{
// 检查订单状态是否为已付款
if ($order->status != OrderStatusEnum::PAID) {
// 如果未付款,返回错误信息
return back()->withErrors('订单未付款', 'error');
}
// 检查订单的发货状态是否为已发货
if ($order->ship_status != OrderShipStatusEnum::DELIVERED) {
// 如果未发货,返回错误信息
return back()->withErrors('订单未发货', 'error');
}
// 更新订单的发货状态为已收货
$order->ship_status = OrderShipStatusEnum::RECEIVED;
// 保存订单的更改
$order->save();
// 返回成功响应并刷新页面
return $this->response()->success('确认收货成功.')->refresh();
}
}