File manager - Edit - /home/webapp69.cm.in.th/u69319090038/Shop/api/seller/orders.php
Back
<?php // /api/seller/orders.php — GET list | PUT update status require_once __DIR__ . '/../init.php'; $user = AuthMiddleware::verifyToken(); AuthMiddleware::requireRole(['seller', 'admin']); $sellerId = (int)$user['id']; $db = DB::conn(); $method = $_SERVER['REQUEST_METHOD']; // ─── GET — list orders ──────────────────────────────────────── if ($method === 'GET') { $status = $_GET['status'] ?? ''; $page = max(1, (int)($_GET['page'] ?? 1)); $limit = 20; $offset = ($page - 1) * $limit; $where = 'o.seller_id = ?'; $params = [$sellerId]; if ($status) { $where .= ' AND o.status = ?'; $params[] = $status; } $stmt = $db->prepare(" SELECT o.id, o.total_amount, o.status, o.address, o.note, o.created_at, u.username as buyer_name, u.email as buyer_email, (SELECT COUNT(*) FROM order_items oi WHERE oi.order_id = o.id) as item_count FROM orders o JOIN users u ON u.id = o.buyer_id WHERE $where ORDER BY o.created_at DESC LIMIT $limit OFFSET $offset "); $stmt->execute($params); $orders = $stmt->fetchAll(); // Count total $stmtCount = $db->prepare("SELECT COUNT(*) as cnt FROM orders o WHERE $where"); $stmtCount->execute($params); $total = (int)$stmtCount->fetch()['cnt']; foreach ($orders as &$o) { $o['id'] = (int)$o['id']; $o['total_amount'] = (float)$o['total_amount']; $o['item_count'] = (int)$o['item_count']; // Fetch items for each order $stmtItems = $db->prepare( 'SELECT oi.qty, oi.unit_price, p.name, p.image_url FROM order_items oi JOIN products p ON p.id = oi.product_id WHERE oi.order_id = ?' ); $stmtItems->execute([$o['id']]); $o['items'] = $stmtItems->fetchAll(); } Response::success('Orders fetched.', [ 'orders' => $orders, 'total' => $total, 'page' => $page, 'pages' => ceil($total / $limit), ]); } // ─── PUT — update order status ──────────────────────────────── if ($method === 'PUT') { $body = getBody(); $orderId = (int)($body['id'] ?? 0); $status = $body['status'] ?? ''; $allowed = ['confirmed', 'shipping', 'delivered', 'cancelled']; if (!$orderId || !in_array($status, $allowed)) { Response::error('Invalid order ID or status.'); } $stmt = $db->prepare('SELECT id FROM orders WHERE id = ? AND seller_id = ?'); $stmt->execute([$orderId, $sellerId]); if (!$stmt->fetch()) Response::error('ไม่พบคำสั่งซื้อหรือคุณไม่มีสิทธิ์', 403); $db->prepare('UPDATE orders SET status = ? WHERE id = ?')->execute([$status, $orderId]); Response::success('อัปเดตสถานะสำเร็จ', ['status' => $status]); } Response::error('Method not allowed.', 405);
| ver. 1.4 |
Github
|
.
| PHP 7.4.33 | Generation time: 0.23 |
proxy
|
phpinfo
|
Settings