用途:按 Go 模块化架构约定生成可复用的单职责业务服务或领域服务,适用于邮件发送、令牌生成、密码哈希、模板编译、带缓存查询等被用例或其他服务消费的领域服务。
主要能力:采用三文件模式——DTO 结构体放在 internal/modules/<module>/dto/<service_name>_dto.go,端口接口放在 internal/modules/<module>/ports/<service_name>_service.go,服务实现放在 internal/modules/<module>/service/<service_name>_service.go。支持三种变体:单动作服务(Execute 方法加专用输入结构)、多方法服务(描述性方法名)、无状态服务(纯工具省略 logger 与配置)。
使用方式:先建 DTO 文件,再建端口接口,然后建实现文件,最后在模块 fx.go 中加入 Fx 装配,运行 make lint 与 make nilaway 校验。命名上接口为 XxxService,实现结构体同名,构造函数为 NewXxxService,正常返回指针,仅当初始化需要可能失败的 I/O 时返回 (*XxxService, error)。日志参数一律命名 logger,禁止使用 l 或 log。
规则与限制:依赖只面向端口接口,不依赖具体实现。每个返回错误的方法须先记录错误再返回,统一用 s.logger.Error("ServiceName.MethodName failed", logger.Error(err)),禁止 WithError。任何可能返回错误的服务必须持有 logger.Logger 字段。执行 I/O 的方法必须使用 trace.Span 并 defer span.End(),跨度名格式为 StructName.MethodName,纯工具可跳过追踪。含结构体方法的文件禁止包级独立函数,所有辅助逻辑必须是结构体私有方法;同一服务包内不得跨文件重复定义功能相同的辅助函数。实现文件不得写注释,注释只放在端口接口上。Fx 装配使用 fx.Provide 配 fx.Annotate 与 fx.As。以上为资料明确内容,具体收费、价格、平台支持情况暂未提供。