/**
 * 店铺相关类型定义 - 匹配后端 API 文档
 */

import { PaginationParams } from './common'

// 店铺响应实体
export interface ShopResponse {
  id: number // 店铺ID
  created_at: string // 创建时间
  updated_at: string // 更新时间
  shop_name: string // 店铺名称
  shop_code: string // 店铺编号
  level: number // 店铺层级 (1-7级)
  parent_id: number | null // 上级店铺ID
  parent_shop_name?: string // 上级店铺名称
  province: string // 省份
  city: string // 城市
  district: string // 区县
  address: string // 详细地址
  contact_name: string // 联系人姓名
  contact_phone: string // 联系人电话
  status: number // 状态 (0:禁用, 1:启用)
  business_owner_account_id?: number | null // 平台业务员账号ID
  business_owner_name?: string // 平台业务员名称
  business_owner_phone_masked?: string // 平台业务员脱敏手机号
}

// 店铺列表查询参数
export interface ShopQueryParams extends PaginationParams {
  id?: number // 店铺ID
  shop_name?: string // 店铺名称模糊查询
  shop_code?: string // 店铺编号模糊查询
  parent_shop_name?: string // 上级店铺名称模糊查询
  parent_id?: number | null // 上级店铺ID
  level?: number | null // 店铺层级 (1-7级)
  status?: number | null // 状态 (0:禁用, 1:启用)
  contact_phone?: string // 联系电话精确查询
  business_owner_account_id?: number | null // 平台业务员账号ID
  page?: number // 页码
  page_size?: number // 每页数量
}

// 创建店铺参数
export interface CreateShopParams {
  shop_name: string // 店铺名称（必填）
  shop_code: string // 店铺编号（必填）
  init_username: string // 初始账号用户名（必填）
  init_password: string // 初始账号密码（必填）
  init_phone: string // 初始账号手机号（必填）
  parent_id?: number | null // 上级店铺ID（一级店铺可不填）
  province?: string // 省份
  city?: string // 城市
  district?: string // 区县
  address?: string // 详细地址
  contact_name?: string // 联系人姓名
  contact_phone?: string // 联系人电话
  business_owner_account_id?: number | null // 平台业务员账号ID
}

// 更新店铺参数
export interface UpdateShopParams {
  shop_name: string // 店铺名称（必填）
  status: number // 状态（必填）
  province?: string // 省份
  city?: string // 城市
  district?: string // 区县
  address?: string // 详细地址
  contact_name?: string // 联系人姓名
  contact_phone?: string // 联系人电话
  business_owner_account_id?: number | null // 平台业务员账号ID
}

// 店铺列表分页响应
export interface ShopPageResult {
  items: ShopResponse[] | null // 店铺列表
  page?: number // 当前页码
  size?: number // 每页数量
  total?: number // 总记录数
}

// ========== 店铺默认角色相关 ==========

// 店铺角色响应
export interface ShopRoleResponse {
  role_id: number // 角色ID
  role_name: string // 角色名称
  role_desc: string // 角色描述
  shop_id: number // 店铺ID
  status: number // 状态 (0:禁用, 1:启用)
  role_type?: number // 角色类型 (1:平台角色, 2:客户角色) - 可选,用于UI显示
}

// 店铺角色列表响应
export interface ShopRolesResponse {
  shop_id: number // 店铺ID
  roles: ShopRoleResponse[] | null // 角色列表
}

// 分配店铺角色请求
export interface AssignShopRolesRequest {
  role_ids: number[] | null // 角色ID列表
}

// 更新店铺实际信用额度请求
export interface UpdateShopCreditLimitRequest {
  credit_enabled: boolean // 是否启用实际信用额度
  credit_limit: number // 实际信用额度（分）
  version: number // 资金概况版本，用于并发控制
}
