topfans/backend/services/assetService/provider/castlove_config_provider.go
2026-06-09 12:38:12 +08:00

53 lines
2.0 KiB
Go

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
}