无关风月
2024-10-14 039a33d1bfa6ef041161666bbd120c34086fe7c1
xinquan-modules/xinquan-meditation/src/main/java/com/xinquan/meditation/service/impl/MeditationServiceImpl.java
@@ -5,17 +5,15 @@
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.xinquan.common.core.constant.SecurityConstants;
import com.xinquan.common.core.enums.DisabledEnum;
import com.xinquan.common.core.enums.OrderFromEnum;
import com.xinquan.common.core.exception.ServiceException;
import com.xinquan.common.core.utils.page.BeanUtils;
import com.xinquan.common.core.utils.page.CollUtils;
import com.xinquan.common.core.utils.page.PageDTO;
import com.xinquan.common.core.web.page.PageInfo;
import com.xinquan.common.security.utils.SecurityUtils;
import com.xinquan.meditation.domain.Meditation;
import com.xinquan.meditation.domain.MeditationCategory;
import com.xinquan.meditation.domain.MeditationMusic;
import com.xinquan.meditation.domain.MeditationQuestion;
import com.xinquan.meditation.domain.MeditationQuestionLike;
import com.xinquan.meditation.domain.MeditationUserFavorite;
import com.xinquan.meditation.api.domain.Meditation;
import com.xinquan.meditation.domain.*;
import com.xinquan.meditation.domain.vo.ClientMeditationAndCateVO;
import com.xinquan.meditation.domain.vo.ClientMeditationCategoryVO;
import com.xinquan.meditation.domain.vo.ClientMeditationDetailsVO;
@@ -28,7 +26,10 @@
import com.xinquan.meditation.service.MeditationQuestionLikeService;
import com.xinquan.meditation.service.MeditationService;
import com.xinquan.meditation.service.MeditationUserFavoriteService;
import com.xinquan.user.api.domain.AppUser;
import com.xinquan.order.api.domain.Order;
import com.xinquan.order.api.feign.RemoteOrderService;
import com.xinquan.system.api.domain.AppUser;
import com.xinquan.system.api.domain.MeditationQuestion;
import com.xinquan.user.api.domain.dto.AppUserDTO;
import com.xinquan.user.api.feign.RemoteAppUserService;
import java.util.Arrays;
@@ -42,6 +43,7 @@
import java.util.stream.Collectors;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service;
import org.springframework.util.StringUtils;
/**
 * <p>
@@ -61,7 +63,7 @@
    private final MeditationQuestionMapper meditationQuestionMapper;
    private final MeditationQuestionLikeService meditationQuestionLikeService;
    private final MeditationUserFavoriteService meditationUserFavoriteService;
    private final RemoteOrderService remoteOrderService;
    /**
     * 获取私人订制
     *
@@ -79,6 +81,30 @@
                    .collect(Collectors.toSet());
            // 查询冥想列表
            voList = baseMapper.getMeditationListByTagId(tagIdSet, sanskritFlag);
        }
        voList = handlePaidMeditation(voList);
        return voList;
    }
    /**
     * 处理已付费冥想音频
     *
     * @param voList
     * @return
     */
    private List<ClientMeditationVO> handlePaidMeditation(List<ClientMeditationVO> voList) {
        // 远程调用订单服务,查询用户已付费冥想
        Long userId = SecurityUtils.getUserId();
        List<Order> orderList = remoteOrderService.getOrderListByType(userId,
                OrderFromEnum.MEDITATION.getCode(),
                SecurityConstants.INNER).getData();
        List<Long> meditationIdList = orderList.stream().map(Order::getBusinessId)
                .collect(Collectors.toList());
        if (CollUtils.isNotEmpty(meditationIdList)) {
            voList = voList.stream()
                    .filter(meditationVO -> meditationIdList.contains(meditationVO.getId()))
                    .peek(meditationVO -> meditationVO.setPaidStatus(1))
                    .collect(Collectors.toList());
        }
        return voList;
    }
@@ -102,6 +128,7 @@
            // 对象拷贝
            voList = BeanUtils.copyList(list, ClientMeditationVO.class);
        }
        handlePaidMeditation(voList);
        return voList;
    }
@@ -205,6 +232,7 @@
        });*/
        // 将实体类转换为VO
        pageDTO = PageDTO.of(page, ClientMeditationVO.class);
        handlePaidMeditation(pageDTO.getList());
        return pageDTO;
    }
@@ -235,6 +263,10 @@
                .eq(MeditationUserFavorite::getMeditationId, id)
                .eq(MeditationUserFavorite::getAppUserId, SecurityUtils.getUserId())
                .count() > 0 ? 1 : 2);
        // 获取提问数
        vo.setQuestionCount(meditationQuestionMapper.selectCount(
                Wrappers.lambdaQuery(MeditationQuestion.class)
                        .eq(MeditationQuestion::getMeditationId, id)));
        return vo;
    }
@@ -256,7 +288,7 @@
                .last("limit 1").oneOpt();
        if (userOperationOpt.isPresent()) {
            meditationUserFavoriteService.removeById(userOperationOpt.get());
            // 增加收藏数
            // 减少收藏数
            meditation.setFavoriteCount(meditation.getFavoriteCount() - 1);
        } else {
            // 增加收藏记录
@@ -264,10 +296,23 @@
            meditationUserFavorite.setMeditationId(id);
            meditationUserFavorite.setAppUserId(SecurityUtils.getUserId());
            meditationUserFavoriteService.save(meditationUserFavorite);
            // 减少收藏数
            // 增加收藏数
            meditation.setFavoriteCount(meditation.getFavoriteCount() + 1);
        }
        this.updateById(meditation);
    }
    @Override
    public PageDTO<MeditationHall> getMeditationPage(String lon, String lat,String name, Integer pageCurr, Integer pageSize) {
        PageInfo<MeditationHall> pageInfo = new PageInfo<>(pageCurr, pageSize);
        List<MeditationHall> list = this.baseMapper.getMeditationPage(pageInfo,lon, lat,name);
        if (!StringUtils.hasLength(lon) || !StringUtils.hasLength(lat)){
            for (MeditationHall meditationHall : list) {
                meditationHall.setDistance(null);
            }
        }
        pageInfo.setRecords(list);
        return PageDTO.of(pageInfo, MeditationHall.class);
    }
    /**
@@ -287,9 +332,7 @@
                Wrappers.lambdaQuery(MeditationQuestion.class)
                        .eq(MeditationQuestion::getMeditationId, id)
                        .eq(MeditationQuestion::getShowFlag, DisabledEnum.YES)
                        .orderByDesc(MeditationQuestion::getPublishTime)
        );
                        .orderByDesc(MeditationQuestion::getPublishTime));
        if (CollUtils.isEmpty(questionPage.getRecords())) {
            return PageDTO.empty(questionPage);
        }