From 2e7a7c060f0ce62692c38bef87aa8d27a8124079 Mon Sep 17 00:00:00 2001 From: Wonder Date: Thu, 23 Oct 2025 22:46:30 +0800 Subject: [PATCH] =?UTF-8?q?=20=F0=9F=94=84Update:=20=E4=BC=98=E5=8C=96?= =?UTF-8?q?=E7=82=B9=E8=B5=9E=E7=BC=93=E5=AD=98=E9=80=BB=E8=BE=91=EF=BC=8C?= =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E5=8F=96=E6=B6=88=E7=82=B9=E8=B5=9E=E6=A0=87?= =?UTF-8?q?=E8=AE=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../thumb/constant/ThumbConstant.java | 2 ++ .../thumb/service/impl/ThumbServiceImpl.java | 31 +++++++++++++++---- 2 files changed, 27 insertions(+), 6 deletions(-) diff --git a/src/main/java/cn/hezhaohui/thumb/constant/ThumbConstant.java b/src/main/java/cn/hezhaohui/thumb/constant/ThumbConstant.java index 185e265..b935186 100644 --- a/src/main/java/cn/hezhaohui/thumb/constant/ThumbConstant.java +++ b/src/main/java/cn/hezhaohui/thumb/constant/ThumbConstant.java @@ -18,4 +18,6 @@ public class ThumbConstant { * 用于作为Redis中存储临时点赞信息的key前缀 */ public static final String TEMP_THUMB_KEY_PREFIX = "temp_thumb:%s"; + + public static final Long UN_THUMB_CONSTANT = 0L; } diff --git a/src/main/java/cn/hezhaohui/thumb/service/impl/ThumbServiceImpl.java b/src/main/java/cn/hezhaohui/thumb/service/impl/ThumbServiceImpl.java index ed646cb..d51aa58 100644 --- a/src/main/java/cn/hezhaohui/thumb/service/impl/ThumbServiceImpl.java +++ b/src/main/java/cn/hezhaohui/thumb/service/impl/ThumbServiceImpl.java @@ -75,7 +75,13 @@ public class ThumbServiceImpl extends ServiceImpl boolean success = update && this.save(thumb); // 点赞记录存入 Redis if (success) { - redisTemplate.opsForHash().put(RedisKeyUtil.getUserThumbKey(loginUser.getId()), blogId.toString(), thumb.getId()); +// 一级缓存 +// redisTemplate.opsForHash().put(RedisKeyUtil.getUserThumbKey(loginUser.getId()), blogId.toString(), thumb.getId()); + String hashKey = ThumbConstant.USER_THUMB_KEY_PREFIX + loginUser.getId(); + String filedKey = blogId.toString(); + Long realThumbId = thumb.getId(); + redisTemplate.opsForHash().put(hashKey, filedKey, realThumbId); + cacheManager.putIfPresent(hashKey, filedKey, realThumbId); } return success; }); @@ -94,8 +100,8 @@ public class ThumbServiceImpl extends ServiceImpl return transactionTemplate.execute(status -> { Long blogId = doThumbRequest.getBlogId(); // 判断是否已点过赞 - Object thumbIdObj = redisTemplate.opsForHash().get(RedisKeyUtil.getUserThumbKey(loginUser.getId()), blogId.toString()); - if (thumbIdObj == null) { + Object thumbIdObj = cacheManager.get(ThumbConstant.USER_THUMB_KEY_PREFIX + loginUser.getId(), blogId.toString()); + if (thumbIdObj == null || thumbIdObj.equals(ThumbConstant.UN_THUMB_CONSTANT)) { throw new BusinessException(ErrorCode.OPERATION_ERROR, "用户未点赞"); } Long thumbId = ((Number) thumbIdObj).longValue(); @@ -106,9 +112,14 @@ public class ThumbServiceImpl extends ServiceImpl .update(); // 更新点赞表数据 // 两者一起执行 - boolean success = update && this.removeById(thumbId); + boolean success = update && this.removeById(((Number)thumbIdObj).longValue()); if (success) { - redisTemplate.opsForHash().delete(RedisKeyUtil.getUserThumbKey(loginUser.getId()), blogId.toString()); +// 一级缓存 +// redisTemplate.opsForHash().delete(RedisKeyUtil.getUserThumbKey(loginUser.getId()), blogId.toString()); + String hashKey = ThumbConstant.USER_THUMB_KEY_PREFIX + loginUser.getId(); + String fieldKey = blogId.toString(); + redisTemplate.opsForHash().delete(hashKey, fieldKey); + cacheManager.putIfPresent(hashKey, fieldKey, ThumbConstant.UN_THUMB_CONSTANT); } return success; }); @@ -119,7 +130,15 @@ public class ThumbServiceImpl extends ServiceImpl public Boolean hasThumb(Long blogId, Long userId) { // 一级缓存 // return redisTemplate.opsForHash().hasKey(RedisKeyUtil.getUserThumbKey(userId), blogId.toString()); - return cacheManager.get(ThumbConstant.USER_THUMB_KEY_PREFIX + userId, blogId.toString()) != null; + + + Object thumbIdObj = cacheManager.get(ThumbConstant.USER_THUMB_KEY_PREFIX + userId, blogId.toString());; + if (thumbIdObj == null) { + return false; + } + Long thumbId = ((Number) thumbIdObj).longValue(); + return !thumbId.equals(ThumbConstant.UN_THUMB_CONSTANT); + } }