mitao
2024-09-07 2862c3e4da3adbb4bea43151514f0c43b86476d6
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
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;
    }
}