package model

import (
	"gorm.io/gorm"
)

// PersonalCustomerOpenID 个人客户 OpenID 关联模型
// 保存客户在不同微信应用（公众号/小程序）下的 OpenID 记录
// 同一客户可在多个 AppID 下拥有不同的 OpenID
// 唯一约束：UNIQUE(app_id, open_id) WHERE deleted_at IS NULL
type PersonalCustomerOpenID struct {
	gorm.Model
	CustomerID uint   `gorm:"column:customer_id;type:bigint;not null;index:idx_pco_customer_id;comment:关联个人客户ID" json:"customer_id"`
	AppID      string `gorm:"column:app_id;type:varchar(100);not null;comment:微信应用标识（公众号或小程序AppID）" json:"app_id"`
	OpenID     string `gorm:"column:open_id;type:varchar(100);not null;comment:当前应用下的OpenID" json:"open_id"`
	UnionID    string `gorm:"column:union_id;type:varchar(100);not null;default:'';comment:微信开放平台统一标识（可选）" json:"union_id"`
	AppType    string `gorm:"column:app_type;type:varchar(20);not null;default:'';comment:应用类型（official_account/miniapp）" json:"app_type"`
}

// TableName 指定表名
func (PersonalCustomerOpenID) TableName() string {
	return "tb_personal_customer_openid"
}
