import request from "@/utils/request";

const USERFIRM_BASE_URL = "/api/v1/user-firm";

const UserFirmAPI = {
  /** 获取企业与用户关系分页数据 */
  getPage(queryParams?: UserFirmPageQuery) {
    return request<any, PageResult<UserFirmPageVO[]>>({
      url: `${USERFIRM_BASE_URL}/page`,
      method: "get",
      params: queryParams,
    });
  },
  /**
   * 获取企业与用户关系表单数据
   *
   * @param id 企业与用户关系ID
   * @returns 企业与用户关系表单数据
   */
  getFormData(id: number) {
    return request<any, UserFirmForm>({
      url: `${USERFIRM_BASE_URL}/${id}/form`,
      method: "get",
    });
  },

  /**
   * 获取企业信息列表
   */
  getFirmList() {
    return request<any, any>({
      url: `/api/v1/firmInfo/list`,
      method: "get",
    });
  },

  /**
   *  添加企业与用户关系
   *
   *  @param data 企业与用户关系表单数据
   */
  create(data: UserFirmForm) {
    return request({
      url: `${USERFIRM_BASE_URL}`,
      method: "post",
      data,
    });
  },

  /**
   * 更新企业与用户关系
   *
   * @param id 企业与用户关系ID
   * @param data 企业与用户关系表单数据
   */
  update(id: string, data: UserFirmForm) {
    return request({
      url: `${USERFIRM_BASE_URL}/${id}`,
      method: "put",
      data,
    });
  },

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

export default UserFirmAPI;

/** 企业与用户关系分页查询参数 */
export interface UserFirmPageQuery extends PageQuery {
  /** 手机号 */
  phone?: string;
  /** 企业ID */
  firmId?: number;
  /** 身份 1 管理员 2普通员工 */
  type?: number;
  /** 排序字段 */
  sortField?: string;
  /** 排序方式: ascending/descending */
  sortOrder?: string;
}

/** 企业与用户关系表单对象 */
export interface UserFirmForm {
  /** 用户id */
  userId?: number;
  /** 手机号 */
  phone?: string;
  /** 身份 1 管理员 2普通员工 */
  type?: number;
}

/** 企业与用户关系分页对象 */
export interface UserFirmPageVO {
  /** 主键ID */
  id?: number;
  /** 用户id */
  userId?: number;
  /** 手机号 */
  phone?: string;
  /** 企业ID */
  firmId?: number;
  /** 企业名称 */
  firmName?: string;
  /** 身份 1 管理员 2普通员工 */
  type?: number;
  /** 当前余额 */
  balance?: number;
  /** 累计消费 */
  totalConsumption?: number;
  /** 欠费金额 */
  amountOwed?: number;
  /** 创建时间 */
  createTime?: Date;
}
