diff --git a/internal/service/texture_service.go b/internal/service/texture_service.go index c6690dd..f73102d 100644 --- a/internal/service/texture_service.go +++ b/internal/service/texture_service.go @@ -87,9 +87,7 @@ func (s *textureService) GetByID(ctx context.Context, id int64) (*model.Texture, } // 存入缓存(异步) - if texture2 != nil { - s.cache.SetAsync(context.Background(), cacheKey, texture2, s.cache.Policy.TextureTTL) - } + s.cache.SetAsync(context.Background(), cacheKey, texture2, s.cache.Policy.TextureTTL) return texture2, nil } @@ -382,7 +380,16 @@ func (s *textureService) UploadTexture(ctx context.Context, uploaderID int64, na s.cacheInv.BatchInvalidate(ctx, fmt.Sprintf("texture:user:%d:*", uploaderID)) // 重新查询以预加载 Uploader 关联 - return s.textureRepo.FindByID(ctx, texture.ID) + textureWithUploader, err := s.textureRepo.FindByID(ctx, texture.ID) + if err != nil { + // 如果查询失败,返回原始创建的 texture 对象(虽然可能没有 Uploader 信息) + return texture, nil + } + if textureWithUploader == nil { + // 如果查询返回 nil(极端情况,如数据库复制延迟),返回原始创建的 texture 对象 + return texture, nil + } + return textureWithUploader, nil } // parseTextureTypeInternal 解析材质类型