Files

123 lines
4.4 KiB
Go
Raw Permalink Normal View History

2025-11-17 13:32:54 +08:00
package model
import (
"time"
)
// Role 角色
type Role struct {
ID uint `json:"id" gorm:"primaryKey;autoIncrement"`
Name string `json:"name" gorm:"size:50;not null;uniqueIndex"`
DisplayName string `json:"display_name" gorm:"size:100;not null"`
Description string `json:"description" gorm:"size:255"`
Status int `json:"status" gorm:"default:1"` // 0禁用1正常
CreatedAt time.Time `json:"created_at"`
UpdatedAt time.Time `json:"updated_at"`
// 关联数据
Permissions []Permission `json:"permissions,omitempty" gorm:"many2many:ai_role_permissions;"`
Users []User `json:"users,omitempty" gorm:"many2many:ai_user_roles;"`
}
// Permission 权限
type Permission struct {
ID uint `json:"id" gorm:"primaryKey;autoIncrement"`
Name string `json:"name" gorm:"size:50;not null;uniqueIndex"`
DisplayName string `json:"display_name" gorm:"size:100;not null"`
Description string `json:"description" gorm:"size:255"`
Module string `json:"module" gorm:"size:50;not null"` // 模块名称user, product, order
Action string `json:"action" gorm:"size:50;not null"` // 操作名称create, read, update, delete
Resource string `json:"resource" gorm:"size:50"` // 资源名称
Status int `json:"status" gorm:"default:1"` // 0禁用1正常
CreatedAt time.Time `json:"created_at"`
UpdatedAt time.Time `json:"updated_at"`
// 关联数据
Roles []Role `json:"roles,omitempty" gorm:"many2many:ai_role_permissions;"`
}
// UserRole 用户角色关联
type UserRole struct {
ID uint `json:"id" gorm:"primaryKey;autoIncrement"`
UserID uint `json:"user_id" gorm:"not null"`
RoleID uint `json:"role_id" gorm:"not null"`
CreatedAt time.Time `json:"created_at"`
UpdatedAt time.Time `json:"updated_at"`
// 关联数据
User User `json:"user,omitempty" gorm:"foreignKey:UserID"`
Role Role `json:"role,omitempty" gorm:"foreignKey:RoleID"`
}
// RolePermission 角色权限关联
type RolePermission struct {
ID uint `json:"id" gorm:"primaryKey;autoIncrement"`
RoleID uint `json:"role_id" gorm:"not null"`
PermissionID uint `json:"permission_id" gorm:"not null"`
CreatedAt time.Time `json:"created_at"`
UpdatedAt time.Time `json:"updated_at"`
// 关联数据
Role Role `json:"role,omitempty" gorm:"foreignKey:RoleID"`
Permission Permission `json:"permission,omitempty" gorm:"foreignKey:PermissionID"`
}
// UserLoginLog 用户登录日志
type UserLoginLog struct {
ID uint `json:"id" gorm:"primaryKey;autoIncrement"`
UserID uint `json:"user_id" gorm:"not null"`
LoginIP string `json:"login_ip" gorm:"size:45"`
UserAgent string `json:"user_agent" gorm:"size:500"`
LoginTime time.Time `json:"login_time"`
Status int `json:"status" gorm:"default:1"` // 1成功0失败
Remark string `json:"remark" gorm:"size:255"`
// 关联数据
User User `json:"user,omitempty" gorm:"foreignKey:UserID"`
}
// UserOperationLog 用户操作日志
type UserOperationLog struct {
ID uint `json:"id" gorm:"primaryKey;autoIncrement"`
UserID uint `json:"user_id" gorm:"not null"`
Module string `json:"module" gorm:"size:50;not null"` // 模块名称
Action string `json:"action" gorm:"size:50;not null"` // 操作名称
Description string `json:"description" gorm:"size:255"` // 操作描述
IP string `json:"ip" gorm:"size:45"` // 操作IP
UserAgent string `json:"user_agent" gorm:"size:500"` // 用户代理
RequestData string `json:"request_data" gorm:"type:text"` // 请求数据
CreatedAt time.Time `json:"created_at"`
// 关联数据
User User `json:"user,omitempty" gorm:"foreignKey:UserID"`
}
// TableName 指定表名
func (Role) TableName() string {
return "ai_roles"
}
// TableName 指定表名
func (Permission) TableName() string {
return "ai_permissions"
}
// TableName 指定表名
func (UserRole) TableName() string {
return "ai_user_roles"
}
// TableName 指定表名
func (RolePermission) TableName() string {
return "ai_role_permissions"
}
// TableName 指定表名
func (UserLoginLog) TableName() string {
return "ai_user_login_logs"
}
// TableName 指定表名
func (UserOperationLog) TableName() string {
return "ai_user_operation_logs"
}