From 115f52a8f165ec39694e355abbeafccac7cb39e0 Mon Sep 17 00:00:00 2001 From: LeonG11 Date: Wed, 24 Jun 2026 20:47:14 +0300 Subject: [PATCH] fix: change backend hadlers, API route and uploads photo --- backend/handlers/item_handlers.go | 6 +- backend/main.go | 3 +- .../748f6329-3806-4dd0-82ec-dabfa7445552.jpg | Bin 0 -> 74660 bytes frontend/src/api/index.js | 12 +- frontend/src/components/AdminItems.jsx | 178 +++++++++++++++++- 5 files changed, 189 insertions(+), 10 deletions(-) create mode 100644 backend/uploads/items/748f6329-3806-4dd0-82ec-dabfa7445552.jpg diff --git a/backend/handlers/item_handlers.go b/backend/handlers/item_handlers.go index 2dc9317..e950181 100644 --- a/backend/handlers/item_handlers.go +++ b/backend/handlers/item_handlers.go @@ -73,6 +73,8 @@ func UpdateItem(c *gin.Context) { UnitType: input.UnitType, City: input.City, Price: input.Price, + Category: input.Category, + Stock: input.Stock, }) c.JSON(http.StatusOK, item) @@ -156,14 +158,14 @@ func UploadItemAvatar(c *gin.Context) { resized := imaging.Resize(img, 1200, 0, imaging.Lanczos) uniqueName := uuid.New().String() + ".jpg" - dstPath := filepath.Join("./uploads/items", uniqueName) + dstPath := filepath.Join("./uploads/items/", uniqueName) if err := imaging.Save(resized, dstPath, imaging.JPEGQuality(82)); err != nil { c.JSON(http.StatusInternalServerError, gin.H{"error": "Не удалось сохранить фотографию"}) return } - item.AvatarURL = "/uploads/items" + uniqueName + item.AvatarURL = uniqueName database.DB.Save(&item) c.JSON(http.StatusOK, gin.H{"avatar_url": item.AvatarURL}) diff --git a/backend/main.go b/backend/main.go index d6f7d0d..3aefb7d 100644 --- a/backend/main.go +++ b/backend/main.go @@ -41,7 +41,7 @@ func main() { api.POST("/login", handlers.Login) protected := api.Group("/") api.GET("/items/:id", handlers.GetItem) - api.GET("/items/", handlers.GetAllItems) + api.GET("/items", handlers.GetAllItems) api.GET("/getCategories", handlers.GetCategories) api.POST("/register", handlers.Register) protected.Use(middleware.AuthRequired()) @@ -66,6 +66,7 @@ func main() { admin.POST("/register", handlers.RegisterAdmin) admin.GET("/orders", handlers.GetAllOrders) admin.PATCH("/orders/:id", handlers.UpdateOrderStatus) + admin.PATCH("/items/:id/avatar", handlers.UploadItemAvatar) } } diff --git a/backend/uploads/items/748f6329-3806-4dd0-82ec-dabfa7445552.jpg b/backend/uploads/items/748f6329-3806-4dd0-82ec-dabfa7445552.jpg new file mode 100644 index 0000000000000000000000000000000000000000..18c73667fcd59fe7faaac752c4eeb92d6fcc543d GIT binary patch literal 74660 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 axios.get(`${API_URL}/getCategories`); export const getCart = () => axios.get(`${API_URL}/cart/`); export const addToCart = (data) => axios.post(`${API_URL}/cart/`, data); export const updateCartItem = (id, data) => - axios.post(`${API_URL}/cart/${id}`, data); + axios.patch(`${API_URL}/cart/${id}`, data); export const removeFromCart = (id) => axios.delete(`${API_URL}/cart/${id}`); export const createOrder = (data) => axios.post(`${API_URL}/orders/`, data); export const getUserOrders = () => axios.get(`${API_URL}/orders`); export const getOrder = (id) => axios.get(`${API_URL}/orders/${id}`); -export const updateProfile = () => axios.patch(`${API_URL}/profile`); +export const updateProfile = (data) => axios.patch(`${API_URL}/profile`); export const getUserInfo = () => axios.get(`${API_URL}/profile`); + +export const uploadItemAvatar = (id, file) => { + const formData = new FormData(); + formData.append("avatar", file); + return axios.patch(`${API_URL}/admin/items/${id}/avatar`, formData, { + headers: { "Content-Type": "multipart/form-data" }, + }); +}; diff --git a/frontend/src/components/AdminItems.jsx b/frontend/src/components/AdminItems.jsx index fcf463d..cfe078f 100644 --- a/frontend/src/components/AdminItems.jsx +++ b/frontend/src/components/AdminItems.jsx @@ -1,9 +1,152 @@ import { useState, useEffect } from "react"; -import { getAllItems, deleteItem } from "../api/index"; +import { + getAllItems, + deleteItem, + addItem, + updateItem, + uploadItemAvatar, +} from "../api/index"; + +function ItemFormModal({ item, onClose, onSaved }) { + const isEdit = !!item; + const [form, setForm] = useState({ + name: item?.name || "", + category: item?.category || "", + city: item?.city || "", + price: item?.price || "", + stock: item?.stock || "", + unit: item?.unit || "кг", + unit_type: item?.unit_type || "weight", + }); + const [file, setFile] = useState(null); + const [saving, setSaving] = useState(false); + + const handleChange = (field) => (e) => + setForm({ ...form, [field]: e.target.value }); + + const handleSubmit = async () => { + setSaving(true); + try { + // числовые поля привести к числам + const payload = { + ...form, + price: Number(form.price), + stock: Number(form.stock), + }; + + let itemId; + if (isEdit) { + await updateItem(item.id, payload); + itemId = item.id; + } else { + const res = await addItem(payload); + itemId = res.data.id; + } + + // если выбран файл — загрузить картинку + if (file) { + await uploadItemAvatar(itemId, file); + } + + onSaved(); + } catch { + alert("Не удалось сохранить товар"); + } finally { + setSaving(false); + } + }; + + return ( +
+
+

+ {isEdit ? "Редактировать товар" : "Новый товар"} +

+ +
+ + + + + + + + + {/* картинка */} +
+ + setFile(e.target.files[0])} + className="text-sm text-white/70" + /> +
+
+ +
+ + +
+
+
+ ); +} + +// ===== Основной компонент ===== export default function AdminItems() { const [items, setItems] = useState([]); const [loading, setLoading] = useState(true); + const [showModal, setShowModal] = useState(false); + const [editingItem, setEditingItem] = useState(null); const loadItems = () => { getAllItems() @@ -26,16 +169,30 @@ export default function AdminItems() { } }; + const openCreate = () => { + setEditingItem(null); + setShowModal(true); + }; + const openEdit = (item) => { + setEditingItem(item); + setShowModal(true); + }; + const handleSaved = () => { + setShowModal(false); + loadItems(); + }; + if (loading) return

Загрузка...

; return (
- {/* Кнопка добавления (форму подключим следующим шагом) */} - - {/* Таблица товаров */}
@@ -73,7 +230,10 @@ export default function AdminItems() {
-
+ + {showModal && ( + setShowModal(false)} + onSaved={handleSaved} + /> + )}
); }