/**
 * 平台账号相关类型定义 - 匹配后端 API 文档
 */

import { PaginationParams } from './common'

// 平台账号响应实体（匹配后端 ModelAccountResponse - 使用大写字段名）
export interface PlatformAccountResponse {
  ID: number // 账号ID
  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
  shop_id?: number | null // 关联店铺ID
  status: number // 状态 (0:禁用, 1:启用)
}

// 平台账号列表查询参数
export interface PlatformAccountQueryParams extends PaginationParams {
  username?: string // 用户名模糊查询
  phone?: string // 手机号模糊查询
  status?: number | null // 状态 (0:禁用, 1:启用)
  page?: number // 页码
  page_size?: number // 每页数量
}

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

// 更新平台账号参数（匹配后端 ModelUpdateAccountParams）
export interface UpdatePlatformAccountParams {
  username?: string | null // 用户名
  password?: string | null // 密码
  phone?: string | null // 手机号
  status?: number | null // 状态 (0:禁用, 1:启用)
}

// 修改密码参数
export interface ChangePlatformAccountPasswordParams {
  new_password: string // 新密码
}

// 分配角色参数
export interface AssignRolesParams {
  role_ids: number[] // 角色ID列表
}

// 启用/禁用账号参数
export interface UpdateAccountStatusParams {
  status: number // 状态 (0:禁用, 1:启用)
}

// 平台账号角色响应
export interface PlatformAccountRoleResponse {
  creator?: number // 创建人ID
  role_desc?: string // 角色描述
  role_name?: string // 角色名称
  role_type?: number // 角色类型
  status?: number // 状态
  updater?: number // 更新人ID
  ID?: number // 角色ID
}

// 平台账号列表分页响应（匹配后端 ModelAccountPageResult）
export interface PlatformAccountPageResult {
  items: PlatformAccountResponse[] | null // 账号列表
  page?: number // 当前页码
  size?: number // 每页数量
  total?: number // 总记录数
}
