Documentation
¶
Index ¶
- func All() map[string]*PluginDef
- func AllUploadStrategies() map[string]*UploadStrategy
- func Register(def *PluginDef)
- func RegisterPlugin(p Plugin)
- func RegisterStatistics(pluginCode string, impl ISiteStatistics)
- func RegisterUploadStrategy(s *UploadStrategy)
- type IPluginChecker
- type ISiteStatistics
- type Plugin
- type PluginContext
- type PluginDef
- type SiteStatistics
- type TotalSiteStats
- type URLStat
- type UploadStrategy
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func AllUploadStrategies ¶
func AllUploadStrategies() map[string]*UploadStrategy
AllUploadStrategies 返回所有上传存储策略
func RegisterPlugin ¶
func RegisterPlugin(p Plugin)
RegisterPlugin 注册一个 Plugin 实例,同时将其 PluginDef 注册到全局注册表以保持向后兼容。
func RegisterStatistics ¶
func RegisterStatistics(pluginCode string, impl ISiteStatistics)
RegisterStatistics 注册站点统计实现
func RegisterUploadStrategy ¶
func RegisterUploadStrategy(s *UploadStrategy)
RegisterUploadStrategy 注册上传存储策略
Types ¶
type IPluginChecker ¶
IPluginChecker 插件状态检查接口(由内核 PluginService 实现)。
type ISiteStatistics ¶
type ISiteStatistics interface {
// TrackVisit 记录一次访问
TrackVisit(siteID uint, visitorID string, ua string, url string, ip string, isSpider bool, isAI bool) error
// GetStats 获取指定站点的统计数据
GetStats(siteID uint, startDate, endDate time.Time) (*SiteStatistics, error)
// GetTodayStats 获取今日统计数据
GetTodayStats(siteID uint) (*SiteStatistics, error)
// GetTotalStats 获取历史总统计数据
GetTotalStats(siteID uint) (*TotalSiteStats, error)
// GetDailyStatsList 获取每日统计列表(用于图表展示)
GetDailyStatsList(siteID uint, startDate, endDate string) ([]*SiteStatistics, error)
}
ISiteStatistics 站点统计接口 插件可以实现此接口来提供站点访问统计功能
type Plugin ¶
type Plugin interface {
// Code 返回插件唯一标识码。
Code() string
// Definition 返回插件静态定义(用于注册表展示)。
Definition() *PluginDef
// RegisterRoutes 在 Gin Engine 上注册插件路由。
RegisterRoutes(ctx *PluginContext) error
// OnInstall 安装时执行(如数据库迁移、种子数据)。
OnInstall(db *gorm.DB) error
// OnUninstall 卸载时执行(可选清理)。
OnUninstall(db *gorm.DB) error
}
Plugin 插件标准接口 — 所有插件必须实现。
type PluginContext ¶
type PluginContext struct {
Router *gin.Engine
DB *gorm.DB
Logger *zap.Logger
PluginConfig map[string]any // 插件专属配置段(来自 config.yaml → plugins.<code>)
Kernel any // 内核共享对象(内核侧传入实现 sdkconfig.IKernelConfig 的实例)
PluginChecker IPluginChecker // 插件状态检查器(内核 PluginService 实现)
Extras map[string]any // 额外跨插件依赖(如回收站 handler 等)
NoRouteHandlers *[]gin.HandlerFunc // 插件追加 NoRoute 处理器到此切片,而非直接调用 r.NoRoute()
}
PluginContext 插件注册路由时获得的运行时上下文。
type PluginDef ¶
type PluginDef struct {
Code string
Name string
Description string
Version string
Icon string
OnInstall func(db *gorm.DB) error // 安装时执行(如数据库迁移、种子数据)
OnUninstall func(db *gorm.DB) error // 卸载时执行(可选)
// SupportedDrivers 声明插件支持的数据库驱动列表。
// 空切片 = 兼容所有驱动(向后兼容旧插件)。
SupportedDrivers []string `json:"supported_drivers,omitempty"`
}
PluginDef 插件定义(静态注册)
type SiteStatistics ¶
type SiteStatistics struct {
SiteID uint `json:"site_id"`
Date string `json:"date"` // 日期 YYYY-MM-DD
UV int64 `json:"uv"` // 独立访客数
PV int64 `json:"pv"` // 页面浏览量
SpiderCount int64 `json:"spider_count"` // 蜘蛛访问次数
AIVisitCount int64 `json:"ai_visit_count"` // AI访问次数
TopURLs []URLStat `json:"top_urls"` // Top页面统计
}
SiteStatistics 站点统计数据
type TotalSiteStats ¶
type TotalSiteStats struct {
SiteID uint `json:"site_id"`
TotalUV int64 `json:"total_uv"` // 历史总UV
TotalPV int64 `json:"total_pv"` // 历史总PV
TotalSpiderCount int64 `json:"total_spider_count"` // 历史总蜘蛛
TotalAIVisit int64 `json:"total_ai_visit"` // 历史总AI
TodayUV int64 `json:"today_uv"` // 今日UV
TodayPV int64 `json:"today_pv"` // 今日PV
}
TotalSiteStats 历史总统计
type UploadStrategy ¶
type UploadStrategy struct {
Code string // 插件代码,如 "cms"
Name string // 插件名称
SiteAware bool // 是否支持多站点
SubPaths []string // 允许的子目录
}
UploadStrategy 上传存储策略
func GetUploadStrategy ¶
func GetUploadStrategy(code string) *UploadStrategy
GetUploadStrategy 获取上传存储策略
Click to show internal directories.
Click to hide internal directories.