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.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;
|
|
/**
|
* <p>
|
* 冥想音频用户操作表 服务实现类
|
* </p>
|
*
|
* @author mitao
|
* @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);
|
}
|
}
|