import { request } from '@/utils/request'
import type { CartVO, CartAddReq, CartUpdateReq } from '@/types/cart'

/**
 * 获取购物车
 * GET /api/cart（需登录）
 */
export function getCartApi() {
  return request<CartVO>({
    url: '/api/cart',
    method: 'GET'
  })
}

/**
 * 添加商品到购物车
 * POST /api/cart（需登录）
 */
export function addToCartApi(data: CartAddReq) {
  return request<void>({
    url: '/api/cart',
    method: 'POST',
    data
  })
}

/**
 * 获取购物车数量（用于角标）
 * GET /api/cart/count（需登录）
 */
export function getCartCountApi() {
  return request<number>({
    url: '/api/cart/count',
    method: 'GET'
  })
}

/**
 * 修改购物车商品数量
 * PUT /api/cart/quantity（需登录）
 */
export function updateCartQuantityApi(data: CartUpdateReq) {
  return request<void>({
    url: '/api/cart/quantity',
    method: 'PUT',
    data
  })
}

/**
 * 切换购物车项选中状态
 * PUT /api/cart/{skuId}/selected（需登录）
 */
export function updateCartSelectedApi(skuId: number, selected: 0 | 1) {
  return request<void>({
    url: `/api/cart/${skuId}/selected`,
    method: 'PUT',
    params: { selected }
  })
}

/**
 * 全选 / 全不选
 * PUT /api/cart/all-selected（需登录）
 */
export function updateAllCartSelectedApi(selected: 0 | 1) {
  return request<void>({
    url: '/api/cart/all-selected',
    method: 'PUT',
    params: { selected }
  })
}

/**
 * 删除购物车项
 * DELETE /api/cart/{skuId}（需登录）
 */
export function deleteCartItemApi(skuId: number) {
  return request<void>({
    url: `/api/cart/${skuId}`,
    method: 'DELETE'
  })
}

/**
 * 批量删除购物车项
 * DELETE /api/cart（需登录）
 */
export function batchDeleteCartApi(skuIds: number[]) {
  return request<void>({
    url: '/api/cart',
    method: 'DELETE',
    data: skuIds
  })
}

/**
 * 清空购物车
 * DELETE /api/cart/all（需登录）
 */
export function clearCartApi() {
  return request<void>({
    url: '/api/cart/all',
    method: 'DELETE'
  })
}
