refund.ts 2.33 KB
/*
 * @Author: Auto
 * @Date: 2025-01-XX
 * @LastEditors: 赵丽婷
 * @LastEditTime: 2026-01-08 11:03:31
 * @FilePath: \LinkMed\linkmed-vue3\src\api\refund.ts
 * @Description: 退费相关API
 * Copyright (c) 2025 by 北京连心医疗科技有限公司, All Rights Reserved.
 */
import { service as http } from "@/utils/request";

// ==================== Types ====================

/** 查询可退费金额请求参数 */
export interface GetRefundableAmountParams {
  orderId: number; // 订单ID(必需,int64)
}

/** 创建退款申请请求参数 */
export interface CreateRefundRequest {
  orderId: number; // 订单ID(必需,int64)
  refundAmount: number; // 退款金额(必需,>= 0)
  refundReason: string; // 退款原因(必需,>= 1 字符)
}

/** 用户退款记录 */
export interface UserRefundRecord {
  id?: number; // ID(可选,int64)
  orderId?: number; // 订单ID(可选,int64)
  orderNo?: string; // 订单编号(可选)
  userId?: number; // 用户ID(可选,int64)
  beanTransactionId?: number; // 领医豆交易记录ID(可选,int64)
  orderAmount?: number; // 订单金额(可选)
  refundAmount?: number; // 退款金额(可选)
  actualRefundAmount?: number; // 实际退款金额(可选)
  refundReason?: string; // 退款原因(可选)
  operateReason?: string; // 操作原因(可选)
  status?: 1 | 2 | 3 | 4 | 5 | 6; // 状态(可选,1=申请中,2=审核通过,3=退款中,4=退款完成,5=审核驳回,6=已取消)
  operatorId?: number; // 操作员ID(可选,int64)
  refundCompleteTime?: string; // 退款请求时间(可选,ISO 8601 日期时间)
  createdAt?: string; // 退款完成时间(可选,ISO 8601 日期时间)
  updatedAt?: string; // 更新时间(可选,ISO 8601 日期时间)
}

// ==================== APIs ====================

/** 查询订单可退费金额 */
export const getRefundableAmount = (params: GetRefundableAmountParams) =>
  http.get<number>("/pay/refund/refundable-amount", {
    params,
  });

/** 创建退款申请 */
export const createRefundRequest = (payload: CreateRefundRequest) =>
  http.post<UserRefundRecord>("/pay/refund/request", payload);

/** 取消退款申请 */
export const cancelRefundRequest = (refundId: number) =>
  http.post<UserRefundRecord>(`/pay/refund/${refundId}/cancel`);