无关风月
2024-11-14 ea73e0fcc705bd95c35ef95f17f98f482475a0dd
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
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
package com.xinquan.meditation.service.impl;
 
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.xinquan.common.core.utils.DateUtils;
import com.xinquan.common.core.utils.page.BeanUtils;
import com.xinquan.meditation.api.domain.Meditation;
import com.xinquan.meditation.domain.MeditationEveryday;
import com.xinquan.meditation.domain.MeditationMusic;
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.mapper.MeditationMusicMapper;
import com.xinquan.meditation.service.MeditationEverydayService;
 
import java.util.List;
import java.util.Optional;
 
import com.xinquan.user.api.feign.RemoteAppUserService;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service;
 
import javax.annotation.Resource;
 
/**
 * <p>
 * 每日冥想库表 服务实现类
 * </p>
 *
 * @author mitao
 * @since 2024-08-21
 */
@Service
@RequiredArgsConstructor
public class MeditationEverydayServiceImpl extends ServiceImpl<MeditationEverydayMapper, MeditationEveryday> implements MeditationEverydayService {
 
    private final MeditationMapper meditationMapper;
    private final MeditationMusicMapper meditationMusicMapper;
    @Resource
    private RemoteAppUserService remoteAppUserService;
 
 
    /**
     * 查询每日冥想
     *
     * @return 每日冥想
     */
    @Override
    public ClientMeditationEverydayVO getTodayMeditation() {
        ClientMeditationEverydayVO vo = new ClientMeditationEverydayVO();
        // 当前时间
        String now = DateUtils.dateTimeNow("HH:mm:ss");
        // 查询播放时间段在当前时间的每日冥想
        Optional<MeditationEveryday> meditationEverydayOpt = this.lambdaQuery()
                .ge(MeditationEveryday::getStartPlayTime, now)
                .le(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();
 
            Long meditationId = meditationEveryday.getMeditationId();
            Meditation meditation = meditationMapper.selectById(meditationId);
            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);
                clientMeditationVO.setBackgroundUrl(meditationOpt.get().getBackgroundUrl());
                // 查询冥想实际学习人数
                Long data = remoteAppUserService.getMeditationHistoryCount(meditationId).getData();
                clientMeditationVO.setRealLearnedNum(Integer.valueOf(data+""));
                vo.setClientMeditationVO(clientMeditationVO);
                if (meditation!=null){
                    List<MeditationMusic> meditationId1 = meditationMusicMapper.selectList(new QueryWrapper<MeditationMusic>()
                            .eq("meditation_id", meditationId));
                    int a= 0;
                    for (MeditationMusic meditationMusic : meditationId1) {
                        a += meditationMusic.getMusicSecond();
                    }
                    vo.setTime(a);
                }
            }
            vo.setImageUrl(meditationEveryday.getImageUrl());
 
        }
        return vo;
    }
}