Controller.Container() 改用 contracts 自己的 Injector 类型别名(跟 di.go 里其它地方一致),不直接暴露 do.Injector。新增 Logger() *slog.Logger 让 控制器可以拿到当前进程的默认 logger 记结构化日志;LogKeyKind/LogKeyComponent 定义了两个标准字段 key(控制器大类 + 具体实例/类型),供各类 handler 统一 用同一套日志字段命名。
26 lines
546 B
Go
26 lines
546 B
Go
package contracts
|
|
|
|
import (
|
|
"log/slog"
|
|
|
|
"git.fsdpf.net/go/req"
|
|
)
|
|
|
|
// 日志结构化字段的标准 key:LogKeyKind 标识控制器大类(Http/Cron/Job 等),
|
|
// LogKeyComponent 标识具体是哪一个实例/类型。
|
|
const (
|
|
LogKeyKind = "kind"
|
|
LogKeyComponent = "component"
|
|
)
|
|
|
|
type Controller interface {
|
|
// 初始化
|
|
Init() error
|
|
// 获取 Container
|
|
Container() Injector
|
|
// 派遣一个任务
|
|
Dispatch(job string, payload any, u req.User) error
|
|
// Logger 返回当前进程的默认 slog logger
|
|
Logger() *slog.Logger
|
|
}
|