Documentation
¶
Index ¶
- func SetRegistrar(f func(*Manager))
- type AtomicHandler
- type BaseContext
- type CronItemVO
- type EnableContext
- type InstallContext
- type Lifecycle
- type Manager
- func (m *Manager) ApplyConfigFromDB()
- func (m *Manager) Disable(name string) error
- func (m *Manager) DisablePlugin(c *response.Context)
- func (m *Manager) Enable(name string) error
- func (m *Manager) EnablePlugin(c *response.Context)
- func (m *Manager) EnablePluginCron(c *response.Context)
- func (m *Manager) EnsureCron(name, spec string) error
- func (m *Manager) Install(name string) error
- func (m *Manager) InstallPlugin(c *response.Context)
- func (m *Manager) IsRunning(name string) bool
- func (m *Manager) ListPluginCrons(c *response.Context)
- func (m *Manager) ListPluginMenus(c *response.Context)
- func (m *Manager) ListPlugins(c *response.Context)
- func (m *Manager) PersistStatus(name string, status Status, params *dao.Params) error
- func (m *Manager) Register(module Module) error
- func (m *Manager) RegisterAdminRoutes(r chi.Router)
- func (m *Manager) RegisterClusterRoutes(api chi.Router)
- func (m *Manager) RegisterManagementRoutes(api chi.Router)
- func (m *Manager) RegisterParamRoutes(r chi.Router)
- func (m *Manager) RegisterPluginAdminRoutes(api chi.Router)
- func (m *Manager) RegisterRootRoutes(root chi.Router)
- func (m *Manager) RemoveCron(name, spec string)
- func (m *Manager) RunCronOnce(name, spec string) error
- func (m *Manager) RunPluginCronOnce(c *response.Context)
- func (m *Manager) SetAtomicHandler(ah *AtomicHandler)
- func (m *Manager) SetEngine(e chi.Router)
- func (m *Manager) SetPluginCronEnabled(c *response.Context)
- func (m *Manager) SetRouterBuilder(builder func(chi.Router) http.Handler)
- func (m *Manager) Start()
- func (m *Manager) StartPlugin(name string) error
- func (m *Manager) StartPluginAPI(c *response.Context)
- func (m *Manager) StartPluginCron(c *response.Context)
- func (m *Manager) StatusOf(name string) (Status, bool)
- func (m *Manager) StopPlugin(name string) error
- func (m *Manager) StopPluginAPI(c *response.Context)
- func (m *Manager) StopPluginCron(c *response.Context)
- func (m *Manager) TogglePluginEnabled(c *response.Context)
- func (m *Manager) Uninstall(name string, keepData bool) error
- func (m *Manager) UninstallPlugin(c *response.Context)
- func (m *Manager) UninstallPluginKeepData(c *response.Context)
- func (m *Manager) Upgrade(name string, fromVersion string, toVersion string) error
- func (m *Manager) UpgradePlugin(c *response.Context)
- type Menu
- type Meta
- type Module
- type PluginItemVO
- type RouteCategoryVO
- type RouteItem
- type RunContext
- type Status
- type UninstallContext
- type UpgradeContext
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
Types ¶
type AtomicHandler ¶
type AtomicHandler struct {
// contains filtered or unexported fields
}
func NewAtomicHandler ¶
func NewAtomicHandler(h http.Handler) *AtomicHandler
func (*AtomicHandler) ServeHTTP ¶
func (h *AtomicHandler) ServeHTTP(w http.ResponseWriter, r *http.Request)
func (*AtomicHandler) Store ¶
func (h *AtomicHandler) Store(handler http.Handler)
type BaseContext ¶
BaseContext 基础上下文(所有生命周期共享,只读能力)
type CronItemVO ¶
type CronItemVO struct {
Spec string `json:"spec"`
Registered bool `json:"registered"`
Running bool `json:"running"`
Next string `json:"next,omitempty"`
Prev string `json:"prev,omitempty"`
}
CronItemVO 定时任务状态展示结构体
type InstallContext ¶
type InstallContext interface {
BaseContext
}
InstallContext 安装期上下文(只在首次安装时执行)
type Lifecycle ¶
type Lifecycle interface {
// Install 安装阶段;只执行一次,必须保证幂等;用于注册权限、创建表、初始化数据
Install(ctx InstallContext) error
// Upgrade 升级阶段;当版本变化时触发,用于安全迁移(SQL、数据、权限)
Upgrade(ctx UpgradeContext) error
// Enable 启用阶段;暴露运行期能力,如菜单、权限、AMIS 页面
Enable(ctx EnableContext) error
// Disable 禁用阶段;能力收敛,如隐藏菜单、撤销页面可访问(不删数据/权限)
Disable(ctx BaseContext) error
// Uninstall 卸载阶段(可选);清理插件资源(如允许可删除表与初始化数据)
Uninstall(ctx UninstallContext) error
// Start 启动后台任务入口;由系统在 Manager.Start 中调用;不可阻塞
Start(ctx BaseContext) error
// Stop 停止后台任务入口;由系统在 Manager.StopPlugin 中调用;不可阻塞
Stop(ctx BaseContext) error
// StartCron 启动定时任务入口;由系统根据metadata中的cron触发;不可阻塞
StartCron(ctx BaseContext, spec string) error
}
Lifecycle 插件生命周期接口,禁止隐式行为
type Manager ¶
type Manager struct {
// contains filtered or unexported fields
}
Manager 管理插件的注册、安装、启用和禁用
func (*Manager) ApplyConfigFromDB ¶
func (m *Manager) ApplyConfigFromDB()
ApplyConfigFromDB 启动时从数据库加载插件配置并应用 根据持久化状态执行安装或启用操作;未配置的插件默认启用并写入数据库
func (*Manager) DisablePlugin ¶
DisablePlugin 禁用指定名称的插件 路径参数为插件名,禁用失败时返回错误
func (*Manager) EnablePlugin ¶
EnablePlugin 启用指定名称的插件 路径参数为插件名,启用失败时返回错误
func (*Manager) EnablePluginCron ¶
EnablePluginCron 生效指定插件的一条定时任务(别名)
func (*Manager) EnsureCron ¶
EnsureCron 确保某条 cron 已注册(不存在则注册)
func (*Manager) InstallPlugin ¶
InstallPlugin 安装指定名称的插件 路径参数为插件名,安装失败时返回错误
func (*Manager) ListPluginCrons ¶
ListPluginCrons 获取指定插件的定时任务定义与状态
func (*Manager) ListPluginMenus ¶
ListPluginMenus 获取所有已启用插件的菜单定义 返回前端可直接使用的菜单JSON(与前端 MenuItem 结构一致)
func (*Manager) ListPlugins ¶
ListPlugins 获取所有已注册插件的Meta与状态 返回插件名称、标题、版本、描述及当前状态(中文)
func (*Manager) PersistStatus ¶
PersistStatus 将插件状态持久化到数据库 管理员API调用该方法写入配置,实际生效需要重启
func (*Manager) RegisterAdminRoutes ¶
func (*Manager) RegisterClusterRoutes ¶
RegisterClusterRoutes 某个插件的集群操作相关的路由注册 路径/k8s/cluster/<clusterID>/plugins/<pluginName>/xxx
func (*Manager) RegisterManagementRoutes ¶
RegisterManagementRoutes 某个插件的管理相关的操作的路由注册 路径/mgm/plugins/<pluginName>/yyy
func (*Manager) RegisterParamRoutes ¶
func (*Manager) RegisterPluginAdminRoutes ¶
RegisterPluginAdminRoutes 某个插件的管理相关的操作的路由注册 路径/admin/plugins/<pluginName>/yyy
func (*Manager) RegisterRootRoutes ¶
RegisterRootRoutes 某个插件的根路由注册 路径 /
func (*Manager) RunCronOnce ¶
RunCronOnce 立即执行一次某条 cron 的任务
func (*Manager) RunPluginCronOnce ¶
RunPluginCronOnce 立即执行指定插件的一条定时任务一次
func (*Manager) SetAtomicHandler ¶
func (m *Manager) SetAtomicHandler(ah *AtomicHandler)
func (*Manager) SetPluginCronEnabled ¶
SetPluginCronEnabled 设置插件定时任务开关(生效/关闭) 路径参数:name 插件名、spec cron 表达式、enabled true/false 行为:enabled=true 则生效(注册并调度);enabled=false 则关闭(移除调度)
func (*Manager) SetRouterBuilder ¶
func (*Manager) StartPlugin ¶
StartPlugin 启动指定插件的后台任务,从 Enabled/Stopped 状态变为 Running 状态
func (*Manager) StartPluginAPI ¶
StartPluginAPI 启动指定名称的插件 路径参数为插件名,启动失败时返回错误
func (*Manager) StartPluginCron ¶
StartPluginCron 手动启动(注册)指定插件的一条定时任务
func (*Manager) StopPlugin ¶
StopPlugin 停止指定插件的后台任务,从 Running 状态变为 Stopped 状态
func (*Manager) StopPluginAPI ¶
StopPluginAPI 停止指定名称的插件 路径参数为插件名,停止失败时返回错误
func (*Manager) StopPluginCron ¶
StopPluginCron 强制停止(移除)指定插件的一条定时任务
func (*Manager) TogglePluginEnabled ¶
TogglePluginEnabled 快捷切换插件启用/禁用状态 路径参数:name 插件名、enabled true/false 行为:enabled=true 则启用插件;enabled=false 则禁用插件
func (*Manager) UninstallPlugin ¶
UninstallPlugin 卸载指定名称的插件(删除数据) 路径参数为插件名,卸载失败时返回错误
func (*Manager) UninstallPluginKeepData ¶
UninstallPluginKeepData 卸载指定名称的插件(保留数据) 路径参数为插件名,卸载失败时返回错误
func (*Manager) UpgradePlugin ¶
UpgradePlugin 升级指定名称的插件(当代码版本高于数据库记录版本时) 路径参数为插件名,升级失败时返回错误
type Menu ¶
type Menu struct {
// Key 菜单唯一标识
Key string `json:"key,omitempty"`
// Title 菜单展示标题
Title string `json:"title"`
// Icon 图标(Font Awesome 类名)
Icon string `json:"icon,omitempty"`
// URL 跳转地址
URL string `json:"url,omitempty"`
// EventType 事件类型:'url' 或 'custom'
EventType string `json:"eventType,omitempty"`
// CustomEvent 自定义事件,如:'() => loadJsonPage("/path")'
CustomEvent string `json:"customEvent,omitempty"`
// Order 排序号
Order float64 `json:"order,omitempty"`
// Children 子菜单
Children []Menu `json:"children,omitempty"`
// Show 显示表达式(字符串形式的JS表达式)
// 表达式中可使用的全局函数:
// - isPlatformAdmin():判断是否为平台管理员
// - isUserHasRole('role'):判断用户是否有指定角色(role为字符串) guest platform_admin 两种
// - isUserInGroup('group'):判断用户是否在指定组(group为字符串) 自定义的各种用户组名称
// 字符串true/false,是否显示该菜单
// 注意:这是菜单的显示权限。
// 后端API业务逻辑需调用service.AuthService().EnsureUserIsPlatformAdmin(*gin.Context)等方法进行显式权限校验,
// 后端API的权限校验不能依赖此表达式。
Show string `json:"show,omitempty"`
}
type Meta ¶
type Meta struct {
// Name 插件唯一标识(系统级唯一)
Name string
// Title 插件展示名称
Title string
// Version 插件版本号
Version string
// Description 插件功能描述
Description string
}
Meta 插件元信息,用于系统识别与展示
type Module ¶
type Module struct {
// Meta 插件元信息(系统识别与展示)
Meta Meta
// Menus 菜单声明(0..n)
Menus []Menu
// Dependencies 插件依赖的其他插件名称列表;启用前需确保均已启用
Dependencies []string
// RunAfter 不依赖RunAfter中的插件,但是必须在他们之后启动
RunAfter []string
// Lifecycle 生命周期实现(由系统调度调用)
Lifecycle Lifecycle
// Crons 插件的定时任务调度表达式(5段 cron)
Crons []string
// Tables 插件使用的数据库表名列表
Tables []string
ClusterRouter func(cluster chi.Router)
ManagementRouter func(mgm chi.Router)
PluginAdminRouter func(admin chi.Router)
RootRouter func(root chi.Router)
}
Module 插件(Feature Module)声明体,仅用于描述能力集合
type PluginItemVO ¶
type PluginItemVO struct {
Name string `json:"name"`
Title string `json:"title"`
Version string `json:"version"`
DbVersion string `json:"dbVersion,omitempty"`
CanUpgrade bool `json:"canUpgrade,omitempty"`
Description string `json:"description"`
Status string `json:"status"`
Enabled bool `json:"enabled"`
Menus []Menu `json:"menus,omitempty"`
MenuCount int `json:"menuCount,omitempty"`
CronCount int `json:"cronCount,omitempty"`
Tables []string `json:"tables,omitempty"`
TableCount int `json:"tableCount,omitempty"`
Dependencies []string `json:"dependencies,omitempty"`
RunAfter []string `json:"runAfter,omitempty"`
Routes RouteCategoryVO `json:"routes,omitempty"`
}
PluginItemVO 插件列表展示结构体 用于在管理员接口中返回插件的基础信息与当前状态
type RouteCategoryVO ¶
type RouteCategoryVO struct {
Cluster []RouteItem `json:"cluster,omitempty"`
Admin []RouteItem `json:"admin,omitempty"`
Mgm []RouteItem `json:"mgm,omitempty"`
}
RouteCategoryVO 路由类别 类别为 cluster/mgm/admin/root,routes 为该类别下的路由列表
type Status ¶
type Status int
Status 插件状态
const ( // StatusUninstalled 未安装 StatusUninstalled Status = iota // StatusInstalled 已安装未启用 StatusInstalled // StatusEnabled 已启用(配置级别,插件已启用但未运行) StatusEnabled // StatusRunning 运行中(运行时级别,插件正在运行) StatusRunning // StatusStopped 已停止(运行时级别,插件已停止但仍然是启用状态) StatusStopped // StatusDisabled 已禁用(配置级别,插件被禁用) StatusDisabled )
type UninstallContext ¶
type UninstallContext interface {
BaseContext
// KeepData 返回是否保留数据的选项
KeepData() bool
}
UninstallContext 卸载期上下文(可选择是否保留数据库)
type UpgradeContext ¶
type UpgradeContext interface {
BaseContext
// FromVersion 返回旧版本号
FromVersion() string
// ToVersion 返回新版本号
ToVersion() string
}
UpgradeContext 升级期上下文(版本变更触发,用于安全迁移)