topfans/backend/services/moderationService/client/asset_client.go
2026-06-22 17:19:48 +08:00

45 lines
1.1 KiB
Go

package client
import (
"context"
"errors"
"time"
"gorm.io/gorm"
"github.com/topfans/backend/pkg/models"
)
// AssetClient 验证 asset 目标存在 + 返回 owner_uid / star_id
type AssetClient struct {
db *gorm.DB
}
func NewAssetClient(db *gorm.DB) *AssetClient {
return &AssetClient{db: db}
}
// GetAssetForReport 验证目标存在 + 返回 (owner_uid, star_id, snapshot map)
func (c *AssetClient) GetAssetForReport(ctx context.Context, assetID int64) (ownerUID int64, starID int64, snapshot map[string]interface{}, err error) {
var asset models.Asset
if err = c.db.WithContext(ctx).First(&asset, assetID).Error; err != nil {
if errors.Is(err, gorm.ErrRecordNotFound) {
return 0, 0, nil, ErrTargetNotFound
}
return 0, 0, nil, err
}
starID = asset.StarID
snapshot = map[string]interface{}{
"asset_id": asset.ID,
"owner_uid": asset.OwnerUID,
"name": asset.Name,
"cover_url": asset.CoverURL,
"description": asset.Description,
"star_id": asset.StarID,
"snapshot_at": time.Now().UnixMilli(),
}
return asset.OwnerUID, starID, snapshot, nil
}
var ErrTargetNotFound = errors.New("target not found")