plugin

package
v0.1.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Aug 13, 2026 License: Apache-2.0 Imports: 4 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func All

func All() map[string]*PluginDef

All 返回所有已注册的插件定义

func AllUploadStrategies

func AllUploadStrategies() map[string]*UploadStrategy

AllUploadStrategies 返回所有上传存储策略

func Register

func Register(def *PluginDef)

Register 注册一个插件定义

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

type IPluginChecker interface {
	IsInstalled(code string) bool
}

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 站点统计接口 插件可以实现此接口来提供站点访问统计功能

func GetStatistics

func GetStatistics(pluginCode string) ISiteStatistics

GetStatistics 获取站点统计实现

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 插件标准接口 — 所有插件必须实现。

func AllPlugins

func AllPlugins() []Plugin

AllPlugins 返回所有已注册的 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 插件定义(静态注册)

func Get

func Get(code string) *PluginDef

Get 根据 code 获取插件定义

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 URLStat

type URLStat struct {
	URL   string `json:"url"`
	Count int64  `json:"count"`
}

URLStat URL统计数据

type UploadStrategy

type UploadStrategy struct {
	Code      string   // 插件代码,如 "cms"
	Name      string   // 插件名称
	SiteAware bool     // 是否支持多站点
	SubPaths  []string // 允许的子目录
}

UploadStrategy 上传存储策略

func GetUploadStrategy

func GetUploadStrategy(code string) *UploadStrategy

GetUploadStrategy 获取上传存储策略

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL