53 lines
2.0 KiB
Go
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
|
|
}
|