| | |
| | | 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; |
| | | |
| | | /** |
| | |
| | | * @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); |
| | | } |
| | | } |