diff --git a/beike/Admin/Http/Controllers/OrderController.php b/beike/Admin/Http/Controllers/OrderController.php index bd42ee3e..07ca08a7 100644 --- a/beike/Admin/Http/Controllers/OrderController.php +++ b/beike/Admin/Http/Controllers/OrderController.php @@ -13,6 +13,7 @@ namespace Beike\Admin\Http\Controllers; use Beike\Admin\Http\Resources\OrderSimple; use Beike\Models\Order; +use Beike\Models\OrderShipment; use Beike\Repositories\OrderRepo; use Beike\Services\ShipmentService; use Beike\Services\StateMachineService; @@ -103,4 +104,20 @@ class OrderController extends Controller return json_success(trans('common.updated_success')); } + + /** + * 更新发货信息 + */ + public function updateShipment(Request $request, Order $order, int $orderShipmentId): array + { + $data = $request->all(); + $orderShipment = OrderShipment::query()->where('order_id', $order->id)->findOrFail($orderShipmentId); + ShipmentService::updateShipment($orderShipment, $data); + hook_action('admin.order.update_shipment.after', [ + 'request_data' => $data, + 'shipment' => $orderShipment, + ]); + + return json_success(trans('common.updated_success')); + } } diff --git a/beike/Admin/Routes/admin.php b/beike/Admin/Routes/admin.php index 5f9434a6..ef9382b8 100644 --- a/beike/Admin/Routes/admin.php +++ b/beike/Admin/Routes/admin.php @@ -138,6 +138,7 @@ Route::prefix($adminName) Route::middleware('can:orders_export')->get('orders/export', [Controllers\OrderController::class, 'export'])->name('orders.export'); Route::middleware('can:orders_show')->get('orders/{order}', [Controllers\OrderController::class, 'show'])->name('orders.show'); Route::middleware('can:orders_update_status')->put('orders/{order}/status', [Controllers\OrderController::class, 'updateStatus'])->name('orders.update_status'); + Route::middleware('can:orders_update_status')->put('orders/{order}/shipments/{shipment}', [Controllers\OrderController::class, 'updateShipment'])->name('orders.update_shipment'); // 插件 Route::middleware('can:plugins_index')->get('plugins', [Controllers\PluginController::class, 'index'])->name('plugins.index'); diff --git a/beike/Models/OrderShipment.php b/beike/Models/OrderShipment.php index 0c75cd04..19d53de9 100644 --- a/beike/Models/OrderShipment.php +++ b/beike/Models/OrderShipment.php @@ -13,6 +13,8 @@ namespace Beike\Models; class OrderShipment extends Base { + protected $table = 'order_shipments'; + protected $fillable = [ 'order_id', 'express_code', 'express_company', 'express_number', ]; diff --git a/beike/Repositories/OrderRepo.php b/beike/Repositories/OrderRepo.php index ef0dcb8c..e7b38010 100644 --- a/beike/Repositories/OrderRepo.php +++ b/beike/Repositories/OrderRepo.php @@ -184,8 +184,8 @@ class OrderRepo $shippingAddress->country = $shippingAddress->country->name ?? ''; $shippingAddress->country_id = $shippingAddress->country->id ?? 0; - $paymentAddress->country = $paymentAddress->country->name ?? ''; - $paymentAddress->country_id = $paymentAddress->country->id ?? 0; + $paymentAddress->country = $paymentAddress->country->name ?? ''; + $paymentAddress->country_id = $paymentAddress->country->id ?? 0; } else { $shippingAddress = (Object) ($current['guest_shipping_address'] ?? []); $paymentAddress = (Object) ($current['guest_payment_address'] ?? []); diff --git a/beike/Services/ShipmentService.php b/beike/Services/ShipmentService.php index c646f9f5..c7828ed3 100644 --- a/beike/Services/ShipmentService.php +++ b/beike/Services/ShipmentService.php @@ -54,4 +54,19 @@ class ShipmentService return $company ? $company['name'] ?? '' : ''; } + + /** + * @param $orderShipment + * @param $data + * @throws \Throwable + */ + public static function updateShipment($orderShipment, $data) + { + $shipmentData = [ + 'express_code' => $data['express_code'] ?? '', + 'express_company' => $data['express_name'] ?? '', + 'express_number' => $data['express_number'] ?? '', + ]; + $orderShipment->updateOrFail($shipmentData); + } } diff --git a/resources/beike/admin/views/pages/orders/form.blade.php b/resources/beike/admin/views/pages/orders/form.blade.php index 3e424de5..d4932d8c 100644 --- a/resources/beike/admin/views/pages/orders/form.blade.php +++ b/resources/beike/admin/views/pages/orders/form.blade.php @@ -215,10 +215,28 @@ @foreach ($order->orderShipments as $ship) - - {{ $ship->express_company }} - {{ $ship->express_number }} - {{ $ship->created_at }} + + +
{{ $ship->express_company }}
+ + + + +
{{ $ship->express_number }}
+ + + + {{ $ship->created_at }} +
{{ __('common.edit') }}
+
+
{{ __('common.confirm') }}
+
{{ __('common.cancel') }}
+
+ @endforeach @@ -258,6 +276,40 @@ @push('footer') @can('orders_update_status')