| | |
| | | package com.xinquan.meditation.service.impl; |
| | | |
| | | import com.xinquan.meditation.domain.MeditationEveryday; |
| | | import com.xinquan.meditation.mapper.MeditationEverydayMapper; |
| | | import com.xinquan.meditation.service.MeditationEverydayService; |
| | | 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; |
| | | |
| | | /** |
| | |
| | | * @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; |
| | | } |
| | | } |