package com.xinquan.meditation.service.impl;
|
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
import com.xinquan.common.core.utils.page.BeanUtils;
|
import com.xinquan.meditation.domain.Meditation;
|
import com.xinquan.meditation.domain.MeditationEveryday;
|
import com.xinquan.meditation.domain.vo.ClientMeditationEverydayVO;
|
import com.xinquan.meditation.domain.vo.ClientMeditationVO;
|
import com.xinquan.meditation.mapper.MeditationEverydayMapper;
|
import com.xinquan.meditation.mapper.MeditationMapper;
|
import com.xinquan.meditation.service.MeditationEverydayService;
|
import java.time.LocalDateTime;
|
import java.util.Optional;
|
import lombok.RequiredArgsConstructor;
|
import org.springframework.stereotype.Service;
|
|
/**
|
* <p>
|
* 每日冥想库表 服务实现类
|
* </p>
|
*
|
* @author mitao
|
* @since 2024-08-21
|
*/
|
@Service
|
@RequiredArgsConstructor
|
public class MeditationEverydayServiceImpl extends ServiceImpl<MeditationEverydayMapper, MeditationEveryday> implements MeditationEverydayService {
|
|
private final MeditationMapper meditationMapper;
|
|
/**
|
* 查询每日冥想
|
*
|
* @return 每日冥想
|
*/
|
@Override
|
public ClientMeditationEverydayVO getTodayMeditation() {
|
ClientMeditationEverydayVO vo = null;
|
// 当前时间
|
LocalDateTime now = LocalDateTime.now();
|
// 查询播放时间段在当前时间的每日冥想
|
Optional<MeditationEveryday> meditationEverydayOpt = this.lambdaQuery()
|
.le(MeditationEveryday::getStartPlayTime, now)
|
.ge(MeditationEveryday::getEndPlayTime, now)
|
.orderByDesc(MeditationEveryday::getUpdateTime)
|
.last("limit 1").oneOpt();
|
if (!meditationEverydayOpt.isPresent()) {
|
// 查询结束时间离当前时间最近的一个每日冥想
|
meditationEverydayOpt = this.lambdaQuery()
|
.le(MeditationEveryday::getStartPlayTime, now)
|
.orderByDesc(MeditationEveryday::getEndPlayTime)
|
.last("limit 1").oneOpt();
|
}
|
// 判断是否存在
|
if (meditationEverydayOpt.isPresent()) {
|
// 查询冥想详情
|
MeditationEveryday meditationEveryday = meditationEverydayOpt.get();
|
Optional<Meditation> meditationOpt = Optional.ofNullable(
|
meditationMapper.selectById(
|
meditationEveryday.getMeditationId()));
|
if (meditationOpt.isPresent()) {
|
// 封装返回值
|
ClientMeditationVO clientMeditationVO = BeanUtils.copyBean(meditationOpt.get(),
|
ClientMeditationVO.class);
|
vo = BeanUtils.copyBean(meditationEveryday,
|
ClientMeditationEverydayVO.class);
|
vo.setClientMeditationVO(clientMeditationVO);
|
}
|
}
|
return vo;
|
}
|
}
|