/**
 * 账号相关类型定义
 */

import { PaginationParams } from '@/types'

// 账号状态
export enum AccountStatus {
  ENABLED = 1, // 启用
  DISABLED = 0 // 禁用
}

// 账号实体（统一账号模型，匹配后端 ModelAccountResponse）
export interface PlatformAccount {
  ID: number
  CreatedAt?: string
  UpdatedAt?: string
  DeletedAt?: string | null
  creator: number // 创建人ID
  updater: number // 更新人ID
  username: string
  phone: string
  user_type: number // 用户类型 (1:超级管理员, 2:平台用户, 3:代理账号, 4:企业账号)
  enterprise_id?: number | null // 关联企业ID
  enterprise_name?: string // ⭐ 新增：企业名称
  shop_id?: number | null // 关联店铺ID
  shop_name?: string // ⭐ 新增：店铺名称
  status: AccountStatus // 状态 (0:禁用, 1:启用)
}

// 代理商实体
export interface Agent {
  id: string | number
  agentCode: string // 代理商编码
  agentName: string // 代理商名称
  contactPerson: string // 联系人
  contactPhone: string // 联系电话
  email?: string
  // 层级关系
  parentId?: string | number // 上级代理商ID
  parentName?: string // 上级代理商名称
  level: number // 代理商层级（1为一级代理）
  // 角色和权限
  customerRoleId: string | number // 客户角色ID
  customerRoleName?: string
  // 状态信息
  status: AccountStatus
  // 账号信息
  username: string // 登录账号
  // 业务数据
  cardCount?: number // 网卡数量
  deviceCount?: number // 设备数量
  subAgentCount?: number // 下级代理数量
  // 时间信息
  createTime: string
  updateTime?: string
  creatorName?: string
}

// 企业客户实体
export interface EnterpriseCustomer {
  id: string | number
  enterpriseCode: string // 企业编码
  enterpriseName: string // 企业名称
  contactPerson: string // 联系人
  contactPhone: string // 联系电话
  email?: string
  address?: string
  // 角色和权限
  customerRoleId: string | number // 客户角色ID
  customerRoleName?: string
  // 状态信息
  status: AccountStatus
  // 账号信息
  username: string // 登录账号
  // 业务数据
  cardCount?: number // 网卡数量
  deviceCount?: number // 设备数量
  // 时间信息
  createTime: string
  updateTime?: string
  creatorName?: string
}

// 客户账号（代理商+企业客户统一视图）
export interface CustomerAccount {
  id: string | number
  accountType: 'agent' | 'enterprise' // 账号类型
  accountCode: string // 账号编码
  accountName: string // 账号名称
  username: string
  phone?: string
  email?: string
  customerRoleName?: string
  status: AccountStatus
  lastLoginTime?: string
  createTime: string
}

// 账号查询参数
export interface AccountQueryParams extends PaginationParams {
  username?: string // 用户名模糊查询
  phone?: string // 手机号模糊查询
  user_type?: number // 用户类型 (1-4)
  status?: AccountStatus // 状态 (0:禁用, 1:启用)
  shop_id?: number // 按店铺ID筛选
  enterprise_id?: number // 按企业ID筛选
}

// 平台业务员候选账号
export interface PlatformSalesperson {
  account_id: number
  account_name: string
  phone_masked: string
}

// 平台业务员候选查询参数
export interface PlatformSalespersonQueryParams extends PaginationParams {
  account_type: 'platform'
  status: AccountStatus
  account_name?: string
}

// 代理商查询参数
export interface AgentQueryParams extends PaginationParams {
  keyword?: string
  parentId?: string | number
  level?: number
  customerRoleId?: string | number
  status?: AccountStatus
}

// 创建账号参数（匹配后端 ModelCreateAccountRequest）
export interface CreatePlatformAccountParams {
  username: string // 用户名 (3-50字符)
  password: string // 密码 (8-32字符)
  phone: string // 手机号 (11位)
  user_type: number // 用户类型 (1:超级管理员, 2:平台用户, 3:代理账号, 4:企业账号)
  enterprise_id?: number | null // 关联企业ID（企业账号必填）
  shop_id?: number | null // 关联店铺ID（代理账号必填）
}

// 创建代理商参数
export interface CreateAgentParams {
  agentCode: string
  agentName: string
  contactPerson: string
  contactPhone: string
  email?: string
  parentId?: string | number
  customerRoleId: string | number
  username: string
  password: string
  status: AccountStatus
}
