topfans/backend/services/socialService/client/asset_client.go
2026-04-07 22:29:48 +08:00

117 lines
3.1 KiB
Go
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

package client
import (
"context"
"fmt"
"dubbo.apache.org/dubbo-go/v3/client"
_ "dubbo.apache.org/dubbo-go/v3/imports"
assetPb "github.com/topfans/backend/pkg/proto/asset"
"go.uber.org/zap"
)
// AssetClient Asset Service RPC 客户端
type AssetClient struct {
client assetPb.AssetService
logger *zap.Logger
}
// NewAssetClient 创建 Asset Service RPC 客户端
func NewAssetClient(serviceURL string, logger *zap.Logger) (*AssetClient, error) {
cli, err := client.NewClient(
client.WithClientURL(serviceURL),
)
if err != nil {
return nil, fmt.Errorf("failed to create dubbo client: %w", err)
}
// 创建服务客户端
assetClient, err := assetPb.NewAssetService(cli)
if err != nil {
return nil, fmt.Errorf("failed to create asset service client: %w", err)
}
return &AssetClient{
client: assetClient,
logger: logger,
}, nil
}
// GetAsset 获取资产信息(需要权限验证)
func (c *AssetClient) GetAsset(ctx context.Context, req *assetPb.GetAssetRequest) (*assetPb.GetAssetResponse, error) {
resp, err := c.client.GetAsset(ctx, req)
if err != nil {
c.logger.Error("Failed to get asset",
zap.Error(err),
zap.Int64("asset_id", req.AssetId),
)
return nil, err
}
return resp, nil
}
// GetAssetForRPC 获取资产信息内部RPC调用无权限验证
func (c *AssetClient) GetAssetForRPC(ctx context.Context, req *assetPb.GetAssetForRPCRequest) (*assetPb.GetAssetForRPCResponse, error) {
resp, err := c.client.GetAssetForRPC(ctx, req)
if err != nil {
c.logger.Error("Failed to get asset for RPC",
zap.Error(err),
zap.Int64("asset_id", req.AssetId),
)
return nil, err
}
return resp, nil
}
// LikeAsset 点赞资产
func (c *AssetClient) LikeAsset(ctx context.Context, req *assetPb.LikeAssetRequest) (*assetPb.LikeAssetResponse, error) {
resp, err := c.client.LikeAsset(ctx, req)
if err != nil {
c.logger.Error("Failed to like asset",
zap.Error(err),
zap.Int64("asset_id", req.AssetId),
)
return nil, err
}
return resp, nil
}
// UnlikeAsset 取消点赞资产
func (c *AssetClient) UnlikeAsset(ctx context.Context, req *assetPb.UnlikeAssetRequest) (*assetPb.UnlikeAssetResponse, error) {
resp, err := c.client.UnlikeAsset(ctx, req)
if err != nil {
c.logger.Error("Failed to unlike asset",
zap.Error(err),
zap.Int64("asset_id", req.AssetId),
)
return nil, err
}
return resp, nil
}
// CheckAssetLike 检查是否已点赞资产
func (c *AssetClient) CheckAssetLike(ctx context.Context, req *assetPb.CheckAssetLikeRequest) (*assetPb.CheckAssetLikeResponse, error) {
resp, err := c.client.CheckAssetLike(ctx, req)
if err != nil {
c.logger.Error("Failed to check asset like",
zap.Error(err),
zap.Int64("asset_id", req.AssetId),
)
return nil, err
}
return resp, nil
}
// GetAssetLikes 获取资产点赞列表
func (c *AssetClient) GetAssetLikes(ctx context.Context, req *assetPb.GetAssetLikesRequest) (*assetPb.GetAssetLikesResponse, error) {
resp, err := c.client.GetAssetLikes(ctx, req)
if err != nil {
c.logger.Error("Failed to get asset likes",
zap.Error(err),
zap.Int64("asset_id", req.AssetId),
)
return nil, err
}
return resp, nil
}