import request from "@/utils/request";
import { ChargeOrderInfoForm } from "@/api/orderManage/charge-order-info-api";

const USERINFO_BASE_URL = "/api/v1/user-info";

const UserInfoAPI = {
  /** 获取个人用户信息分页数据 */
  getPage(queryParams?: UserInfoPageQuery) {
    return request<any, PageResult<UserInfoPageVO[]>>({
      url: `${USERINFO_BASE_URL}/page`,
      method: "get",
      params: queryParams,
    });
  },
  /**
   * 获取个人用户信息表单数据
   *
   * @param id 个人用户信息ID
   * @returns 个人用户信息表单数据
   */
  getFormData(id: number) {
    return request<any, UserInfoForm>({
      url: `${USERINFO_BASE_URL}/${id}/form`,
      method: "get",
    });
  },

  /**
   *  添加个人用户信息
   *
   *  @param data 个人用户信息表单数据
   */
  create(data: UserInfoForm) {
    return request({
      url: `${USERINFO_BASE_URL}`,
      method: "post",
      data,
    });
  },

  /**
   * 更新个人用户信息
   *
   * @param id 个人用户信息ID
   * @param data 个人用户信息表单数据
   */
  update(id: string, data: UserInfoForm) {
    return request({
      url: `${USERINFO_BASE_URL}/${id}`,
      method: "put",
      data,
    });
  },

  /**
   * 批量删除个人用户信息，多个以英文逗号(,)分割
   *
   * @param ids 个人用户信息ID字符串，多个以英文逗号(,)分割
   */
  deleteByIds(ids: string) {
    return request({
      url: `${USERINFO_BASE_URL}/${ids}`,
      method: "delete",
    });
  },

  /**
   * 退款
   *
   * @param id 个人用户信息ID
   */
  refund(id: string) {
    return request({
      url: `${USERINFO_BASE_URL}/refundOrder/${id}`,
      method: "put",
    });
  },
  /**
   * 获取用户退款订单列表
   * @param queryParams
   */
  getUserRefundOrderList(queryParams?: UserRefundOrderPageQuery) {
    return request<any, PageResult<UserRefundOrderPageVO[]>>({
      url: `/api/v1/user-refunds-order-info/page`,
      method: "get",
      params: queryParams,
    });
  },
  /**
   * 导出充电订单信息
   * @param data
   */
  exportExcel(data: UserInfoForm) {
    return request<any, Blob>({
      url: `/api/v1/user-refunds-order-info/export`,
      method: "post",
      data,
      responseType: "blob",
    });
  },
};

export default UserInfoAPI;

/** 个人用户信息分页查询参数 */
export interface UserInfoPageQuery extends PageQuery {
  /** 手机号 */
  phone?: string;
  /** 所属企业ID */
  firmId?: number;
  /** 排序字段 */
  sortField?: string;
  /** 排序方式: ascending/descending */
  sortOrder?: string;
}

/** 个人用户信息表单对象 */
export interface UserInfoForm {
  /** 主键 */
  id?: number;
  /** 昵称 */
  nickName?: string;
  /** 手机号 */
  phone?: string;
  /** 微信openid */
  openid?: string;
}

/** 个人用户信息分页对象 */
export interface UserInfoPageVO {
  /** 主键ID */
  id?: number;
  /** 昵称 */
  nickName?: string;
  /** 所属企业 */
  firmName?: string;
  /** 手机号 */
  phone?: string;
  /** 微信openid */
  openid?: string;
  /** 当前余额 */
  balance?: number;
  /** 累计消费 */
  totalConsumption?: number;
  /** 创建时间 */
  createTime?: Date;
}

/** 用户退款订单分页查询参数 */
export interface UserRefundOrderPageQuery extends PageQuery {
  /** 用户ID(必传) */
  userId: number;
  /** 开始时间 */
  startTime?: string;
  /** 结束时间 */
  endTime?: string;
}

/** 用户退款订单分页对象 */
export interface UserRefundOrderPageVO {
  /** 订单ID */
  orderId?: number;
  /** 商户订单号 */
  orderNo?: string;
  /** 退款类型：1-主动退款 2-用户申请退款 */
  type?: number;
  /** 商户退款单号 */
  outRefundNo?: string;
  /** 微信支付退款单号 */
  refundId?: string;
  /** 微信支付订单号 */
  transactionId?: string;
  /** 退款原因 */
  reason?: string;
  /** 退款受理时间 */
  acceptedTime?: string;
  /** 退款成功时间 */
  successTime?: string;
  /** 退款金额（元） */
  amount?: number;
  /** 退款状态 */
  status?: string;
  /** 创建时间 */
  createTime?: string;
  /** 通知请求 */
  notifyRequest?: string;
}
