无关风月
2024-11-04 64f7ccb9ef8b5a0618e65cddc14b981c1f108ba3
xinquan-modules/xinquan-meditation/src/main/java/com/xinquan/meditation/service/impl/MeditationQuestionServiceImpl.java
@@ -1,8 +1,10 @@
package com.xinquan.meditation.service.impl;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.xinquan.common.core.domain.R;
import com.xinquan.common.core.enums.ReportStatusEnum;
import com.xinquan.common.core.exception.ServiceException;
import com.xinquan.common.security.service.TokenService;
import com.xinquan.common.security.utils.SecurityUtils;
import com.xinquan.meditation.mapper.MeditationReportMapper;
import com.xinquan.meditation.service.MeditationReportService;
@@ -17,6 +19,7 @@
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;
@@ -38,6 +41,8 @@
    @Autowired
    private MeditationReportMapper meditationReportMapper;
    @Autowired
    private TokenService tokenService;
    /**
     * 举报提问
     *
@@ -46,6 +51,11 @@
     */
    @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);
@@ -54,7 +64,7 @@
            meditationReport.setMeditationId(meditationQuestion.getMeditationId());
            meditationReport.setQuestionId(meditationQuestion.getId());
            meditationReport.setReportContent(content);
            meditationReport.setReportUserId(SecurityUtils.getUserId());
            meditationReport.setReportUserId(userId);
            meditationReport.setCreateTime(LocalDateTime.now());
            meditationReportMapper.insert(meditationReport);
        }
@@ -67,6 +77,12 @@
     */
    @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("提问不存在");
@@ -74,7 +90,7 @@
        // 判断是否已点赞
        Optional<MeditationQuestionLike> likeOpt = meditationQuestionLikeService.lambdaQuery()
                .eq(MeditationQuestionLike::getMeditationQuestionId, id)
                .eq(MeditationQuestionLike::getAppUserId, SecurityUtils.getUserId()).last("limit 1")
                .eq(MeditationQuestionLike::getAppUserId, userId).last("limit 1")
                .oneOpt();
        if (likeOpt.isPresent()) {
            // 已点赞则取消点赞
@@ -83,7 +99,7 @@
        } else {
            // 未点赞则点赞
            MeditationQuestionLike meditationQuestionLike = new MeditationQuestionLike();
            meditationQuestionLike.setAppUserId(SecurityUtils.getUserId());
            meditationQuestionLike.setAppUserId(userId);
            meditationQuestionLike.setMeditationQuestionId(id);
            if (meditationQuestionLikeService.save(meditationQuestionLike)) {
                meditationQuestion.setLikeCount(meditationQuestion.getLikeCount() + 1);