package model

import (
	"time"

	"gorm.io/gorm"
)

// IotCard IoT 卡模型
// 物联网卡/流量卡的统一管理实体
// 通过 shop_id 区分所有权：NULL=平台所有，有值=店铺所有
type IotCard struct {
	gorm.Model
	BaseModel           `gorm:"embedded"`
	ICCID               string     `gorm:"column:iccid;type:varchar(20);uniqueIndex:idx_iot_card_iccid,where:deleted_at IS NULL;not null;comment:ICCID(唯一标识,电信19位/其他20位)" json:"iccid"`
	CardType            string     `gorm:"column:card_type;type:varchar(50);not null;comment:卡类型" json:"card_type"`
	CardCategory        string     `gorm:"column:card_category;type:varchar(20);default:'normal';not null;comment:卡业务类型 normal-普通卡 industry-行业卡" json:"card_category"`
	CarrierID           uint       `gorm:"column:carrier_id;index;not null;comment:运营商ID" json:"carrier_id"`
	CarrierType         string     `gorm:"column:carrier_type;type:varchar(20);comment:运营商类型(CMCC/CUCC/CTCC/CBN)，导入时快照" json:"carrier_type"`
	CarrierName         string     `gorm:"column:carrier_name;type:varchar(100);comment:运营商名称，导入时快照" json:"carrier_name"`
	IMSI                string     `gorm:"column:imsi;type:varchar(50);comment:IMSI" json:"imsi"`
	MSISDN              string     `gorm:"column:msisdn;type:varchar(20);comment:MSISDN(手机号码)" json:"msisdn"`
	BatchNo             string     `gorm:"column:batch_no;type:varchar(100);comment:批次号" json:"batch_no"`
	Supplier            string     `gorm:"column:supplier;type:varchar(255);comment:供应商" json:"supplier"`
	CostPrice           int64      `gorm:"column:cost_price;type:bigint;default:0;comment:成本价(分为单位)" json:"cost_price"`
	DistributePrice     int64      `gorm:"column:distribute_price;type:bigint;default:0;comment:分销价(分为单位)" json:"distribute_price"`
	Status              int        `gorm:"column:status;type:int;default:1;not null;comment:状态 1-在库 2-已分销 3-已激活 4-已停用" json:"status"`
	ShopID              *uint      `gorm:"column:shop_id;index;comment:店铺ID(NULL=平台所有,有值=店铺所有)" json:"shop_id,omitempty"`
	ActivatedAt         *time.Time `gorm:"column:activated_at;comment:激活时间" json:"activated_at"`
	ActivationStatus    int        `gorm:"column:activation_status;type:int;default:0;not null;comment:激活状态 0-未激活 1-已激活" json:"activation_status"`
	RealNameStatus      int        `gorm:"column:real_name_status;type:int;default:0;not null;comment:实名状态 0-未实名 1-已实名(行业卡可以保持0)" json:"real_name_status"`
	NetworkStatus       int        `gorm:"column:network_status;type:int;default:0;not null;comment:网络状态 0-停机 1-开机" json:"network_status"`
	DataUsageMB         int64      `gorm:"column:data_usage_mb;type:bigint;default:0;comment:累计流量使用(MB)" json:"data_usage_mb"`
	EnablePolling       bool       `gorm:"column:enable_polling;type:boolean;default:true;comment:是否参与轮询 true-参与 false-不参与" json:"enable_polling"`
	LastDataCheckAt     *time.Time `gorm:"column:last_data_check_at;comment:最后一次流量检查时间" json:"last_data_check_at"`
	LastRealNameCheckAt *time.Time `gorm:"column:last_real_name_check_at;comment:最后一次实名检查时间" json:"last_real_name_check_at"`
	LastSyncTime        *time.Time `gorm:"column:last_sync_time;comment:最后一次与Gateway同步时间" json:"last_sync_time"`
	SeriesID            *uint      `gorm:"column:series_id;index;comment:套餐系列ID(关联PackageSeries)" json:"series_id,omitempty"`
	FirstCommissionPaid bool       `gorm:"column:first_commission_paid;type:boolean;default:false;comment:一次性佣金是否已发放" json:"first_commission_paid"`
	AccumulatedRecharge int64      `gorm:"column:accumulated_recharge;type:bigint;default:0;comment:累计充值金额(分)" json:"accumulated_recharge"`
}

// TableName 指定表名
func (IotCard) TableName() string {
	return "tb_iot_card"
}
