package provider import ( "context" "github.com/topfans/backend/pkg/logger" pbCastlove "github.com/topfans/backend/pkg/proto/castlove" "github.com/topfans/backend/services/assetService/service" "go.uber.org/zap" ) // CastloveConfigProvider 铸爱工艺配置 Provider // 实现 Triple 协议生成的 CastloveConfigServiceHandler 接口 // 部署在 assetService 内(端口 20003),由 gateway 通过 Dubbo Triple 调用 // // 注意:protoc-gen-go-triple v3 不生成 Unimplemented*Handler(不像 grpc-go), // 只需直接实现接口方法即可。 type CastloveConfigProvider struct { castloveConfigSvc service.CastloveConfigService } // 编译期断言:CastloveConfigProvider 必须实现 CastloveConfigServiceHandler 接口 // (protoc 生成 *.triple.go 后,上面 UnimplementedCastloveConfigServiceHandler 才能解析) var _ pbCastlove.CastloveConfigServiceHandler = (*CastloveConfigProvider)(nil) // NewCastloveConfigProvider 创建铸爱工艺配置 Provider 实例 func NewCastloveConfigProvider(svc service.CastloveConfigService) *CastloveConfigProvider { return &CastloveConfigProvider{ castloveConfigSvc: svc, } } // GetCastloveConfig 获取铸爱工艺配置 // RPC:CastloveConfigService.GetCastloveConfig // 鉴权:由 gateway 层 AuthMiddleware 强制 JWT,本服务信任 ctx 透传的 user_id func (p *CastloveConfigProvider) GetCastloveConfig(ctx context.Context, req *pbCastlove.GetCastloveConfigRequest) (*pbCastlove.GetCastloveConfigResponse, error) { logger.Logger.Info("Received GetCastloveConfig request") resp, err := p.castloveConfigSvc.GetConfig(ctx) if err != nil { logger.Logger.Error("GetCastloveConfig failed", zap.Error(err)) return &pbCastlove.GetCastloveConfigResponse{ Base: resp.Base, // 若有 base 则保留(可能含部分状态);否则为 nil,由调用方判空 }, err } logger.Logger.Debug("GetCastloveConfig successful", zap.Int("categories_count", len(resp.Categories)), zap.String("version", resp.Version), ) return resp, nil }