package model

import (
	"time"

	"gorm.io/gorm"
)

// ShopSeriesAllocationConfig 套餐系列分配配置版本模型
// 记录返佣配置的历史版本，订单创建时锁定配置版本
// 支持配置追溯和数据一致性保障
type ShopSeriesAllocationConfig struct {
	gorm.Model
	AllocationID        uint       `gorm:"column:allocation_id;index;not null;comment:关联的分配ID" json:"allocation_id"`
	Version             int        `gorm:"column:version;type:int;not null;comment:配置版本号" json:"version"`
	BaseCommissionMode  string     `gorm:"column:base_commission_mode;type:varchar(20);not null;comment:基础返佣模式(配置快照)" json:"base_commission_mode"`
	BaseCommissionValue int64      `gorm:"column:base_commission_value;type:bigint;not null;comment:基础返佣值(配置快照)" json:"base_commission_value"`
	EffectiveFrom       time.Time  `gorm:"column:effective_from;type:timestamptz;not null;comment:生效开始时间" json:"effective_from"`
	EffectiveTo         *time.Time `gorm:"column:effective_to;type:timestamptz;comment:生效结束时间(NULL表示当前生效)" json:"effective_to"`
}

// TableName 指定表名
func (ShopSeriesAllocationConfig) TableName() string {
	return "tb_shop_series_allocation_config"
}
