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/OrderShipAction.php

64 lines
2.0 KiB

<?php
namespace App\Admin\Actions\Post;
use App\Enums\OrderShipStatusEnum;
use App\Enums\OrderStatusEnum;
use App\Models\Order;
use Encore\Admin\Actions\RowAction;
use Illuminate\Http\Request;
class OrderShipAction extends RowAction
{
// 动作名称,显示在界面上的按钮文本
public $name = '发货';
/**
* 处理订单发货的逻辑
*
* @param Order $order 当前订单模型实例
* @param Request $request 当前请求实例
* @return \Encore\Admin\Actions\Response 返回操作结果的响应
*/
public function handle(Order $order, Request $request)
{
// 检查订单状态是否为已付款
if ($order->status != OrderStatusEnum::PAID) {
// 如果未付款,返回错误信息
return $this->response()->error('订单未付款');
}
// 获取物流公司和物流单号
$company = $request->input('company'); // 物流公司
$no = $request->input('no'); // 物流单号
// 检查物流公司和物流单号是否为空
if (empty($company) || empty($no)) {
// 如果有必填项为空,返回错误信息
return $this->response()->error('必填项不能为空');
}
// 更新订单的发货状态和物流信息
$order->ship_status = OrderShipStatusEnum::DELIVERED; // 设置发货状态为已发货
$order->express_company = $company; // 设置物流公司
$order->express_no = $no; // 设置物流单号
$order->save(); // 保存订单的更改
// 返回成功响应并刷新页面
return $this->response()->success('发货成功.')->refresh();
}
/**
* 定义发货表单
*
* @return void
*/
public function form()
{
// 定义物流公司输入框,设置为必填项
$this->text('company', '物流公司')->required();
// 定义物流单号输入框,设置为必填项
$this->text('no', '物流单号')->required();
}
}