import { http } from "@/utils/http";
import { UserBalance } from "./balance";
import { WxUserDTO } from "../wx/wxUser";

export interface Ab98UserDTO {
  /** 主键ID */
  ab98UserId?: number;
  /** openid */
  openid?: string;
  /** 汇邦云用户唯一ID */
  userid?: string;
  /** 真实姓名 */
  name?: string;
  /** 手机号码 */
  tel?: string;
  /** 身份证号码 */
  idnum?: string;
  /** 性别（男 女） */
  sex?: string;
  /** 人脸照片地址 */
  faceImg?: string;
  /** 身份证正面地址 */
  idcardFront?: string;
  /** 身份证背面地址 */
  idcardBack?: string;
  /** 身份证登记地址 */
  address?: string;
  /** 是否已注册（0未注册 1已注册） */
  registered?: boolean;
  /** 剩余借呗（单位：分） */
  balance?: number;
  /** 已使用借呗 （单位：分） */
  useBalance?: number;
  /** 借呗额度 （单位：分） */
  balanceLimit?: number;
  /** 微信用户ID */
  wxUserId?: number;
  /** 微信用户昵称 */
  wxNickName?: string;
  /** 微信用户openid */
  wxUserOpenid?: string;
  /** 微信用户头像 */
  wxAvatar?: string;
}
export interface Ab98UserDetailDTO {
  /** 主键ID */
  ab98UserId?: number;
  /** openid */
  openid?: string;
  /** 汇邦云用户唯一ID */
  userid?: string;
  /** 真实姓名 */
  name?: string;
  /** 手机号码 */
  tel?: string;
  /** 身份证号码 */
  idnum?: string;
  /** 性别（男 女） */
  sex?: string;
  /** 人脸照片地址 */
  faceImg?: string;
  /** 身份证正面地址 */
  idcardFront?: string;
  /** 身份证背面地址 */
  idcardBack?: string;
  /** 身份证登记地址 */
  address?: string;
  /** 是否已注册（0未注册 1已注册） */
  registered?: boolean;
  createTime?: string;
  /** 剩余借呗（单位：分） */
  balance?: number;
  /** 已使用借呗（单位：分） */
  useBalance?: number;
  /** 借呗额度（单位：分） */
  balanceLimit?: number;
  /** 用户余额实体 */
  userBalanceEntity?: UserBalance;
  /** 微信用户列表 */
  wxUserList?: WxUserDTO[];
}

export interface Ab98UserQuery extends BasePageQuery {
  /** 企业ID（导出列：企业ID） */
  corpid: string;
  /** 真实姓名 */
  name?: string;
  /** 手机号码 */
  tel?: string;
  /** 身份证号码 */
  idnum?: string;
  /** 标签ID，多个标签ID用逗号分隔 */
  tagIds?: string;
  /** 绑定汇邦云 false未绑定 true已绑定 null 全部 */
  hasAb98UserId?: boolean;
}

export interface AddAb98UserCommand {
  /** openid */
  openid?: string;
  /** 汇邦云用户唯一ID */
  userid?: string;
  /** 真实姓名 */
  name?: string;
  /** 手机号码 */
  tel?: string;
  /** 身份证号码 */
  idnum?: string;
  /** 性别（男 女） */
  sex?: string;
}

export interface UpdateAb98UserCommand extends AddAb98UserCommand {
  /** 主键ID */
  ab98UserId: number;
}

export interface BindQyUserCommand {
  qyUserId: number;
  name: string;
  idNum: string;
}

export interface BindWxMpUserCommand {
  /** 企业ID */
  corpid: string;
  /** 动态码 */
  dynamicCode: string;
  /** 真实姓名 */
  name: string;
  /** 身份证号码 */
  idNum: string;
}


export const getAb98UserListApi = (params: Ab98UserQuery) => {
  return http.request<ResponseData<PageDTO<Ab98UserDTO>>>("get", "/ab98/users", { params });
};
export const getAb98UserListApiWithWx = (params: Ab98UserQuery) => {
  return http.request<ResponseData<PageDTO<Ab98UserDTO>>>("get", "/ab98/users/withWx", { params });
};

export const addAb98UserApi = (data: AddAb98UserCommand) => {
  return http.request<ResponseData<void>>("post", "/ab98/users", { data });
};

export const updateAb98UserApi = (id: number, data: UpdateAb98UserCommand) => {
  return http.request<ResponseData<void>>("put", `/ab98/users/${id}`, { data });
};

export const deleteAb98UserApi = (ids: number[]) => {
  return http.request<ResponseData<void>>("delete", `/ab98/users/${ids.join(',')}`);
};

export const getAb98UserDetailApi = (id: number, corpid: string) => {
  return http.request<ResponseData<Ab98UserDetailDTO>>("get", `/ab98/users/detail/${id}`, { params: { corpid } });
};

export const bindQyUserApi = (data: BindQyUserCommand) => {
  return http.request<ResponseData<void>>("post", "/ab98/users/bindQyUser", { data });
};


export const bindWxMpUser = (data: BindWxMpUserCommand) => {
  return http.request<ResponseData<void>>("post", "/ab98/users/bindWxMpUser", { data });
};