package model

import (
	"gorm.io/gorm"
)

// Account 账号模型
type Account struct {
	gorm.Model
	BaseModel    `gorm:"embedded"`
	Username     string `gorm:"column:username;type:varchar(50);uniqueIndex:idx_account_username,where:deleted_at IS NULL;not null;comment:用户名" json:"username"`
	Phone        string `gorm:"column:phone;type:varchar(20);uniqueIndex:idx_account_phone,where:deleted_at IS NULL;not null;comment:手机号" json:"phone"`
	Password     string `gorm:"column:password;type:varchar(255);not null;comment:密码" json:"-"`
	UserType     int    `gorm:"column:user_type;type:int;not null;index;comment:用户类型 1=超级管理员 2=平台用户 3=代理账号 4=企业账号" json:"user_type"`
	ShopID       *uint  `gorm:"column:shop_id;index;comment:店铺ID（代理账号必填）" json:"shop_id,omitempty"`
	EnterpriseID *uint  `gorm:"column:enterprise_id;index;comment:企业ID（企业账号必填）" json:"enterprise_id,omitempty"`
	WeComCorpID  string `gorm:"column:wecom_corp_id;type:varchar(64);comment:绑定的企业微信企业 ID" json:"wecom_corp_id"`
	WeComUserID  string `gorm:"column:wecom_userid;type:varchar(64);comment:绑定的企业微信成员 userid" json:"wecom_userid"`
	WeComName    string `gorm:"column:wecom_name;type:varchar(100);comment:企业微信成员姓名快照" json:"wecom_name"`
	IsPrimary    bool   `gorm:"column:is_primary;type:boolean;default:false;comment:是否为店铺主账号（默认 false）" json:"is_primary"`
	Status       int    `gorm:"column:status;type:int;not null;default:1;comment:状态 0=禁用 1=启用" json:"status"`
}

// TableName 指定表名
func (Account) TableName() string {
	return "tb_account"
}
