This commit is contained in:
2026-10-26 22:42:29 +08:00
parent 6f13816bcf
commit 554f6737cf
9 changed files with 331 additions and 47 deletions
+24 -24
View File
@@ -3,17 +3,17 @@
// 因此本包模型不进小程序数据隔离逻辑。
package admin
import "time"
import "portal-mini-go/internal/pkg/types"
// User 是后台管理员账号。用户名全局唯一,密码以 bcrypt 哈希存储。
type User struct {
ID uint64 `gorm:"primaryKey;autoIncrement" json:"id"`
Username string `gorm:"column:username;type:varchar(64);uniqueIndex;not null" json:"username"`
PasswordHash string `gorm:"column:password_hash;type:varchar(255);not null" json:"-"`
Nickname string `gorm:"column:nickname;type:varchar(128)" json:"nickname"`
Status int8 `gorm:"column:status;type:tinyint;not null;default:1" json:"status"`
CreatedAt time.Time `json:"created_at"`
UpdatedAt time.Time `json:"updated_at"`
ID uint64 `gorm:"primaryKey;autoIncrement" json:"id"`
Username string `gorm:"column:username;type:varchar(64);uniqueIndex;not null" json:"username"`
PasswordHash string `gorm:"column:password_hash;type:varchar(255);not null" json:"-"`
Nickname string `gorm:"column:nickname;type:varchar(128)" json:"nickname"`
Status int8 `gorm:"column:status;type:tinyint;not null;default:1" json:"status"`
CreatedAt types.Time `json:"created_at"`
UpdatedAt types.Time `json:"updated_at"`
}
func (User) TableName() string { return "admin_users" }
@@ -26,13 +26,13 @@ const (
// Role 是后台角色,与权限多对多关联,再与管理员多对多关联。
type Role struct {
ID uint64 `gorm:"primaryKey;autoIncrement" json:"id"`
Code string `gorm:"column:code;type:varchar(64);uniqueIndex;not null" json:"code"`
Name string `gorm:"column:name;type:varchar(128);not null" json:"name"`
Description string `gorm:"column:description;type:varchar(512)" json:"description"`
Status int8 `gorm:"column:status;type:tinyint;not null;default:1" json:"status"`
CreatedAt time.Time `json:"created_at"`
UpdatedAt time.Time `json:"updated_at"`
ID uint64 `gorm:"primaryKey;autoIncrement" json:"id"`
Code string `gorm:"column:code;type:varchar(64);uniqueIndex;not null" json:"code"`
Name string `gorm:"column:name;type:varchar(128);not null" json:"name"`
Description string `gorm:"column:description;type:varchar(512)" json:"description"`
Status int8 `gorm:"column:status;type:tinyint;not null;default:1" json:"status"`
CreatedAt types.Time `json:"created_at"`
UpdatedAt types.Time `json:"updated_at"`
}
func (Role) TableName() string { return "admin_roles" }
@@ -40,15 +40,15 @@ func (Role) TableName() string { return "admin_roles" }
// Permission 是后台权限,分接口(api)与菜单(menu)两类。
// 接口权限 code 对应后端 API 守卫;菜单权限 code 用于前端动态渲染菜单树。
type Permission struct {
ID uint64 `gorm:"primaryKey;autoIncrement" json:"id"`
Code string `gorm:"column:code;type:varchar(128);uniqueIndex;not null" json:"code"`
Name string `gorm:"column:name;type:varchar(128);not null" json:"name"`
Type string `gorm:"column:type;type:varchar(16);not null;default:'api'" json:"type"`
Method string `gorm:"column:method;type:varchar(16)" json:"method"`
Path string `gorm:"column:path;type:varchar(255)" json:"path"`
ParentID uint64 `gorm:"column:parent_id;index" json:"parent_id"`
Sort int `gorm:"column:sort;not null;default:0" json:"sort"`
CreatedAt time.Time `json:"created_at"`
ID uint64 `gorm:"primaryKey;autoIncrement" json:"id"`
Code string `gorm:"column:code;type:varchar(128);uniqueIndex;not null" json:"code"`
Name string `gorm:"column:name;type:varchar(128);not null" json:"name"`
Type string `gorm:"column:type;type:varchar(16);not null;default:'api'" json:"type"`
Method string `gorm:"column:method;type:varchar(16)" json:"method"`
Path string `gorm:"column:path;type:varchar(255)" json:"path"`
ParentID uint64 `gorm:"column:parent_id;index" json:"parent_id"`
Sort int `gorm:"column:sort;not null;default:0" json:"sort"`
CreatedAt types.Time `json:"created_at"`
}
func (Permission) TableName() string { return "admin_permissions" }
+4 -4
View File
@@ -2,9 +2,9 @@
package model
import (
"time"
"gorm.io/gorm"
"portal-mini-go/internal/pkg/types"
)
// MiniProgram 是被后台纳管的微信小程序配置。
@@ -17,8 +17,8 @@ type MiniProgram struct {
AppSecret string `gorm:"column:app_secret;type:varchar(128);not null" json:"-"`
Status int8 `gorm:"type:tinyint;not null;default:1" json:"status"`
Ext string `gorm:"type:text" json:"ext"`
CreatedAt time.Time `json:"created_at"`
UpdatedAt time.Time `json:"updated_at"`
CreatedAt types.Time `json:"created_at"`
UpdatedAt types.Time `json:"updated_at"`
DeletedAt gorm.DeletedAt `gorm:"index" json:"-"`
}
+10 -10
View File
@@ -3,20 +3,20 @@
// 各小程序用户互不关联(open_id 在不同 appid 下天然互不冲突,故无需额外隔离键)。
package model
import "time"
import "portal-mini-go/internal/pkg/types"
// User 是小程序端用户。MiniID 关联被纳管的小程序(mini_programs.id),
// 与 open_id 共同唯一标识一个用户:(mini_id, open_id)。
type User struct {
ID uint64 `gorm:"primaryKey;autoIncrement" json:"id"`
MiniID uint64 `gorm:"column:mini_id;index:idx_mini_openid" json:"mini_id"`
OpenID string `gorm:"type:varchar(64);index:idx_mini_openid" json:"openid"`
UnionID string `gorm:"type:varchar(64);index" json:"union_id"`
Nickname string `gorm:"type:varchar(128)" json:"nickname"`
Avatar string `gorm:"type:varchar(512)" json:"avatar"`
Status int8 `gorm:"column:status;type:tinyint;not null;default:1" json:"status"`
CreatedAt time.Time `json:"created_at"`
UpdatedAt time.Time `json:"updated_at"`
ID uint64 `gorm:"primaryKey;autoIncrement" json:"id"`
MiniID uint64 `gorm:"column:mini_id;index:idx_mini_openid" json:"mini_id"`
OpenID string `gorm:"type:varchar(64);index:idx_mini_openid" json:"openid"`
UnionID string `gorm:"type:varchar(64);index" json:"union_id"`
Nickname string `gorm:"type:varchar(128)" json:"nickname"`
Avatar string `gorm:"type:varchar(512)" json:"avatar"`
Status int8 `gorm:"column:status;type:tinyint;not null;default:1" json:"status"`
CreatedAt types.Time `json:"created_at"`
UpdatedAt types.Time `json:"updated_at"`
}
func (User) TableName() string { return "users" }