готова лаб1бэк

бэйби ай эм бэк
This commit is contained in:
2025-11-19 15:42:08 +04:00
parent cf3dbd6fda
commit 78dbe23f82
4 changed files with 15 additions and 37 deletions

View File

@@ -14,20 +14,14 @@ const ProductForm = ({ product, categories, conditions, onSubmit, onCancel, isEd
// Заполняем форму данными товара при редактировании
useEffect(() => {
if (isEditing && product) {
console.log('🔍 ProductForm - продукт для редактирования:', product);
setFormData({
name: product.name || '',
price: product.price || '',
categoryId: product.category || product.categoryId || '',
conditionId: product.condition || product.conditionId || '',
categoryId: product.category || '',
conditionId: product.condition || '',
description: product.description || '',
image: product.image || product.imageUrl || product.imageURL || '' // ← ВАЖНО
});
console.log('🔍 ProductForm - установлен formData:', {
name: product.name,
image: product.image || product.imageUrl || product.imageURL
image: product.image || ''
});
}
}, [product, isEditing]);
@@ -42,21 +36,15 @@ const ProductForm = ({ product, categories, conditions, onSubmit, onCancel, isEd
const handleSubmit = (e) => {
e.preventDefault();
console.log('🔍 ProductForm - formData:', formData);
console.log('🔍 ProductForm - image value:', formData.image);
const shmotkaData = {
name: formData.name,
price: parseFloat(formData.price),
description: formData.description,
image: formData.image, // ← ИСПРАВЛЕНО: используем formData.image вместо formData.imageUrl
image: formData.image,
categoryId: parseInt(formData.categoryId),
conditionId: parseInt(formData.conditionId),
inStock: true
};
console.log('🔍 ProductForm - shmotkaData для отправки:', shmotkaData);
onSubmit(shmotkaData);
};
return (

View File

@@ -22,18 +22,17 @@ export const useBasket = () => {
// Преобразуем данные в формат фронтенда
const mappedItems = data.map(item => {
const shmotka = item.shmotka; // Правильное поле с бэкенда
const shmotka = item.shmotka;
return {
id: shmotka?.id || item.shmotkaId,
name: shmotka?.name || 'Без названия',
price: shmotka?.price || 0,
description: shmotka?.description || 'Описание отсутствует',
image: shmotka?.imageUrl || 'img/placeholder.jpg', // Правильное поле imageURL
image: shmotka?.imageUrl || 'img/placeholder.jpg',
category: shmotka?.category.name || 'Unknown',
condition: shmotka?.condition.name || 'Unknown',
categoryId: shmotka?.categoryId,
conditionId: shmotka?.conditionId,
// Убрано quantity, так как его нет на бэкенде
// Сохраняем оригинальные данные для удаления
_basketItemId: item.id
};
@@ -75,7 +74,7 @@ export const useBasket = () => {
const addToBasket = async (shmotka) => {
try {
const basketItem = {
shmotkaId: shmotka.id // Правильное поле для бэкенда
shmotkaId: shmotka.id
};
const response = await fetch(`${apiUrl}/basket`, {
@@ -97,8 +96,6 @@ export const useBasket = () => {
}
};
// Убраны функции updateQuantity, так как quantity не поддерживается
const clearBasket = async () => {
try {
const response = await fetch(`${apiUrl}/basket`, {
@@ -121,7 +118,7 @@ export const useBasket = () => {
};
const getBasketCount = () => {
return basketItems.length; // Теперь просто количество товаров, без quantity
return basketItems.length;
};
return {

View File

@@ -22,13 +22,13 @@ export const useLikes = () => {
// Преобразуем данные в формат фронтенда
const mappedItems = data.map(item => {
const shmotka = item.shmotka; // Правильное поле с бэкенда
const shmotka = item.shmotka;
return {
id: shmotka?.id || item.shmotkaId,
name: shmotka?.name || 'Без названия',
price: shmotka?.price || 0,
description: shmotka?.description || 'Описание отсутствует',
image: shmotka?.imageUrl || 'img/placeholder.jpg', // Правильное поле imageURL
image: shmotka?.imageUrl || 'img/placeholder.jpg',
category: shmotka?.category.name || 'Unknown',
condition: shmotka?.condition.name || 'Unknown',
categoryId: shmotka?.categoryId,
@@ -74,7 +74,7 @@ export const useLikes = () => {
const addToLikes = async (shmotka) => {
try {
const likeItem = {
shmotkaId: shmotka.id // Правильное поле для бэкенда
shmotkaId: shmotka.id
};
const response = await fetch(`${apiUrl}/likes`, {

View File

@@ -84,22 +84,17 @@ export const useProducts = () => {
const addShmotka = async (shmotkaData) => {
try {
console.log('🔍 useProducts - получены данные:', shmotkaData);
console.log('🔍 useProducts - image:', shmotkaData.image);
// Преобразуем данные для бэкенда - ВАЖНО: отправляем только ID
// Преобразуем данные для бэкенда
const newShmotka = {
name: shmotkaData.name,
price: parseFloat(shmotkaData.price),
description: shmotkaData.description,
imageUrl: shmotkaData.image, // ← ИСПРАВЛЕНО: используем shmotkaData.image
imageUrl: shmotkaData.image,
categoryId: parseInt(shmotkaData.categoryId || shmotkaData.category),
conditionId: parseInt(shmotkaData.conditionId || shmotkaData.condition),
inStock: true
};
console.log('🔍 useProducts - данные для отправки на бэкенд:', newShmotka);
console.log('🔍 useProducts - imageUrl для бэкенда:', newShmotka.imageUrl);
console.log('Sending to backend:', newShmotka);
const response = await fetch(`${apiUrl}/shmotki`, {
@@ -136,12 +131,11 @@ export const useProducts = () => {
const updateShmotka = async (id, shmotkaData) => {
try {
// Преобразуем данные для бэкенда - ВАЖНО: отправляем только ID
const updatedShmotka = {
name: shmotkaData.name,
price: parseFloat(shmotkaData.price),
description: shmotkaData.description,
image: shmotkaData.image,
imageUrl: shmotkaData.image,
categoryId: parseInt(shmotkaData.categoryId || shmotkaData.category),
conditionId: parseInt(shmotkaData.conditionId || shmotkaData.condition),
inStock: true
@@ -161,13 +155,12 @@ export const useProducts = () => {
const result = await response.json();
// Маппим ответ для фронтенда
const mappedResult = {
id: result.id,
name: result.name,
price: result.price,
description: result.description,
image: result.imageUrl,
image: result.imageUrl,
category: result.categoryId,
condition: result.conditionId,
inStock: result.inStock