|
|
@@ -0,0 +1,50 @@
|
|
|
+package cn.seecoder.fdroidrepository.Service.ServiceImpl;
|
|
|
+
|
|
|
+import cn.seecoder.fdroidrepository.Service.LikeService;
|
|
|
+import org.springframework.beans.factory.annotation.Autowired;
|
|
|
+import org.springframework.data.redis.core.RedisTemplate;
|
|
|
+import org.springframework.data.redis.core.SetOperations;
|
|
|
+import org.springframework.stereotype.Service;
|
|
|
+
|
|
|
+@Service
|
|
|
+public class RedisLikeService implements LikeService {
|
|
|
+ @Autowired
|
|
|
+ private RedisTemplate redisTemplate;
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public void operateLike2Redis(String userId, String postId) {
|
|
|
+ String likeKey = getLikeKey(postId);
|
|
|
+ SetOperations<String, String> setOps = redisTemplate.opsForSet();
|
|
|
+
|
|
|
+ // 判断用户是否已经点赞
|
|
|
+ if (userPostStatus(userId, postId)) {
|
|
|
+ // 用户已点赞,取消点赞
|
|
|
+ setOps.remove(likeKey, userId);
|
|
|
+ } else {
|
|
|
+ // 用户未点赞,进行点赞
|
|
|
+ setOps.add(likeKey, userId);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public boolean userPostStatus(String userId, String postId) {
|
|
|
+ String likeKey = getLikeKey(postId);
|
|
|
+ SetOperations<String, String> setOps = redisTemplate.opsForSet();
|
|
|
+
|
|
|
+ // 判断用户是否已经点赞
|
|
|
+ return setOps.isMember(likeKey, userId);
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public Long getPostLikeSum(String postId) {
|
|
|
+ String likeKey = getLikeKey(postId);
|
|
|
+ SetOperations<String, String> setOps = redisTemplate.opsForSet();
|
|
|
+
|
|
|
+ // 获取点赞总数并打印
|
|
|
+ return setOps.size(likeKey);
|
|
|
+ }
|
|
|
+
|
|
|
+ private String getLikeKey(String postId) {
|
|
|
+ return "like:" + postId;
|
|
|
+ }
|
|
|
+}
|