feat(note): 实现笔记点赞功能及Redis ZSet同步

- 新增笔记点赞MQ消费者LikeUnlikeNoteConsumer,支持点赞与取消点赞操作
- 添加LikeUnlikeNoteMqDTO数据传输对象和LikeUnlikeNoteTypeEnum枚举类
- 扩展NoteLikeDO实体类使用LocalDateTime并调整status字段类型为Integer
- 实现NoteLikeDOMapper的insertOrUpdate方法支持插入或更新点赞记录- 新增两个Lua脚本用于批量添加点赞记录及检查更新用户点赞ZSet-优化NoteServiceImpl中的点赞逻辑,增强幂等性校验和ZSet初始化机制
- 引入Redis ZSet维护用户最近100条点赞记录,并支持过期时间设置
- 调整MQ常量定义,增加点赞相关主题与标签配置
- 迁移DateUtils工具类至公共模块并修复相关引用路径
- 增加用户笔记点赞列表ZSet的Key构建方法及相关常量定义
This commit is contained in:
2025-10-17 22:07:48 +08:00
parent 648c621fbf
commit 7c92bd91f6
15 changed files with 390 additions and 9 deletions

View File

@@ -2,6 +2,7 @@ package com.hanserwei.hannote.user.relation.biz.consumer;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.google.common.util.concurrent.RateLimiter;
import com.hanserwei.framework.common.utils.DateUtils;
import com.hanserwei.framework.common.utils.JsonUtils;
import com.hanserwei.hannote.user.relation.biz.constant.MQConstants;
import com.hanserwei.hannote.user.relation.biz.constant.RedisKeyConstants;
@@ -13,7 +14,6 @@ import com.hanserwei.hannote.user.relation.biz.model.dto.FollowUserMqDTO;
import com.hanserwei.hannote.user.relation.biz.model.dto.UnfollowUserMqDTO;
import com.hanserwei.hannote.user.relation.biz.service.FansDOService;
import com.hanserwei.hannote.user.relation.biz.service.FollowingDOService;
import com.hanserwei.hannote.user.relation.biz.util.DateUtils;
import jakarta.annotation.Resource;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;

View File

@@ -8,6 +8,7 @@ import com.hanserwei.framework.biz.context.holder.LoginUserContextHolder;
import com.hanserwei.framework.common.exception.ApiException;
import com.hanserwei.framework.common.response.PageResponse;
import com.hanserwei.framework.common.response.Response;
import com.hanserwei.framework.common.utils.DateUtils;
import com.hanserwei.framework.common.utils.JsonUtils;
import com.hanserwei.hannote.user.dto.req.FindFollowingListReqVO;
import com.hanserwei.hannote.user.dto.resp.FindFollowingUserRspVO;
@@ -28,7 +29,6 @@ import com.hanserwei.hannote.user.relation.biz.rpc.UserRpcService;
import com.hanserwei.hannote.user.relation.biz.service.FansDOService;
import com.hanserwei.hannote.user.relation.biz.service.FollowingDOService;
import com.hanserwei.hannote.user.relation.biz.service.RelationService;
import com.hanserwei.hannote.user.relation.biz.util.DateUtils;
import jakarta.annotation.Resource;
import lombok.extern.slf4j.Slf4j;
import org.apache.rocketmq.client.producer.SendCallback;

View File

@@ -1,17 +0,0 @@
package com.hanserwei.hannote.user.relation.biz.util;
import java.time.LocalDateTime;
import java.time.ZoneOffset;
public class DateUtils {
/**
* LocalDateTime 转时间戳
*
* @param localDateTime LocalDateTime
* @return 时间戳
*/
public static long localDateTime2Timestamp(LocalDateTime localDateTime) {
return localDateTime.toInstant(ZoneOffset.UTC).toEpochMilli();
}
}