import request from '@/config/axios'
import type { Dayjs } from 'dayjs';

/** 用户邀请关系绑定台账表，记录新用户最终归属的邀请人信息 */
export interface UserInvites {
          id: number; // 邀请绑定记录主键ID
          inviterUserId?: number; // 邀请人用户ID
          inviteeUserId?: number; // 被邀请人用户ID（新注册用户）
          inviteCodeId?: number; // 使用的邀请码ID
          clickToken: string; // 绑定时关联的点击Token（通过邀请链接自动绑定时使用）
          bindType?: number; // 绑定方式：1=手动填写邀请码，2=邀请链接自动绑定，3=其他方式
          boundAt?: string | Dayjs; // 邀请关系绑定完成时间
          bindIp: string; // 绑定 iP
          bindUserAgent: string; // userAgent
          inviteType?: string; // 邀请码类型快照：USER=普通用户邀请，AGENT=代理邀请
          profitTenantId: number; // 收益结算归属租户ID（代理结算用，绑定时固化）
          profitEmployeeId: number; // 收益归因员工ID（用于区分租户员工/渠道，绑定时固化）
          inviterTenantId: number; // 邀请人所属租户ID快照（便于审计/对账，可选）
          inviteCode: string; // 邀请码字符串快照（便于排查，可选）
  }

// 用户邀请关系绑定台账表，记录新用户最终归属的邀请人 API
export const UserInvitesApi = {
  // 查询用户邀请关系绑定台账表，记录新用户最终归属的邀请人分页
  getUserInvitesPage: async (params: any) => {
    return await request.get({ url: `/keyboard/user-invites/page`, params })
  },

  // 查询用户邀请关系绑定台账表，记录新用户最终归属的邀请人详情
  getUserInvites: async (id: number) => {
    return await request.get({ url: `/keyboard/user-invites/get?id=` + id })
  },

  // 新增用户邀请关系绑定台账表，记录新用户最终归属的邀请人
  createUserInvites: async (data: UserInvites) => {
    return await request.post({ url: `/keyboard/user-invites/create`, data })
  },

  // 修改用户邀请关系绑定台账表，记录新用户最终归属的邀请人
  updateUserInvites: async (data: UserInvites) => {
    return await request.put({ url: `/keyboard/user-invites/update`, data })
  },

  // 删除用户邀请关系绑定台账表，记录新用户最终归属的邀请人
  deleteUserInvites: async (id: number) => {
    return await request.delete({ url: `/keyboard/user-invites/delete?id=` + id })
  },

  /** 批量删除用户邀请关系绑定台账表，记录新用户最终归属的邀请人 */
  deleteUserInvitesList: async (ids: number[]) => {
    return await request.delete({ url: `/keyboard/user-invites/delete-list?ids=${ids.join(',')}` })
  },

  // 导出用户邀请关系绑定台账表，记录新用户最终归属的邀请人 Excel
  exportUserInvites: async (params) => {
    return await request.download({ url: `/keyboard/user-invites/export-excel`, params })
  }
}