orders.js 4.77 KB
/*
 * @Date: 2024-01-01 00:00:00
 * @LastEditors: 
 * @LastEditTime: 2024-01-01 00:00:00
 * @FilePath: /jgdl/src/api/orders.js
 * @Description: 车辆订单相关API接口
 */
import { fn, fetch } from './fn';

// API 端点定义
const OrderApi = {
  // 获取我的订单列表
  GET_MY_ORDERS: '/api/orders/my-orders',
  // 获取订单详情
  GET_ORDER_DETAIL: '/api/orders/detail',
  // 删除订单
  DELETE_ORDER: '/api/orders/delete',
  // 取消订单
  CANCEL_ORDER: '/api/orders/cancel',
  // 确认收货
  CONFIRM_ORDER: '/api/orders/confirm',
  // 提交评价
  SUBMIT_REVIEW: '/api/orders/review',
  // 申请退款
  REQUEST_REFUND: '/api/orders/refund',
};

/**
 * @description: 获取我的订单列表
 * @param {Object} params
 * @param {string} params.type - 订单类型 'bought' | 'sold'
 * @param {number} params.page - 页码
 * @param {number} params.limit - 每页数量
 * @param {string} params.status - 订单状态筛选(可选)
 * @returns {Promise}
 */
export const getMyOrdersAPI = (params) => {
  // TODO: 替换为真实的API调用
  return fn(fetch.get(OrderApi.GET_MY_ORDERS, params));
};

/**
 * @description: 获取订单详情
 * @param {Object} params
 * @param {string} params.orderId - 订单ID
 * @returns {Promise}
 */
export const getOrderDetailAPI = (params) => {
  // TODO: 替换为真实的API调用
  return fn(fetch.get(OrderApi.GET_ORDER_DETAIL, params));
};

/**
 * @description: 删除订单
 * @param {Object} params
 * @param {string} params.orderId - 订单ID
 * @returns {Promise}
 * 
 * @example
 * // 使用示例:
 * try {
 *   const response = await deleteOrderAPI({ orderId: 'ORDER_123' });
 *   if (response.success) {
 *     console.log('删除成功:', response.message);
 *   }
 * } catch (error) {
 *   console.error('删除失败:', error.message);
 * }
 * 
 * @apiResponse
 * {
 *   success: true,
 *   message: '订单删除成功',
 *   data: null
 * }
 */
export const deleteOrderAPI = (params) => {
  // TODO: 替换为真实的API调用
  // 当集成真实API时,请确保:
  // 1. 处理网络错误和超时
  // 2. 验证用户权限(只能删除自己的订单)
  // 3. 检查订单状态(只有特定状态的订单才能删除)
  // 4. 返回统一的响应格式
  return fn(fetch.delete(OrderApi.DELETE_ORDER, params));
};

/**
 * @description: 取消订单
 * @param {Object} params
 * @param {string} params.orderId - 订单ID
 * @param {string} params.reason - 取消原因(可选)
 * @returns {Promise}
 */
export const cancelOrderAPI = (params) => {
  // TODO: 替换为真实的API调用
  return fn(fetch.post(OrderApi.CANCEL_ORDER, params));
};

/**
 * @description: 确认收货/完成交易
 * @param {Object} params
 * @param {string} params.orderId - 订单ID
 * @returns {Promise}
 */
export const confirmOrderAPI = (params) => {
  // TODO: 替换为真实的API调用
  return fn(fetch.post(OrderApi.CONFIRM_ORDER, params));
};

/**
 * @description: 提交订单评价
 * @param {Object} params
 * @param {string} params.orderId - 订单ID
 * @param {number} params.rating - 评分 (1-5)
 * @param {string} params.comment - 评价内容
 * @param {Array} params.images - 评价图片(可选)
 * @returns {Promise}
 * 
 * @example
 * // 使用示例:
 * try {
 *   const response = await submitReviewAPI({
 *     orderId: 'ORDER_123',
 *     rating: 5,
 *     comment: '车况很好,卖家服务态度也很棒!',
 *     images: ['image1.jpg', 'image2.jpg'] // 可选
 *   });
 *   if (response.success) {
 *     console.log('评价提交成功:', response.message);
 *   }
 * } catch (error) {
 *   console.error('评价提交失败:', error.message);
 * }
 * 
 * @apiResponse
 * {
 *   success: true,
 *   message: '评价提交成功',
 *   data: {
 *     reviewId: 'REVIEW_123',
 *     createdAt: '2024-01-01T12:00:00Z'
 *   }
 * }
 */
export const submitReviewAPI = (params) => {
  // TODO: 替换为真实的API调用
  // 当集成真实API时,请确保:
  // 1. 验证评分范围(1-5)
  // 2. 验证评价内容长度限制
  // 3. 处理图片上传(如果有)
  // 4. 检查订单状态(只有已完成的订单才能评价)
  // 5. 防止重复评价
  return fn(fetch.post(OrderApi.SUBMIT_REVIEW, params));
};

/**
 * @description: 申请退款
 * @param {Object} params
 * @param {string} params.orderId - 订单ID
 * @param {string} params.reason - 退款原因
 * @param {number} params.amount - 退款金额
 * @param {Array} params.evidence - 退款凭证(可选)
 * @returns {Promise}
 */
export const requestRefundAPI = (params) => {
  // TODO: 替换为真实的API调用
  return fn(fetch.post(OrderApi.REQUEST_REFUND, params));
};

// 导出所有API
export default {
  getMyOrdersAPI,
  getOrderDetailAPI,
  deleteOrderAPI,
  cancelOrderAPI,
  confirmOrderAPI,
  submitReviewAPI,
  requestRefundAPI,
};