cart
This commit is contained in:
@@ -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;
|
||||
Reference in New Issue
Block a user