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