package model

import (
	"time"

	"gorm.io/gorm"
)

// Device 设备模型
// 物联网设备(如 GPS 追踪器、智能传感器)
// 通过 shop_id 区分所有权：NULL=平台库存，有值=店铺所有
type Device struct {
	gorm.Model
	BaseModel               `gorm:"embedded"`
	DeviceNo                string     `gorm:"column:device_no;type:varchar(100);uniqueIndex:idx_device_no,where:deleted_at IS NULL;not null;comment:设备编号(唯一标识)" json:"device_no"`
	DeviceName              string     `gorm:"column:device_name;type:varchar(255);comment:设备名称" json:"device_name"`
	DeviceModel             string     `gorm:"column:device_model;type:varchar(100);comment:设备型号" json:"device_model"`
	DeviceType              string     `gorm:"column:device_type;type:varchar(50);comment:设备类型" json:"device_type"`
	MaxSimSlots             int        `gorm:"column:max_sim_slots;type:int;default:4;comment:最大插槽数量(默认4)" json:"max_sim_slots"`
	Manufacturer            string     `gorm:"column:manufacturer;type:varchar(255);comment:制造商" json:"manufacturer"`
	BatchNo                 string     `gorm:"column:batch_no;type:varchar(100);comment:批次号" json:"batch_no"`
	ShopID                  *uint      `gorm:"column:shop_id;index;comment:店铺ID(NULL=平台库存,有值=店铺所有)" json:"shop_id,omitempty"`
	Status                  int        `gorm:"column:status;type:int;default:1;not null;comment:状态 1-在库 2-已分销 3-已激活 4-已停用" json:"status"`
	ActivatedAt             *time.Time `gorm:"column:activated_at;comment:激活时间" json:"activated_at"`
	DeviceUsername          string     `gorm:"column:device_username;type:varchar(100);comment:设备登录用户名" json:"device_username"`
	DevicePasswordEncrypted string     `gorm:"column:device_password_encrypted;type:varchar(255);comment:设备登录密码(加密)" json:"device_password_encrypted"`
	DeviceAPIEndpoint       string     `gorm:"column:device_api_endpoint;type:varchar(500);comment:设备API端点" json:"device_api_endpoint"`
	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 (Device) TableName() string {
	return "tb_device"
}
