feat(消息): 添加消息点赞功能
- 在MessageController中添加点赞接口 - 在MessageRepository中添加点赞数更新方法 - 在IMessageService和MessageService中实现点赞逻辑 - 初始化测试数据时设置点赞数默认值为0 - 完善相关文档注释
This commit is contained in:
@@ -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);
|
||||
|
||||
Reference in New Issue
Block a user