diff --git a/backend/app/services/order/OrderTakeServices.php b/backend/app/services/order/OrderTakeServices.php index c3dd9817c..ac816abcb 100644 --- a/backend/app/services/order/OrderTakeServices.php +++ b/backend/app/services/order/OrderTakeServices.php @@ -150,6 +150,10 @@ class OrderTakeServices extends BaseService */ public function storeProductOrderUserTakeDelivery($order, bool $isTran = true, ?string $takeStatus = null) { + // DAO get() 返回 Model(如核销链路直接传入),事务内 array_replace 要求 array + if (is_object($order)) { + $order = $order->toArray(); + } /** @var UserServices $userServices */ $userServices = app()->make(UserServices::class); $userInfo = $userServices->get((int)$order['uid']); diff --git a/backend/modules/product/normal/controller/admin/OrderController.php b/backend/modules/product/normal/controller/admin/OrderController.php index a343aa58e..dfa34014d 100644 --- a/backend/modules/product/normal/controller/admin/OrderController.php +++ b/backend/modules/product/normal/controller/admin/OrderController.php @@ -26,6 +26,7 @@ use modules\product\normal\service\OrderServices; use think\facade\Log; use app\services\pay\PayServices; use crmeb\trade\order\type\OrderTypeAdapterInterface; +use crmeb\exceptions\ApiException; /** * 实物商品后台订单控制器 @@ -782,6 +783,9 @@ class OrderController extends AuthController $orderServices->confirmReceipt($orderNo); return app('json')->success('确认收货成功'); + } catch (ApiException $e) { + // 业务校验类异常返回具体原因(如"该订单已被核销"),不吞成通用文案 + return app('json')->fail($e->getMessage()); } catch (\Throwable $e) { Log::error('[NormalOrder] confirmReceipt failed: ' . $e->getMessage()); return app('json')->fail('确认收货失败');