fea: 修改下架移除点赞记录删除
This commit is contained in:
parent
e29a718b2f
commit
ce4fd85926
@ -67,7 +67,7 @@ func (r *assetLikeRepository) Create(like *models.AssetLike) error {
|
|||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
if exists {
|
if exists {
|
||||||
return errors.New("already liked")
|
return errors.New("本次展示已点赞")
|
||||||
}
|
}
|
||||||
|
|
||||||
if err := r.db.Create(like).Error; err != nil {
|
if err := r.db.Create(like).Error; err != nil {
|
||||||
|
|||||||
@ -147,7 +147,7 @@ func (s *AssetLikeService) LikeAsset(ctx context.Context, assetID, userID, starI
|
|||||||
zap.Int64("asset_id", assetID),
|
zap.Int64("asset_id", assetID),
|
||||||
zap.Int64("user_id", userID),
|
zap.Int64("user_id", userID),
|
||||||
)
|
)
|
||||||
return asset.LikeCount, fmt.Errorf("asset already liked")
|
return asset.LikeCount, fmt.Errorf("本次展示已点赞")
|
||||||
}
|
}
|
||||||
|
|
||||||
// 3. 开启事务
|
// 3. 开启事务
|
||||||
@ -167,7 +167,7 @@ func (s *AssetLikeService) LikeAsset(ctx context.Context, assetID, userID, starI
|
|||||||
)
|
)
|
||||||
// 唯一约束冲突 = 已经点赞过
|
// 唯一约束冲突 = 已经点赞过
|
||||||
if isUniqueConstraintViolation(err) {
|
if isUniqueConstraintViolation(err) {
|
||||||
return fmt.Errorf("asset already liked")
|
return fmt.Errorf("本次展示已点赞")
|
||||||
}
|
}
|
||||||
return fmt.Errorf("failed to create like record: %w", err)
|
return fmt.Errorf("failed to create like record: %w", err)
|
||||||
}
|
}
|
||||||
|
|||||||
@ -152,16 +152,8 @@ func (s *exhibitionService) RemoveFromSlot(userID, starID int64, req *pb.RemoveF
|
|||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
// 5. 清除该资产的点赞记录(不阻断主流程)
|
// 5. 保留点赞记录,允许下次展出时用户重新点赞
|
||||||
// 目的:允许同一用户在下次展出时可以再次点赞
|
// 点赞记录用于历史查询,每次展出通过 exhibition_id 区分
|
||||||
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)
|
|
||||||
// 6. 发布事件
|
// 6. 发布事件
|
||||||
// TODO: 实现事件发布逻辑
|
// TODO: 实现事件发布逻辑
|
||||||
// go s.publishEvent("gallery.remove_from_slot", exhibition)
|
// go s.publishEvent("gallery.remove_from_slot", exhibition)
|
||||||
@ -311,15 +303,8 @@ func (s *exhibitionService) RemoveExhibitionByAsset(ctx context.Context, assetID
|
|||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
// 3. 清除该资产的点赞记录(不阻断主流程)
|
// 3. 保留点赞记录,允许下次展出时用户重新点赞
|
||||||
go func(assetID int64) {
|
// 点赞记录用于历史查询,每次展出通过 exhibition_id 区分
|
||||||
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)
|
|
||||||
|
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|||||||
@ -262,7 +262,7 @@ func (p *SocialProvider) LikeAsset(ctx context.Context, req *pb.LikeAssetRequest
|
|||||||
return &pb.LikeAssetResponse{
|
return &pb.LikeAssetResponse{
|
||||||
Base: &common.BaseResponse{
|
Base: &common.BaseResponse{
|
||||||
Code: common.StatusCode_STATUS_INTERNAL_ERROR,
|
Code: common.StatusCode_STATUS_INTERNAL_ERROR,
|
||||||
Message: "Failed to like asset: " + err.Error(),
|
Message: err.Error(),
|
||||||
Timestamp: time.Now().UnixMilli(),
|
Timestamp: time.Now().UnixMilli(),
|
||||||
},
|
},
|
||||||
}, nil
|
}, nil
|
||||||
@ -308,7 +308,7 @@ func (p *SocialProvider) UnlikeAsset(ctx context.Context, req *pb.UnlikeAssetReq
|
|||||||
return &pb.UnlikeAssetResponse{
|
return &pb.UnlikeAssetResponse{
|
||||||
Base: &common.BaseResponse{
|
Base: &common.BaseResponse{
|
||||||
Code: common.StatusCode_STATUS_INTERNAL_ERROR,
|
Code: common.StatusCode_STATUS_INTERNAL_ERROR,
|
||||||
Message: "Failed to unlike asset: " + err.Error(),
|
Message: err.Error(),
|
||||||
Timestamp: time.Now().UnixMilli(),
|
Timestamp: time.Now().UnixMilli(),
|
||||||
},
|
},
|
||||||
}, nil
|
}, nil
|
||||||
@ -356,7 +356,7 @@ func (p *SocialProvider) CheckAssetLike(ctx context.Context, req *pb.CheckAssetL
|
|||||||
return &pb.CheckAssetLikeResponse{
|
return &pb.CheckAssetLikeResponse{
|
||||||
Base: &common.BaseResponse{
|
Base: &common.BaseResponse{
|
||||||
Code: common.StatusCode_STATUS_INTERNAL_ERROR,
|
Code: common.StatusCode_STATUS_INTERNAL_ERROR,
|
||||||
Message: "Failed to check asset like: " + err.Error(),
|
Message: err.Error(),
|
||||||
Timestamp: time.Now().UnixMilli(),
|
Timestamp: time.Now().UnixMilli(),
|
||||||
},
|
},
|
||||||
IsLiked: false,
|
IsLiked: false,
|
||||||
|
|||||||
@ -47,7 +47,7 @@ func (s *AssetLikeService) LikeAsset(ctx context.Context, assetID, userID, starI
|
|||||||
zap.Error(err),
|
zap.Error(err),
|
||||||
zap.Int64("asset_id", assetID),
|
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 {
|
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.Int32("code", int32(getAssetResp.Base.Code)),
|
||||||
zap.String("message", getAssetResp.Base.Message),
|
zap.String("message", getAssetResp.Base.Message),
|
||||||
)
|
)
|
||||||
return fmt.Errorf("asset not found: %s", getAssetResp.Base.Message)
|
return fmt.Errorf("藏品不存在")
|
||||||
}
|
}
|
||||||
|
|
||||||
// 2. 检查是否已点赞
|
// 2. 检查是否已点赞
|
||||||
@ -69,7 +69,7 @@ func (s *AssetLikeService) LikeAsset(ctx context.Context, assetID, userID, starI
|
|||||||
zap.Error(err),
|
zap.Error(err),
|
||||||
zap.Int64("asset_id", assetID),
|
zap.Int64("asset_id", assetID),
|
||||||
)
|
)
|
||||||
return fmt.Errorf("failed to check asset like: %w", err)
|
return fmt.Errorf("点赞失败,请稍后重试")
|
||||||
}
|
}
|
||||||
|
|
||||||
if checkLikeResp.IsLiked {
|
if checkLikeResp.IsLiked {
|
||||||
@ -77,7 +77,7 @@ func (s *AssetLikeService) LikeAsset(ctx context.Context, assetID, userID, starI
|
|||||||
zap.Int64("asset_id", assetID),
|
zap.Int64("asset_id", assetID),
|
||||||
zap.Int64("user_id", userID),
|
zap.Int64("user_id", userID),
|
||||||
)
|
)
|
||||||
return fmt.Errorf("already liked this asset")
|
return fmt.Errorf("当前展示已点赞")
|
||||||
}
|
}
|
||||||
|
|
||||||
// 3. 调用 Asset Service 点赞接口
|
// 3. 调用 Asset Service 点赞接口
|
||||||
@ -90,7 +90,7 @@ func (s *AssetLikeService) LikeAsset(ctx context.Context, assetID, userID, starI
|
|||||||
zap.Error(err),
|
zap.Error(err),
|
||||||
zap.Int64("asset_id", assetID),
|
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 {
|
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.Int32("code", int32(likeResp.Base.Code)),
|
||||||
zap.String("message", likeResp.Base.Message),
|
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",
|
logger.Logger.Info("Successfully liked asset",
|
||||||
@ -132,7 +132,7 @@ func (s *AssetLikeService) UnlikeAsset(ctx context.Context, assetID, userID, sta
|
|||||||
zap.Error(err),
|
zap.Error(err),
|
||||||
zap.Int64("asset_id", assetID),
|
zap.Int64("asset_id", assetID),
|
||||||
)
|
)
|
||||||
return fmt.Errorf("failed to check asset like: %w", err)
|
return fmt.Errorf("取消点赞失败,请稍后重试")
|
||||||
}
|
}
|
||||||
|
|
||||||
if !checkLikeResp.IsLiked {
|
if !checkLikeResp.IsLiked {
|
||||||
@ -153,7 +153,7 @@ func (s *AssetLikeService) UnlikeAsset(ctx context.Context, assetID, userID, sta
|
|||||||
zap.Error(err),
|
zap.Error(err),
|
||||||
zap.Int64("asset_id", assetID),
|
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 {
|
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.Int32("code", int32(unlikeResp.Base.Code)),
|
||||||
zap.String("message", unlikeResp.Base.Message),
|
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",
|
logger.Logger.Info("Successfully unliked asset",
|
||||||
@ -194,7 +194,7 @@ func (s *AssetLikeService) CheckAssetLike(ctx context.Context, assetID, userID,
|
|||||||
zap.Error(err),
|
zap.Error(err),
|
||||||
zap.Int64("asset_id", assetID),
|
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 {
|
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.Int32("code", int32(checkLikeResp.Base.Code)),
|
||||||
zap.String("message", checkLikeResp.Base.Message),
|
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
|
return checkLikeResp.IsLiked, nil
|
||||||
@ -229,7 +229,7 @@ func (s *AssetLikeService) GetAssetLikes(ctx context.Context, assetID int64, pag
|
|||||||
zap.Error(err),
|
zap.Error(err),
|
||||||
zap.Int64("asset_id", assetID),
|
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 {
|
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.Int32("code", int32(getLikesResp.Base.Code)),
|
||||||
zap.String("message", getLikesResp.Base.Message),
|
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
|
return getLikesResp, nil
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user