85 lines
3.6 KiB
Go
85 lines
3.6 KiB
Go
package model
|
||
|
||
import (
|
||
"gorm.io/gorm"
|
||
"time"
|
||
)
|
||
|
||
type User struct {
|
||
ID uint `gorm:"primaryKey" json:"id"`
|
||
Uuid string `json:"uuid" gorm:"index"`
|
||
UserId string `json:"user_id"`
|
||
Email string `json:"email" gorm:"index"`
|
||
Username string `json:"username" gorm:"index"`
|
||
LinuxName string `json:"linux_name" gorm:"index"`
|
||
Phone string `json:"phone" gorm:"index"`
|
||
//RoleId string `json:"role_id"`
|
||
//Role Role `json:"role" gorm:"foreignkey:RoleId;references:RoleId"`
|
||
Role []*Role `json:"role" gorm:"many2many:user_role;foreignkey:UserId;references:RoleId"`
|
||
DepartmentId string `json:"department_id"`
|
||
Department Departments `json:"department" gorm:"foreignkey:DepartmentId;references:DepartmentId"`
|
||
Departments []Departments `json:"departments" gorm:"many2many:user_department_relations;foreignkey:UserId;references:DepartmentId"`
|
||
PositionId string `json:"position_id"`
|
||
Position Position `json:"position" gorm:"foreignkey:PositionId;references:PositionId"`
|
||
LastLoginAt string `json:"last_login_at"`
|
||
LastLoginIp string `json:"last_login_ip"`
|
||
LastLoginAddress string `json:"last_login_address"`
|
||
Password string `json:"-"`
|
||
Gender string `json:"gender"`
|
||
Active bool `json:"active"`
|
||
IsManager bool `json:"is_manager" gorm:"default:false"`
|
||
IsRestrict bool `json:"is_restrict" gorm:"default:false"`
|
||
IpRange string `json:"ip_range"`
|
||
// 补充字段
|
||
Company string `json:"company" gorm:"comment:归属分公司"`
|
||
DefaultShell string `json:"default_shell" gorm:"用户默认shell"`
|
||
Home string `json:"home" gorm:"comment:用户home目录路径"`
|
||
Uid string `json:"uid" gorm:"comment:用户在Nis中的uid"`
|
||
Salt string `json:"-" gorm:"comment:密码盐"`
|
||
Iv string `json:"-"`
|
||
SosManager bool `json:"sos_manager" gorm:"comment:为true,默认加载到sos配置文件的admin中"`
|
||
ProjectManager bool `json:"project_manager" gorm:"comment:为true,能查看所有项目"`
|
||
CompanyManager bool `json:"company_manager" gorm:"comment:为true,可管理用户,用户组"`
|
||
Groups []*Group `json:"groups" gorm:"many2many:user_group;"`
|
||
DN string `json:"dn"`
|
||
CreatedAt time.Time `json:"created_at"`
|
||
UpdatedAt time.Time `json:"-"`
|
||
DeletedAt gorm.DeletedAt `gorm:"index" json:"-"`
|
||
}
|
||
|
||
func (User) TableName() string {
|
||
return "users"
|
||
}
|
||
|
||
type LoginRecord struct {
|
||
ID uint `gorm:"primaryKey" json:"id"`
|
||
Uuid string `json:"uuid" gorm:"index"`
|
||
Username string `json:"username"`
|
||
IP string `json:"ip"`
|
||
Address string `json:"address"`
|
||
Msg string `json:"msg"`
|
||
CreatedAt time.Time `json:"created_at"`
|
||
UpdatedAt time.Time `json:"-"`
|
||
DeletedAt gorm.DeletedAt `gorm:"index" json:"-"`
|
||
}
|
||
|
||
func (LoginRecord) TableName() string {
|
||
return "login_Record"
|
||
}
|
||
|
||
//
|
||
// Group
|
||
/* @Description: 根据项目,将项目内成员分组,如TP0001S */
|
||
type Group struct {
|
||
ID uint `gorm:"primaryKey" json:"id"`
|
||
Name string `json:"name" gorm:"comment:组名"`
|
||
Users []*User `json:"users" gorm:"many2many:user_group;"`
|
||
CreatedAt time.Time `json:"created_at"`
|
||
UpdatedAt time.Time `json:"-"`
|
||
DeletedAt gorm.DeletedAt `gorm:"index" json:"-"`
|
||
}
|
||
|
||
func (Group) TableName() string {
|
||
return "group"
|
||
}
|