This commit is contained in:
2025-11-14 14:44:46 +07:00
parent 0ca7536b70
commit f150a84cf0
10 changed files with 1581 additions and 184 deletions

View File

@@ -0,0 +1,93 @@
import api from './api';
export interface CartItem {
cartItemId: number;
productId: number;
productName: string;
productImage: string;
quantity: number;
price: number;
subtotal: number;
}
export interface CartResponse {
cartId: number;
userId: number;
items: CartItem[];
totalAmount: number;
totalItems: number;
createdAt: string;
}
export interface AddToCartRequest {
productId: number;
quantity: number;
}
export interface UpdateCartItemRequest {
quantity: number;
}
const cartService = {
// Thêm sản phẩm vào giỏ hàng
addToCart: async (userId: number, data: AddToCartRequest): Promise<CartResponse> => {
console.log('=== ADD TO CART REQUEST ===', { userId, data });
const response = await api.post<CartResponse>(
`/cart/${userId}`,
data,
{ requireAuth: true }
);
console.log('=== ADD TO CART RESPONSE ===', response);
return response;
},
// Lấy danh sách sản phẩm trong giỏ hàng
getCart: async (userId: number): Promise<CartResponse> => {
console.log('=== GET CART REQUEST ===', { userId });
const response = await api.get<CartResponse>(
`/cart/${userId}`,
{ requireAuth: true }
);
console.log('=== GET CART RESPONSE ===', response);
return response;
},
// Cập nhật số lượng sản phẩm
updateCartItem: async (
userId: number,
cartItemId: number,
data: UpdateCartItemRequest
): Promise<CartResponse> => {
console.log('=== UPDATE CART ITEM REQUEST ===', { userId, cartItemId, data });
const response = await api.put<CartResponse>(
`/cart/${userId}/items/${cartItemId}`,
data,
{ requireAuth: true }
);
console.log('=== UPDATE CART ITEM RESPONSE ===', response);
return response;
},
// Xóa một sản phẩm khỏi giỏ hàng
removeCartItem: async (userId: number, cartItemId: number): Promise<CartResponse> => {
console.log('=== REMOVE CART ITEM REQUEST ===', { userId, cartItemId });
const response = await api.delete<CartResponse>(
`/cart/${userId}/items/${cartItemId}`,
{ requireAuth: true }
);
console.log('=== REMOVE CART ITEM RESPONSE ===', response);
return response;
},
// Xóa tất cả sản phẩm khỏi giỏ hàng
clearCart: async (userId: number): Promise<void> => {
console.log('=== CLEAR CART REQUEST ===', { userId });
await api.delete<void>(
`/cart/${userId}/clear`,
{ requireAuth: true }
);
console.log('=== CLEAR CART SUCCESS ===');
},
};
export default cartService;