From ce4fd8592688d03994e9a8f4c252a04e55e578d4 Mon Sep 17 00:00:00 2001 From: zerosaturation Date: Fri, 22 May 2026 18:49:24 +0800 Subject: [PATCH] =?UTF-8?q?fea:=20=E4=BF=AE=E6=94=B9=E4=B8=8B=E6=9E=B6?= =?UTF-8?q?=E7=A7=BB=E9=99=A4=E7=82=B9=E8=B5=9E=E8=AE=B0=E5=BD=95=E5=88=A0?= =?UTF-8?q?=E9=99=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../repository/asset_like_repository.go | 2 +- .../service/asset_like_service.go | 4 +-- .../service/exhibition_service.go | 23 +++------------- .../socialService/provider/social_provider.go | 6 ++--- .../service/asset_like_service.go | 26 +++++++++---------- 5 files changed, 23 insertions(+), 38 deletions(-) diff --git a/backend/services/assetService/repository/asset_like_repository.go b/backend/services/assetService/repository/asset_like_repository.go index 50d8cae..c7d65aa 100644 --- a/backend/services/assetService/repository/asset_like_repository.go +++ b/backend/services/assetService/repository/asset_like_repository.go @@ -67,7 +67,7 @@ func (r *assetLikeRepository) Create(like *models.AssetLike) error { return err } if exists { - return errors.New("already liked") + return errors.New("本次展示已点赞") } if err := r.db.Create(like).Error; err != nil { diff --git a/backend/services/assetService/service/asset_like_service.go b/backend/services/assetService/service/asset_like_service.go index 0c66d63..94dce46 100644 --- a/backend/services/assetService/service/asset_like_service.go +++ b/backend/services/assetService/service/asset_like_service.go @@ -147,7 +147,7 @@ func (s *AssetLikeService) LikeAsset(ctx context.Context, assetID, userID, starI zap.Int64("asset_id", assetID), zap.Int64("user_id", userID), ) - return asset.LikeCount, fmt.Errorf("asset already liked") + return asset.LikeCount, fmt.Errorf("本次展示已点赞") } // 3. 开启事务 @@ -167,7 +167,7 @@ func (s *AssetLikeService) LikeAsset(ctx context.Context, assetID, userID, starI ) // 唯一约束冲突 = 已经点赞过 if isUniqueConstraintViolation(err) { - return fmt.Errorf("asset already liked") + return fmt.Errorf("本次展示已点赞") } return fmt.Errorf("failed to create like record: %w", err) } diff --git a/backend/services/galleryService/service/exhibition_service.go b/backend/services/galleryService/service/exhibition_service.go index d1c5b38..bbe140f 100644 --- a/backend/services/galleryService/service/exhibition_service.go +++ b/backend/services/galleryService/service/exhibition_service.go @@ -152,16 +152,8 @@ func (s *exhibitionService) RemoveFromSlot(userID, starID int64, req *pb.RemoveF return err } - // 5. 清除该资产的点赞记录(不阻断主流程) - // 目的:允许同一用户在下次展出时可以再次点赞 - go func(assetID int64) { - if err := s.assetClient.ClearAssetLikeRecords(assetID); err != nil { - logger.Logger.Error("Failed to clear asset like records after removal", - zap.Int64("asset_id", assetID), - zap.Error(err), - ) - } - }(exhibition.AssetID) + // 5. 保留点赞记录,允许下次展出时用户重新点赞 + // 点赞记录用于历史查询,每次展出通过 exhibition_id 区分 // 6. 发布事件 // TODO: 实现事件发布逻辑 // go s.publishEvent("gallery.remove_from_slot", exhibition) @@ -311,15 +303,8 @@ func (s *exhibitionService) RemoveExhibitionByAsset(ctx context.Context, assetID return err } - // 3. 清除该资产的点赞记录(不阻断主流程) - go func(assetID int64) { - if err := s.assetClient.ClearAssetLikeRecords(assetID); err != nil { - logger.Logger.Error("Failed to clear asset like records after removal", - zap.Int64("asset_id", assetID), - zap.Error(err), - ) - } - }(exhibition.AssetID) + // 3. 保留点赞记录,允许下次展出时用户重新点赞 + // 点赞记录用于历史查询,每次展出通过 exhibition_id 区分 return nil } diff --git a/backend/services/socialService/provider/social_provider.go b/backend/services/socialService/provider/social_provider.go index f67223b..65e9e68 100644 --- a/backend/services/socialService/provider/social_provider.go +++ b/backend/services/socialService/provider/social_provider.go @@ -262,7 +262,7 @@ func (p *SocialProvider) LikeAsset(ctx context.Context, req *pb.LikeAssetRequest return &pb.LikeAssetResponse{ Base: &common.BaseResponse{ Code: common.StatusCode_STATUS_INTERNAL_ERROR, - Message: "Failed to like asset: " + err.Error(), + Message: err.Error(), Timestamp: time.Now().UnixMilli(), }, }, nil @@ -308,7 +308,7 @@ func (p *SocialProvider) UnlikeAsset(ctx context.Context, req *pb.UnlikeAssetReq return &pb.UnlikeAssetResponse{ Base: &common.BaseResponse{ Code: common.StatusCode_STATUS_INTERNAL_ERROR, - Message: "Failed to unlike asset: " + err.Error(), + Message: err.Error(), Timestamp: time.Now().UnixMilli(), }, }, nil @@ -356,7 +356,7 @@ func (p *SocialProvider) CheckAssetLike(ctx context.Context, req *pb.CheckAssetL return &pb.CheckAssetLikeResponse{ Base: &common.BaseResponse{ Code: common.StatusCode_STATUS_INTERNAL_ERROR, - Message: "Failed to check asset like: " + err.Error(), + Message: err.Error(), Timestamp: time.Now().UnixMilli(), }, IsLiked: false, diff --git a/backend/services/socialService/service/asset_like_service.go b/backend/services/socialService/service/asset_like_service.go index eb848de..d9ca227 100644 --- a/backend/services/socialService/service/asset_like_service.go +++ b/backend/services/socialService/service/asset_like_service.go @@ -47,7 +47,7 @@ func (s *AssetLikeService) LikeAsset(ctx context.Context, assetID, userID, starI zap.Error(err), zap.Int64("asset_id", assetID), ) - return fmt.Errorf("failed to get asset: %w", err) + return fmt.Errorf("获取藏品信息失败,请稍后重试") } if getAssetResp.Base.Code != pbCommon.StatusCode_STATUS_OK { @@ -56,7 +56,7 @@ func (s *AssetLikeService) LikeAsset(ctx context.Context, assetID, userID, starI zap.Int32("code", int32(getAssetResp.Base.Code)), zap.String("message", getAssetResp.Base.Message), ) - return fmt.Errorf("asset not found: %s", getAssetResp.Base.Message) + return fmt.Errorf("藏品不存在") } // 2. 检查是否已点赞 @@ -69,7 +69,7 @@ func (s *AssetLikeService) LikeAsset(ctx context.Context, assetID, userID, starI zap.Error(err), zap.Int64("asset_id", assetID), ) - return fmt.Errorf("failed to check asset like: %w", err) + return fmt.Errorf("点赞失败,请稍后重试") } if checkLikeResp.IsLiked { @@ -77,7 +77,7 @@ func (s *AssetLikeService) LikeAsset(ctx context.Context, assetID, userID, starI zap.Int64("asset_id", assetID), zap.Int64("user_id", userID), ) - return fmt.Errorf("already liked this asset") + return fmt.Errorf("当前展示已点赞") } // 3. 调用 Asset Service 点赞接口 @@ -90,7 +90,7 @@ func (s *AssetLikeService) LikeAsset(ctx context.Context, assetID, userID, starI zap.Error(err), zap.Int64("asset_id", assetID), ) - return fmt.Errorf("failed to like asset: %w", err) + return fmt.Errorf("点赞失败,请稍后重试") } if likeResp.Base.Code != pbCommon.StatusCode_STATUS_OK { @@ -99,7 +99,7 @@ func (s *AssetLikeService) LikeAsset(ctx context.Context, assetID, userID, starI zap.Int32("code", int32(likeResp.Base.Code)), zap.String("message", likeResp.Base.Message), ) - return fmt.Errorf("like asset failed: %s", likeResp.Base.Message) + return fmt.Errorf("点赞失败: %s", likeResp.Base.Message) } logger.Logger.Info("Successfully liked asset", @@ -132,7 +132,7 @@ func (s *AssetLikeService) UnlikeAsset(ctx context.Context, assetID, userID, sta zap.Error(err), zap.Int64("asset_id", assetID), ) - return fmt.Errorf("failed to check asset like: %w", err) + return fmt.Errorf("取消点赞失败,请稍后重试") } if !checkLikeResp.IsLiked { @@ -153,7 +153,7 @@ func (s *AssetLikeService) UnlikeAsset(ctx context.Context, assetID, userID, sta zap.Error(err), zap.Int64("asset_id", assetID), ) - return fmt.Errorf("failed to unlike asset: %w", err) + return fmt.Errorf("取消点赞失败,请稍后重试") } if unlikeResp.Base.Code != pbCommon.StatusCode_STATUS_OK { @@ -162,7 +162,7 @@ func (s *AssetLikeService) UnlikeAsset(ctx context.Context, assetID, userID, sta zap.Int32("code", int32(unlikeResp.Base.Code)), zap.String("message", unlikeResp.Base.Message), ) - return fmt.Errorf("unlike asset failed: %s", unlikeResp.Base.Message) + return fmt.Errorf("取消点赞失败: %s", unlikeResp.Base.Message) } logger.Logger.Info("Successfully unliked asset", @@ -194,7 +194,7 @@ func (s *AssetLikeService) CheckAssetLike(ctx context.Context, assetID, userID, zap.Error(err), zap.Int64("asset_id", assetID), ) - return false, fmt.Errorf("failed to check asset like: %w", err) + return false, fmt.Errorf("取消点赞失败,请稍后重试") } if checkLikeResp.Base.Code != pbCommon.StatusCode_STATUS_OK { @@ -203,7 +203,7 @@ func (s *AssetLikeService) CheckAssetLike(ctx context.Context, assetID, userID, zap.Int32("code", int32(checkLikeResp.Base.Code)), zap.String("message", checkLikeResp.Base.Message), ) - return false, fmt.Errorf("check asset like failed: %s", checkLikeResp.Base.Message) + return false, fmt.Errorf("查询点赞状态失败: %s", checkLikeResp.Base.Message) } return checkLikeResp.IsLiked, nil @@ -229,7 +229,7 @@ func (s *AssetLikeService) GetAssetLikes(ctx context.Context, assetID int64, pag zap.Error(err), zap.Int64("asset_id", assetID), ) - return nil, fmt.Errorf("failed to get asset likes: %w", err) + return nil, fmt.Errorf("获取点赞列表失败,请稍后重试") } if getLikesResp.Base.Code != pbCommon.StatusCode_STATUS_OK { @@ -238,7 +238,7 @@ func (s *AssetLikeService) GetAssetLikes(ctx context.Context, assetID int64, pag zap.Int32("code", int32(getLikesResp.Base.Code)), zap.String("message", getLikesResp.Base.Message), ) - return nil, fmt.Errorf("get asset likes failed: %s", getLikesResp.Base.Message) + return nil, fmt.Errorf("获取点赞列表失败: %s", getLikesResp.Base.Message) } return getLikesResp, nil