无关风月
2024-12-31 0c51a577db337520452022d9d6a22b720ef858d4
xinquan-modules/xinquan-meditation/src/main/java/com/xinquan/meditation/service/impl/MeditationQuestionServiceImpl.java
@@ -1,17 +1,23 @@
package com.xinquan.meditation.service.impl;
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.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;
/**
@@ -26,8 +32,13 @@
@RequiredArgsConstructor
public class MeditationQuestionServiceImpl extends ServiceImpl<MeditationQuestionMapper, MeditationQuestion> implements MeditationQuestionService {
    private final MeditationQuestionLikeService meditationQuestionLikeService;
    @Autowired
    private MeditationQuestionLikeService meditationQuestionLikeService;
    @Autowired
    private MeditationReportMapper meditationReportMapper;
    @Autowired
    private TokenService tokenService;
    /**
     * 举报提问
     *
@@ -36,12 +47,22 @@
     */
    @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(ReportStatusEnum.REPORTED.getCode());
            meditationQuestion.setReportUserId(SecurityUtils.getUserId());
            meditationQuestion.setReportContent(content);
            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);
        }
    }
@@ -52,6 +73,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("提问不存在");
@@ -59,7 +86,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()) {
            // 已点赞则取消点赞
@@ -68,7 +95,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);