From 2862c3e4da3adbb4bea43151514f0c43b86476d6 Mon Sep 17 00:00:00 2001
From: mitao <2763622819@qq.com>
Date: 星期六, 07 九月 2024 17:49:17 +0800
Subject: [PATCH] APP端冥想首页相关接口

---
 xinquan-modules/xinquan-meditation/src/main/java/com/xinquan/meditation/service/impl/MeditationQuestionServiceImpl.java |   65 +++++++++++++++++++++++++++++++-
 1 files changed, 62 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..4007bbc 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,17 @@
 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.enums.ReportStatusEnum;
+import com.xinquan.common.core.exception.ServiceException;
+import com.xinquan.common.security.utils.SecurityUtils;
+import com.xinquan.meditation.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.util.Objects;
+import java.util.Optional;
+import lombok.RequiredArgsConstructor;
 import org.springframework.stereotype.Service;
 
 /**
@@ -15,6 +23,57 @@
  * @since 2024-08-21
  */
 @Service
+@RequiredArgsConstructor
 public class MeditationQuestionServiceImpl extends ServiceImpl<MeditationQuestionMapper, MeditationQuestion> implements MeditationQuestionService {
 
+    private final MeditationQuestionLikeService meditationQuestionLikeService;
+
+    /**
+     * 举报提问
+     *
+     * @param id      提问id
+     * @param content 举报内容
+     */
+    @Override
+    public void report(Long id, String content) {
+        MeditationQuestion meditationQuestion = this.getById(id);
+        if (Optional.ofNullable(meditationQuestion).isPresent()) {
+            meditationQuestion.setReportStatus(ReportStatusEnum.REPORTED.getCode());
+            meditationQuestion.setReportUserId(SecurityUtils.getUserId());
+            meditationQuestion.setReportContent(content);
+            this.updateById(meditationQuestion);
+        }
+    }
+
+    /**
+     * 点赞/取消点赞提问
+     *
+     * @param id 提问id
+     */
+    @Override
+    public void likeQuestion(Long id) {
+        MeditationQuestion meditationQuestion = this.getById(id);
+        if (Objects.isNull(meditationQuestion)) {
+            throw new ServiceException("提问不存在");
+        }
+        // 判断是否已点赞
+        Optional<MeditationQuestionLike> likeOpt = meditationQuestionLikeService.lambdaQuery()
+                .eq(MeditationQuestionLike::getMeditationQuestionId, id)
+                .eq(MeditationQuestionLike::getAppUserId, SecurityUtils.getUserId()).last("limit 1")
+                .oneOpt();
+        if (likeOpt.isPresent()) {
+            // 已点赞则取消点赞
+            meditationQuestionLikeService.removeById(likeOpt.get());
+            meditationQuestion.setLikeCount(meditationQuestion.getLikeCount() - 1);
+        } else {
+            // 未点赞则点赞
+            MeditationQuestionLike meditationQuestionLike = new MeditationQuestionLike();
+            meditationQuestionLike.setAppUserId(SecurityUtils.getUserId());
+            meditationQuestionLike.setMeditationQuestionId(id);
+            if (meditationQuestionLikeService.save(meditationQuestionLike)) {
+                meditationQuestion.setLikeCount(meditationQuestion.getLikeCount() + 1);
+            }
+        }
+        this.updateById(meditationQuestion);
+    }
 }

--
Gitblit v1.7.1