Files
ai_dianshang/server/internal/model/role.go
2025-11-17 14:11:46 +08:00

123 lines
4.4 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 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"
}