Files
NetworkAuth/models/user.go

46 lines
1.9 KiB
Go
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
package models
import (
"strings"
"time"
"github.com/google/uuid"
"gorm.io/gorm"
)
// ============================================================================
// 结构体定义
// ============================================================================
// User 用户表模型
// 存储所有账号包括超级管理员Role=0和子账号Role=1等
// CreatedAt/UpdatedAt 由 GORM 自动维护
type User struct {
ID uint `gorm:"primaryKey;comment:账号ID自增主键"`
UUID string `gorm:"uniqueIndex;size:36;not null;comment:唯一标识符" json:"uuid"`
Username string `gorm:"uniqueIndex;size:64;not null;comment:账号名,唯一索引" json:"username"`
Password string `gorm:"size:255;not null;comment:密码哈希值"`
PasswordSalt string `gorm:"size:64;not null;comment:密码加密盐值"`
Status int `gorm:"not null;default:1;comment:状态0禁用1启用" json:"status"`
Role int `gorm:"not null;default:2;comment:角色类型0超级管理员1代理成员2普通成员" json:"role"`
Permissions string `gorm:"size:255;comment:权限列表,逗号分隔" json:"permissions"`
Nickname string `gorm:"size:64;comment:用户昵称" json:"nickname"`
Remark string `gorm:"size:255;comment:备注信息" json:"remark"`
Avatar string `gorm:"size:255;comment:用户头像URL" json:"avatar"`
CreatedAt time.Time `gorm:"autoCreateTime;comment:创建时间" json:"created_at"`
UpdatedAt time.Time `gorm:"comment:更新时间"`
}
// ============================================================================
// 结构体方法
// ============================================================================
// BeforeCreate 在创建记录前自动生成UUID
func (user *User) BeforeCreate(tx *gorm.DB) error {
// 生成UUID
if user.UUID == "" {
user.UUID = strings.ToUpper(uuid.New().String())
}
return nil
}