orderBy('created_at', 'desc'); if ($request->filled('platform')) { $query->where('platform', $request->platform); } if ($request->filled('shop_id')) { $query->where('shop_id', $request->shop_id); } if ($request->filled('order_status')) { $query->where('order_status', $request->order_status); } if ($request->filled('audit_status')) { $query->where('audit_status', $request->audit_status); } if ($request->filled('delivery_status')) { $query->where('delivery_status', $request->delivery_status); } if ($request->filled('keyword')) { $keyword = $request->keyword; $query->where(function ($q) use ($keyword) { $q->where('short_id', 'like', "%{$keyword}%") ->orWhere('platform_order_sn', 'like', "%{$keyword}%") ->orWhere('receiver_name', 'like', "%{$keyword}%") ->orWhere('receiver_phone', 'like', "%{$keyword}%"); }); } if ($request->filled('date_range')) { $dates = explode(',', $request->date_range); if (count($dates) === 2) { $query->whereBetween('order_time', [$dates[0], $dates[1]]); } } $perPage = $request->input('limit', 10); $orders = $query->paginate($perPage); return response()->json([ 'code' => 200, 'data' => [ 'list' => $orders->items(), 'total' => $orders->total(), 'current_page' => $orders->currentPage(), 'last_page' => $orders->lastPage(), ], 'message' => 'success' ]); } /** * 订单详情 */ public function show(string $id) { $order = Order::with(['items', 'warehouse'])->find($id); if (!$order) { return response()->json(['code' => 404, 'message' => '订单不存在'], 404); } return response()->json(['code' => 200, 'data' => $order, 'message' => 'success']); } /** * 拉取订单(模拟) */ public function pull(Request $request) { $request->validate([ 'platform' => 'required|string', 'shop_id' => 'required|integer', 'pull_type' => 'required|in:all,increment,specify', 'order_ids' => 'required_if:pull_type,specify|string', 'start_time' => 'nullable|date', 'end_time' => 'nullable|date', ]); $mockOrders = [ [ 'platform_order_sn' => 'TEST' . Str::random(10), 'order_time' => now()->toDateTimeString(), 'buyer_nick' => '测试买家', 'receiver_name' => '张三', 'receiver_phone' => '13800138000', 'receiver_address' => '测试地址', 'goods_amount' => 199.00, 'discount_amount' => 0, 'freight' => 10.00, 'total_amount' => 209.00, 'platform_status' => 'WAIT_SELLER_SEND_GOODS', 'items' => [ [ 'goods_name' => '测试商品', 'platform_sku' => 'SKU001', 'quantity' => 1, 'price' => 199.00, 'total_amount' => 199.00, ] ] ] ]; $createdCount = 0; try { DB::beginTransaction(); foreach ($mockOrders as $orderData) { $shortId = 'O' . date('Ymd') . strtoupper(Str::random(6)); $order = Order::create([ 'short_id' => $shortId, 'platform_order_sn' => $orderData['platform_order_sn'], 'platform' => $request->platform, 'shop_id' => $request->shop_id, 'shop_name' => '测试店铺', 'order_time' => $orderData['order_time'], 'buyer_nick' => $orderData['buyer_nick'], 'receiver_name' => $orderData['receiver_name'], 'receiver_phone' => $orderData['receiver_phone'], 'receiver_address' => $orderData['receiver_address'], 'goods_amount' => $orderData['goods_amount'], 'discount_amount' => $orderData['discount_amount'], 'freight' => $orderData['freight'], 'total_amount' => $orderData['total_amount'], 'order_status' => 'pending', 'platform_status' => $orderData['platform_status'], 'audit_status' => 'pending', 'delivery_status' => 'pending', ]); foreach ($orderData['items'] as $itemData) { OrderItem::create([ 'order_id' => $order->id, 'goods_name' => $itemData['goods_name'], 'platform_sku' => $itemData['platform_sku'], 'quantity' => $itemData['quantity'], 'price' => $itemData['price'], 'total_amount' => $itemData['total_amount'], ]); } $createdCount++; } DB::commit(); return response()->json([ 'code' => 200, 'data' => ['count' => $createdCount], 'message' => "成功拉取 {$createdCount} 个订单" ]); } catch (\Exception $e) { DB::rollBack(); return response()->json([ 'code' => 500, 'message' => '拉取失败: ' . $e->getMessage() ], 500); } } // 其他必要方法(如 batchAudit、auditOrder、shipOrder 等)可以从原控制器中保留,但为了简洁,此处省略 // 您可以根据需要补充,确保其他接口不报错。 }