feat(消息): 添加消息点赞功能

- 在MessageController中添加点赞接口
- 在MessageRepository中添加点赞数更新方法
- 在IMessageService和MessageService中实现点赞逻辑
- 初始化测试数据时设置点赞数默认值为0
- 完善相关文档注释
This commit is contained in:
qingfeng1121
2025-10-23 18:18:27 +08:00
parent f53e251d46
commit 46be613f28
11 changed files with 5740 additions and 129 deletions

View File

@@ -16,11 +16,13 @@ import java.util.Date;
import java.util.List;
import java.util.Optional;
import org.springframework.transaction.annotation.Transactional;
@Service
public class MessageService implements IMessageService {
private static final Logger logger = LoggerFactory.getLogger(MessageService.class);
@Autowired
private MessageRepository messageRepository;
@@ -42,7 +44,7 @@ public class MessageService implements IMessageService {
logger.warn("获取消息时ID无效: {}", id);
return ResponseMessage.failure("消息ID无效");
}
try {
logger.info("根据ID查询消息: {}", id);
Optional<Message> messageOptional = messageRepository.findById(id);
@@ -59,31 +61,33 @@ public class MessageService implements IMessageService {
}
@Override
@Transactional(rollbackFor = Exception.class)
public ResponseMessage<Message> saveMessage(MessageDto messageDto) {
// 参数校验
if (messageDto == null) {
logger.warn("保存消息时参数为空");
throw new IllegalArgumentException("MessageDto cannot be null");
}
// 业务逻辑校验
if (StringUtils.isEmpty(messageDto.getContent())) {
logger.warn("保存消息时内容为空");
throw new IllegalArgumentException("Message content cannot be empty");
}
if (StringUtils.isEmpty(messageDto.getNickname())) {
logger.warn("保存消息时昵称为空");
throw new IllegalArgumentException("Message nickname cannot be empty");
}
// 调用Repository保存数据
try {
logger.info("保存消息: {}", messageDto.getNickname());
Message message = new Message();
BeanUtils.copyProperties(messageDto, message);
message.setCreatedAt(new Date()); // 设置创建时间
message.setLikes(0); // 设置点赞数初始值为0
// 如果是回复确保parentid有效
if (messageDto.getParentid() != null && messageDto.getParentid() > 0) {
if (!messageRepository.existsById(messageDto.getParentid())) {
@@ -91,7 +95,7 @@ public class MessageService implements IMessageService {
return ResponseMessage.failure("回复的父消息不存在");
}
}
Message savedMessage = messageRepository.save(message);
logger.info("消息保存成功: {}", savedMessage.getMessageid());
return ResponseMessage.success(savedMessage, "保存成功", true);
@@ -102,12 +106,13 @@ public class MessageService implements IMessageService {
}
@Override
@Transactional(rollbackFor = Exception.class)
public ResponseMessage<Message> deleteMessage(Integer id) {
if (id == null || id <= 0) {
logger.warn("删除消息时ID无效: {}", id);
return ResponseMessage.failure("消息ID无效");
}
try {
logger.info("删除消息: {}", id);
if (messageRepository.existsById(id)) {
@@ -136,7 +141,7 @@ public class MessageService implements IMessageService {
logger.warn("根据文章ID查询消息时ID无效: {}", articleId);
return ResponseMessage.failure("文章ID无效");
}
try {
logger.info("根据文章ID查询消息: {}", articleId);
List<Message> messages = messageRepository.findByArticleid(articleId);
@@ -175,13 +180,32 @@ public class MessageService implements IMessageService {
}
}
// 点赞数增加
@Override
@Transactional(rollbackFor = Exception.class)
public ResponseMessage<Message> likeMessage(Integer id) {
if (id == null || id <= 0) {
logger.warn("点赞消息时ID无效: {}", id);
return ResponseMessage.failure("消息ID无效");
}
try {
logger.info("点赞消息: {}", id);
messageRepository.incrementLikes(id);
Message likedMessage = messageRepository.findById(id).orElse(null);
return ResponseMessage.success(likedMessage, "点赞成功", true);
} catch (DataAccessException e) {
logger.error("点赞消息失败: {}", id, e);
return ResponseMessage.failure("点赞消息失败:" + e.getMessage());
}
}
@Override
public ResponseMessage<List<Message>> searchMessagesByNickname(String nickname) {
if (StringUtils.isEmpty(nickname)) {
logger.warn("根据昵称查询消息时昵称为空");
return ResponseMessage.failure("昵称不能为空");
}
try {
logger.info("根据昵称查询消息: {}", nickname);
List<Message> messages = messageRepository.findByNicknameContaining(nickname);
@@ -191,8 +215,10 @@ public class MessageService implements IMessageService {
return ResponseMessage.failure("查询消息失败:" + e.getMessage());
}
}
//删除所有评论
// 删除所有评论
@Override
@Transactional(rollbackFor = Exception.class)
public ResponseMessage<Void> deleteAllMessages() {
try {
logger.info("删除所有消息");
@@ -203,13 +229,14 @@ public class MessageService implements IMessageService {
return ResponseMessage.failure("删除消息失败:" + e.getMessage());
}
}
@Override
public ResponseMessage<Long> getMessageCountByArticleId(Integer articleId) {
if (articleId == null || articleId <= 0) {
logger.warn("获取文章评论数量时ID无效: {}", articleId);
return ResponseMessage.failure("文章ID无效");
}
try {
logger.info("获取文章评论数量: {}", articleId);
Long count = messageRepository.countByArticleId(articleId);