From bc54f58ddb1e384f87234ac8e1307de3c88837b6 Mon Sep 17 00:00:00 2001 From: yang Date: Mon, 5 Jan 2026 11:49:43 +0800 Subject: [PATCH] =?UTF-8?q?=E6=9F=A5=E8=AF=A2=E7=82=B9=E8=B5=9E=E7=9A=84?= =?UTF-8?q?=E5=86=85=E5=AE=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/bao/dating/config/WebConfig.java | 3 ++- .../dating/controller/PostLikeController.java | 11 ++++++++ .../com/bao/dating/mapper/PostLikeMapper.java | 11 ++++++++ .../bao/dating/service/PostLikeService.java | 8 ++++++ .../service/impl/PostLikeServiceImpl.java | 17 ++++++++++++ .../dating/service/impl/UserServiceImpl.java | 27 ++++++++++++++----- .../com/bao/dating/mapper/PostLikeMapper.xml | 4 +++ 7 files changed, 73 insertions(+), 8 deletions(-) diff --git a/src/main/java/com/bao/dating/config/WebConfig.java b/src/main/java/com/bao/dating/config/WebConfig.java index dc377a7..8bd0be2 100644 --- a/src/main/java/com/bao/dating/config/WebConfig.java +++ b/src/main/java/com/bao/dating/config/WebConfig.java @@ -30,7 +30,8 @@ public class WebConfig implements WebMvcConfigurer { // 忽略的接口 .excludePathPatterns( "/user/login", - "/user/sendCode" + "/user/sendCode", + "/user/loginByCode" ); } } diff --git a/src/main/java/com/bao/dating/controller/PostLikeController.java b/src/main/java/com/bao/dating/controller/PostLikeController.java index ef246e7..84756ec 100644 --- a/src/main/java/com/bao/dating/controller/PostLikeController.java +++ b/src/main/java/com/bao/dating/controller/PostLikeController.java @@ -2,11 +2,15 @@ package com.bao.dating.controller; import com.bao.dating.common.Result; import com.bao.dating.common.ResultCode; +import com.bao.dating.context.UserContext; import com.bao.dating.mapper.PostLikeMapper; +import com.bao.dating.pojo.entity.Post; import com.bao.dating.service.PostLikeService; +import com.bao.dating.util.JwtUtil; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; +import java.util.List; import java.util.Map; import java.util.Objects; @@ -44,4 +48,11 @@ public class PostLikeController { Long userId = body.get("user_id"); postLikeService.unlike(postId,userId); } + + @GetMapping("/getMyLikes") + public Result getMyLikes(){ + Long userId = UserContext.getUserId(); + List posts = postLikeService.listUserLikes(userId); + return Result.success(ResultCode.SUCCESS, "获取成功", posts); + } } diff --git a/src/main/java/com/bao/dating/mapper/PostLikeMapper.java b/src/main/java/com/bao/dating/mapper/PostLikeMapper.java index 41783e4..e0938cd 100644 --- a/src/main/java/com/bao/dating/mapper/PostLikeMapper.java +++ b/src/main/java/com/bao/dating/mapper/PostLikeMapper.java @@ -1,9 +1,12 @@ package com.bao.dating.mapper; +import com.bao.dating.pojo.entity.Post; import com.bao.dating.pojo.entity.PostLike; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; +import java.util.List; + @Mapper public interface PostLikeMapper { /** @@ -31,4 +34,12 @@ public interface PostLikeMapper { * @return */ int deleteByPostIdAndUserId(@Param("postId") Long postId, @Param("userId") Long userId); + + /** + * 查询点赞内容 + * @param postId + * @return + */ + + List selectLikeCount(@Param("postId") Long postId); } diff --git a/src/main/java/com/bao/dating/service/PostLikeService.java b/src/main/java/com/bao/dating/service/PostLikeService.java index ba705c0..9576137 100644 --- a/src/main/java/com/bao/dating/service/PostLikeService.java +++ b/src/main/java/com/bao/dating/service/PostLikeService.java @@ -1,6 +1,9 @@ package com.bao.dating.service; import com.bao.dating.common.Result; +import com.bao.dating.pojo.entity.Post; + +import java.util.List; public interface PostLikeService { /** @@ -19,4 +22,9 @@ public interface PostLikeService { * @param userId 用户ID */ void unlike(Long postId, Long userId); + + /** + * 查看用户所有点赞 + */ + List listUserLikes(Long userId); } diff --git a/src/main/java/com/bao/dating/service/impl/PostLikeServiceImpl.java b/src/main/java/com/bao/dating/service/impl/PostLikeServiceImpl.java index ee43274..e6de977 100644 --- a/src/main/java/com/bao/dating/service/impl/PostLikeServiceImpl.java +++ b/src/main/java/com/bao/dating/service/impl/PostLikeServiceImpl.java @@ -4,6 +4,7 @@ import com.bao.dating.common.Result; import com.bao.dating.common.ResultCode; import com.bao.dating.mapper.PostLikeMapper; import com.bao.dating.mapper.PostMapper; +import com.bao.dating.pojo.entity.Post; import com.bao.dating.pojo.entity.PostLike; import com.bao.dating.service.PostLikeService; import org.springframework.beans.factory.annotation.Autowired; @@ -11,11 +12,13 @@ import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import java.util.HashMap; +import java.util.List; import java.util.Map; @Service public class PostLikeServiceImpl implements PostLikeService { + @Autowired private PostMapper postMapper; @@ -24,6 +27,8 @@ public class PostLikeServiceImpl implements PostLikeService { + + /** * 点赞指定的 post * @@ -74,4 +79,16 @@ public class PostLikeServiceImpl implements PostLikeService { postMapper.decreaseLikeCount(postId); } } + + /** + * 获取用户点赞列表 + * + * @param userId 用户ID + * @return 统一返回结果 + */ + @Override + public List listUserLikes(Long userId) { + return postLikeMapper.selectLikeCount(userId); + } + } diff --git a/src/main/java/com/bao/dating/service/impl/UserServiceImpl.java b/src/main/java/com/bao/dating/service/impl/UserServiceImpl.java index 3ddff5b..f049df5 100644 --- a/src/main/java/com/bao/dating/service/impl/UserServiceImpl.java +++ b/src/main/java/com/bao/dating/service/impl/UserServiceImpl.java @@ -290,22 +290,35 @@ public class UserServiceImpl implements UserService { // 发送短信验证码 @Override public void sendSmsCode(String phone) { - //防刷:60 秒内只能发一次 String key = "sms:code:" + phone; - Boolean exists = stringRedisTemplate.hasKey(key); - if (Boolean.TRUE.equals(exists)){ - throw new RuntimeException("请勿频繁发送验证码"); + String timeKey = "sms:time:" + phone; // 用于记录上次发送时间的key + + // 检查是否在60秒内已经发送过 + Boolean timeKeyExists = stringRedisTemplate.hasKey(timeKey); + if (Boolean.TRUE.equals(timeKeyExists)) { + String lastSendTimeStr = stringRedisTemplate.opsForValue().get(timeKey); + long lastSendTime = Long.parseLong(lastSendTimeStr); + long currentTime = System.currentTimeMillis(); + // 如果距离上次发送不足60秒,抛出异常 + if (currentTime - lastSendTime < 60 * 1000) { + throw new RuntimeException("请勿频繁发送验证码"); + } } + // 生成验证码 String code = CodeUtil.generateCode(); // 发送短信 smsUtil.sendVerificationCode(phone, code); - //存 Redis(5分钟过期) + + // 存储验证码到Redis,5分钟过期 stringRedisTemplate.opsForValue() - .set(key,code, 5, TimeUnit.MINUTES); + .set(key, code, 5, TimeUnit.MINUTES); + // 存储发送时间戳,60秒过期(与验证码分开管理过期时间) + stringRedisTemplate.opsForValue() + .set(timeKey, String.valueOf(System.currentTimeMillis()), 60, TimeUnit.SECONDS); } - // 校验验证码 + // 验证验证码 @Override public boolean verifyCode(String phone, String code) { diff --git a/src/main/resources/com/bao/dating/mapper/PostLikeMapper.xml b/src/main/resources/com/bao/dating/mapper/PostLikeMapper.xml index fe82536..80cb698 100644 --- a/src/main/resources/com/bao/dating/mapper/PostLikeMapper.xml +++ b/src/main/resources/com/bao/dating/mapper/PostLikeMapper.xml @@ -14,4 +14,8 @@ delete from dating.post_like where post_id = #{postId} and user_id = #{userId} + + \ No newline at end of file