import { request } from '@/utils/request'
import type { PageResult } from '@/types/common'
import type {
  OrderDetail,
  OrderPayUrlResult,
  OrderSubmitReq,
  OrderSubmitResult
} from '@/types/order'

/**
 * 提交订单（需登录）
 * POST /api/orders
 */
export function submitOrderApi(data: OrderSubmitReq) {
  return request<OrderSubmitResult>({
    url: '/api/orders',
    method: 'POST',
    data
  })
}

/**
 * 我的订单（按状态筛选）
 * GET /api/orders?current=&size=&status=（需登录）
 * status：不传=全部，0-待付款 1-待发货 2-待收货 3-已完成 4-已取消 5-已退款
 */
export function getOrderPageApi(current = 1, size = 10, status?: number) {
  return request<PageResult<OrderDetail>>({
    url: '/api/orders',
    method: 'GET',
    params: { current, size, status }
  })
}

/**
 * 订单详情
 * GET /api/orders/{id}（需登录）
 */
export function getOrderDetailApi(id: number) {
  return request<OrderDetail>({
    url: `/api/orders/${id}`,
    method: 'GET'
  })
}

/**
 * 获取支付宝电脑网站支付链接（需登录）
 * GET /api/orders/{id}/pay-url
 */
export function getOrderPayUrlApi(id: number) {
  return request<OrderPayUrlResult>({
    url: `/api/orders/${id}/pay-url`,
    method: 'GET'
  })
}

/**
 * 取消订单
 * POST /api/orders/{id}/cancel（需登录）
 */
export function cancelOrderApi(id: number) {
  return request<void>({
    url: `/api/orders/${id}/cancel`,
    method: 'POST'
  })
}

/**
 * 确认收货
 * POST /api/orders/{id}/receive（需登录）
 */
export function receiveOrderApi(id: number) {
  return request<void>({
    url: `/api/orders/${id}/receive`,
    method: 'POST'
  })
}
