Fix LESS import error and refactor project structure
This commit is contained in:
@@ -5,17 +5,11 @@ namespace App\Models;
|
||||
use App\Core\Model;
|
||||
use App\Core\Database;
|
||||
|
||||
/**
|
||||
* Order - модель заказа
|
||||
*/
|
||||
class Order extends Model
|
||||
{
|
||||
protected string $table = 'orders';
|
||||
protected string $primaryKey = 'order_id';
|
||||
|
||||
/**
|
||||
* Создать заказ из корзины
|
||||
*/
|
||||
public function createFromCart(int $userId, array $cartItems, array $orderData): ?array
|
||||
{
|
||||
$db = Database::getInstance();
|
||||
@@ -23,7 +17,6 @@ class Order extends Model
|
||||
try {
|
||||
$db->beginTransaction();
|
||||
|
||||
// Считаем итоговую сумму
|
||||
$subtotal = 0;
|
||||
foreach ($cartItems as $item) {
|
||||
$subtotal += $item['price'] * $item['quantity'];
|
||||
@@ -33,10 +26,8 @@ class Order extends Model
|
||||
$deliveryPrice = (float) ($orderData['delivery_price'] ?? 2000);
|
||||
$finalAmount = $subtotal - $discountAmount + $deliveryPrice;
|
||||
|
||||
// Генерируем номер заказа
|
||||
$orderNumber = 'ORD-' . date('Ymd-His') . '-' . rand(1000, 9999);
|
||||
|
||||
// Создаем заказ
|
||||
$orderId = $this->create([
|
||||
'user_id' => $userId,
|
||||
'order_number' => $orderNumber,
|
||||
@@ -61,18 +52,15 @@ class Order extends Model
|
||||
throw new \Exception('Не удалось создать заказ');
|
||||
}
|
||||
|
||||
// Добавляем товары в заказ
|
||||
foreach ($cartItems as $item) {
|
||||
$this->addOrderItem($orderId, $item);
|
||||
}
|
||||
|
||||
// Уменьшаем количество товаров на складе
|
||||
$productModel = new Product();
|
||||
foreach ($cartItems as $item) {
|
||||
$productModel->decreaseStock($item['product_id'], $item['quantity']);
|
||||
}
|
||||
|
||||
// Очищаем корзину
|
||||
$cartModel = new Cart();
|
||||
$cartModel->clearCart($userId);
|
||||
|
||||
@@ -90,9 +78,6 @@ class Order extends Model
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Добавить товар в заказ
|
||||
*/
|
||||
private function addOrderItem(int $orderId, array $item): void
|
||||
{
|
||||
$sql = "INSERT INTO order_items
|
||||
@@ -111,9 +96,6 @@ class Order extends Model
|
||||
]);
|
||||
}
|
||||
|
||||
/**
|
||||
* Получить заказ с подробностями
|
||||
*/
|
||||
public function getWithDetails(int $orderId): ?array
|
||||
{
|
||||
$sql = "SELECT o.*, u.email as user_email, u.full_name as user_full_name
|
||||
@@ -130,9 +112,6 @@ class Order extends Model
|
||||
return $order;
|
||||
}
|
||||
|
||||
/**
|
||||
* Получить товары заказа
|
||||
*/
|
||||
public function getOrderItems(int $orderId): array
|
||||
{
|
||||
$sql = "SELECT oi.*, p.image_url
|
||||
@@ -142,9 +121,6 @@ class Order extends Model
|
||||
return $this->query($sql, [$orderId]);
|
||||
}
|
||||
|
||||
/**
|
||||
* Получить заказы пользователя
|
||||
*/
|
||||
public function getUserOrders(int $userId, int $limit = 50): array
|
||||
{
|
||||
$sql = "SELECT * FROM {$this->table}
|
||||
@@ -154,9 +130,6 @@ class Order extends Model
|
||||
return $this->query($sql, [$userId, $limit]);
|
||||
}
|
||||
|
||||
/**
|
||||
* Получить все заказы для админки
|
||||
*/
|
||||
public function getAllForAdmin(int $limit = 50): array
|
||||
{
|
||||
$sql = "SELECT o.*, u.email as user_email
|
||||
@@ -167,9 +140,6 @@ class Order extends Model
|
||||
return $this->query($sql, [$limit]);
|
||||
}
|
||||
|
||||
/**
|
||||
* Обновить статус заказа
|
||||
*/
|
||||
public function updateStatus(int $orderId, string $status): bool
|
||||
{
|
||||
$updateData = [
|
||||
@@ -184,25 +154,19 @@ class Order extends Model
|
||||
return $this->update($orderId, $updateData);
|
||||
}
|
||||
|
||||
/**
|
||||
* Получить статистику заказов
|
||||
*/
|
||||
public function getStats(): array
|
||||
{
|
||||
$stats = [];
|
||||
|
||||
// Общее количество заказов
|
||||
$result = $this->queryOne("SELECT COUNT(*) as cnt FROM {$this->table}");
|
||||
$stats['total'] = (int) $result['cnt'];
|
||||
|
||||
// Выручка
|
||||
$result = $this->queryOne(
|
||||
"SELECT COALESCE(SUM(final_amount), 0) as revenue
|
||||
FROM {$this->table} WHERE status = 'completed'"
|
||||
);
|
||||
$stats['revenue'] = (float) $result['revenue'];
|
||||
|
||||
// По статусам
|
||||
$statuses = $this->query(
|
||||
"SELECT status, COUNT(*) as cnt FROM {$this->table} GROUP BY status"
|
||||
);
|
||||
@@ -214,4 +178,3 @@ class Order extends Model
|
||||
return $stats;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user