From b01f752252eaadd1fa31eda6a9ad43146660b721 Mon Sep 17 00:00:00 2001 From: 无关风月 <443237572@qq.com> Date: 星期四, 03 四月 2025 23:42:57 +0800 Subject: [PATCH] bug修改 --- xinquan-modules/xinquan-meditation/src/main/java/com/xinquan/meditation/service/impl/MeditationQuestionServiceImpl.java | 92 ++++++++++++++++++++++++++++++++++++++++++++- 1 files changed, 89 insertions(+), 3 deletions(-) diff --git a/xinquan-modules/xinquan-meditation/src/main/java/com/xinquan/meditation/service/impl/MeditationQuestionServiceImpl.java b/xinquan-modules/xinquan-meditation/src/main/java/com/xinquan/meditation/service/impl/MeditationQuestionServiceImpl.java index ff1852b..b01e626 100644 --- a/xinquan-modules/xinquan-meditation/src/main/java/com/xinquan/meditation/service/impl/MeditationQuestionServiceImpl.java +++ b/xinquan-modules/xinquan-meditation/src/main/java/com/xinquan/meditation/service/impl/MeditationQuestionServiceImpl.java @@ -1,9 +1,23 @@ package com.xinquan.meditation.service.impl; -import com.xinquan.meditation.domain.MeditationQuestion; -import com.xinquan.meditation.mapper.MeditationQuestionMapper; -import com.xinquan.meditation.service.MeditationQuestionService; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.xinquan.common.core.exception.ServiceException; +import com.xinquan.common.security.service.TokenService; +import com.xinquan.meditation.mapper.MeditationReportMapper; +import com.xinquan.meditation.api.domain.MeditationQuestion; +import com.xinquan.meditation.domain.MeditationQuestionLike; +import com.xinquan.meditation.mapper.MeditationQuestionMapper; +import com.xinquan.meditation.service.MeditationQuestionLikeService; +import com.xinquan.meditation.service.MeditationQuestionService; + +import java.time.LocalDateTime; +import java.util.Objects; +import java.util.Optional; + +import com.xinquan.system.api.domain.MeditationReport; +import com.xinquan.system.api.model.LoginUser; +import lombok.RequiredArgsConstructor; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; /** @@ -15,6 +29,78 @@ * @since 2024-08-21 */ @Service +@RequiredArgsConstructor public class MeditationQuestionServiceImpl extends ServiceImpl<MeditationQuestionMapper, MeditationQuestion> implements MeditationQuestionService { + @Autowired + private MeditationQuestionLikeService meditationQuestionLikeService; + @Autowired + private MeditationReportMapper meditationReportMapper; + + @Autowired + private TokenService tokenService; + /** + * 举报提问 + * + * @param id 提问id + * @param content 举报内容 + */ + @Override + public void report(Long id, String content) { + LoginUser loginUser = tokenService.getLoginUser(); + if (loginUser==null){ + return; + } + Long userId = loginUser.getUserid(); + MeditationQuestion meditationQuestion = this.getById(id); + if (Optional.ofNullable(meditationQuestion).isPresent()) { + meditationQuestion.setReportStatus(2); + this.updateById(meditationQuestion); + MeditationReport meditationReport = new MeditationReport(); + meditationReport.setMeditationId(meditationQuestion.getMeditationId()); + meditationReport.setQuestionId(meditationQuestion.getId()); + meditationReport.setReportContent(content); + meditationReport.setReportUserId(userId); + meditationReport.setCreateTime(LocalDateTime.now()); + meditationReportMapper.insert(meditationReport); + } + } + + /** + * 点赞/取消点赞提问 + * + * @param id 提问id + */ + @Override + public void likeQuestion(Long id) { + LoginUser loginUser = tokenService.getLoginUser(); + if (loginUser==null){ + return ; + } + Long userId = loginUser.getUserid(); + + MeditationQuestion meditationQuestion = this.getById(id); + if (Objects.isNull(meditationQuestion)) { + throw new ServiceException("提问不存在"); + } + // 判断是否已点赞 + Optional<MeditationQuestionLike> likeOpt = meditationQuestionLikeService.lambdaQuery() + .eq(MeditationQuestionLike::getMeditationQuestionId, id) + .eq(MeditationQuestionLike::getAppUserId, userId).last("limit 1") + .oneOpt(); + if (likeOpt.isPresent()) { + // 已点赞则取消点赞 + meditationQuestionLikeService.removeById(likeOpt.get()); + meditationQuestion.setLikeCount(meditationQuestion.getLikeCount() - 1); + } else { + // 未点赞则点赞 + MeditationQuestionLike meditationQuestionLike = new MeditationQuestionLike(); + meditationQuestionLike.setAppUserId(userId); + meditationQuestionLike.setMeditationQuestionId(id); + if (meditationQuestionLikeService.save(meditationQuestionLike)) { + meditationQuestion.setLikeCount(meditationQuestion.getLikeCount() + 1); + } + } + this.updateById(meditationQuestion); + } } -- Gitblit v1.7.1