package com.xinquan.meditation.service.impl;
|
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
import com.xinquan.common.core.constant.SecurityConstants;
|
import com.xinquan.common.core.domain.R;
|
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.service.TokenService;
|
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;
|
import com.xinquan.meditation.domain.vo.ClientMeditationQuestionVO;
|
import com.xinquan.meditation.domain.vo.ClientMeditationVO;
|
import com.xinquan.meditation.mapper.MeditationCategoryMapper;
|
import com.xinquan.meditation.mapper.MeditationMapper;
|
import com.xinquan.meditation.mapper.MeditationMusicMapper;
|
import com.xinquan.meditation.mapper.MeditationQuestionMapper;
|
import com.xinquan.meditation.service.MeditationQuestionLikeService;
|
import com.xinquan.meditation.service.MeditationService;
|
import com.xinquan.meditation.service.MeditationUserFavoriteService;
|
import com.xinquan.order.api.domain.Order;
|
import com.xinquan.order.api.feign.RemoteOrderService;
|
import com.xinquan.system.api.domain.AppUser;
|
import com.xinquan.meditation.api.domain.MeditationQuestion;
|
import com.xinquan.system.api.domain.vo.AppUserVO;
|
import com.xinquan.system.api.model.LoginUser;
|
import com.xinquan.user.api.domain.dto.AppUserDTO;
|
import com.xinquan.user.api.feign.RemoteAppUserService;
|
|
import java.time.LocalDateTime;
|
import java.util.*;
|
import java.util.function.Function;
|
import java.util.stream.Collectors;
|
import lombok.RequiredArgsConstructor;
|
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.stereotype.Service;
|
import org.springframework.util.StringUtils;
|
|
/**
|
* <p>
|
* 冥想音频表 服务实现类
|
* </p>
|
*
|
* @author mitao
|
* @since 2024-08-21
|
*/
|
@Service
|
@RequiredArgsConstructor
|
public class MeditationServiceImpl extends ServiceImpl<MeditationMapper, Meditation> implements MeditationService {
|
|
private final RemoteAppUserService remoteAppUserService;
|
private final MeditationCategoryMapper meditationCategoryMapper;
|
private final MeditationMusicMapper meditationMusicMapper;
|
private final MeditationQuestionMapper meditationQuestionMapper;
|
private final MeditationQuestionLikeService meditationQuestionLikeService;
|
private final MeditationUserFavoriteService meditationUserFavoriteService;
|
private final RemoteOrderService remoteOrderService;
|
/**
|
* 获取私人订制
|
*
|
* @return 冥想列表
|
*/
|
@Override
|
public List<ClientMeditationVO> getPersonalityPlan() {
|
List<ClientMeditationVO> voList = new ArrayList<>();
|
// 获取当前登录用户id
|
LoginUser loginUser = tokenService.getLoginUser();
|
if (loginUser!=null){
|
Long userid = loginUser.getUserid();
|
AppUser appUser = remoteAppUserService.getAppUserById(userid + "").getData();
|
if (appUser!=null){
|
Integer sanskritFlag = appUser.getSanskritFlag();
|
if (StringUtils.hasLength(appUser.getTagId())) {
|
String tagId = appUser.getTagId();
|
if (StringUtils.hasLength(tagId)){
|
Set<Long> tagIdSet = Arrays.stream(tagId.split(",")).map(Long::parseLong)
|
.collect(Collectors.toSet());
|
// 查询冥想列表
|
voList = baseMapper.getMeditationListByTagId(tagIdSet, sanskritFlag);
|
}
|
}else{
|
Set<Long> longs = new HashSet<>();
|
voList = baseMapper.getMeditationListByTagId(longs, sanskritFlag);
|
}
|
}else{
|
voList = baseMapper.getMeditationListByTagId(null, null);
|
}
|
if(voList.isEmpty()){
|
voList = baseMapper.getMeditationListByTagId(null, null);
|
voList = voList.stream().limit(1).collect(Collectors.toList());
|
}
|
return voList;
|
}else{
|
voList = baseMapper.getMeditationListByTagId(null, null);
|
voList = voList.stream().limit(1).collect(Collectors.toList());
|
return voList;
|
}
|
}
|
|
/**
|
* 处理已付费冥想音频
|
*
|
* @param voList
|
* @return
|
*/
|
private List<ClientMeditationVO> handlePaidMeditation(List<ClientMeditationVO> voList) {
|
// 远程调用订单服务,查询用户已付费冥想
|
LoginUser loginUser = tokenService.getLoginUser();
|
if (loginUser==null){
|
return new ArrayList<>();
|
}
|
Long userId = loginUser.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.setIsBuy(1))
|
.collect(Collectors.toList());
|
}
|
return voList;
|
}
|
|
/**
|
* 根据分类id获取冥想列表
|
*
|
* @param cateId 分类id
|
* @return 冥想列表
|
*/
|
@Override
|
public List<ClientMeditationVO> getMeditationListByCateId(Long cateId) {
|
List<ClientMeditationVO> voList = new ArrayList<>();
|
// 获取当前登录用户id
|
AppUser appUser = getCurrentUser();
|
LambdaQueryWrapper<Meditation> meditationLambdaQueryWrapper = new LambdaQueryWrapper<>();
|
System.err.println("上下架");
|
meditationLambdaQueryWrapper.eq(Meditation::getListingStatus, 1);
|
meditationLambdaQueryWrapper.eq(Meditation::getCateId, cateId);
|
if (appUser!=null){
|
if (appUser.getSanskritFlag() == 2){
|
meditationLambdaQueryWrapper.eq(Meditation::getSanskrit, 2);
|
}
|
meditationLambdaQueryWrapper.orderByDesc(Meditation::getSortNum).last("limit 8");
|
}
|
List<Meditation> list =this.list(meditationLambdaQueryWrapper);
|
List<Meditation> meditations = new ArrayList<>();
|
for (Meditation meditation : list) {
|
if (meditation.getListingStatus()==1){
|
meditations.add(meditation);
|
}
|
}
|
if (CollUtils.isNotEmpty(meditations)) {
|
// 对象拷贝
|
voList = BeanUtils.copyList(meditations, ClientMeditationVO.class);
|
}
|
handlePaidMeditation(voList);
|
return voList;
|
}
|
|
/**
|
* 获取当前登录用户
|
*
|
* @return AppUser
|
*/
|
private AppUser getCurrentUser() {
|
LoginUser loginUser = tokenService.getLoginUser();
|
if (loginUser!=null){
|
Long userid = loginUser.getUserid();
|
return remoteAppUserService.getUserByCondition(
|
AppUserDTO.builder().id(userid).build(),
|
SecurityConstants.INNER).getData();
|
}else{
|
return remoteAppUserService.getUserByCondition(
|
AppUserDTO.builder().id(0L).build(),
|
SecurityConstants.INNER).getData();
|
}
|
|
}
|
|
/**
|
* 获取全部的冥想及分类列表
|
*
|
* @return 冥想和分类列表
|
*/
|
@Override
|
public List<ClientMeditationAndCateVO> getMeditationAndCateList() {
|
|
// 获取当前登录用户
|
List<ClientMeditationAndCateVO> voList = CollUtils.newArrayList();
|
// 查询分类列表
|
List<MeditationCategory> cateList = meditationCategoryMapper.selectList(
|
Wrappers.lambdaQuery(MeditationCategory.class)
|
.orderByDesc(MeditationCategory::getSortNum));
|
for (MeditationCategory cate : cateList) {
|
ClientMeditationAndCateVO vo = new ClientMeditationAndCateVO();
|
vo.setClientMeditationCategoryVO(
|
BeanUtils.copyBean(cate, ClientMeditationCategoryVO.class));
|
LoginUser loginUser = tokenService.getLoginUser();
|
List<ClientMeditationVO> meditationListByCateId = getMeditationListByCateId(cate.getId());
|
if (loginUser!=null){
|
for (ClientMeditationVO clientMeditationVO : meditationListByCateId) {
|
Integer data = remoteOrderService.getMeditationIsBuy(loginUser.getUserid(),clientMeditationVO.getId() ).getData();
|
clientMeditationVO.setIsBuy(data);
|
Long data1 = remoteAppUserService.getMeditationHistoryCount(clientMeditationVO.getId()).getData();
|
clientMeditationVO.setRealLearnedNum(Integer.valueOf(data1+""));
|
clientMeditationVO.setRealLearnedNum(clientMeditationVO.getVirtualLearnedNum()+clientMeditationVO.getRealLearnedNum());
|
}
|
}else{
|
for (ClientMeditationVO clientMeditationVO : meditationListByCateId) {
|
clientMeditationVO.setIsBuy(2);
|
Long data = remoteAppUserService.getMeditationHistoryCount(clientMeditationVO.getId()).getData();
|
clientMeditationVO.setRealLearnedNum(Integer.valueOf(data+""));
|
clientMeditationVO.setRealLearnedNum(clientMeditationVO.getVirtualLearnedNum()+clientMeditationVO.getRealLearnedNum());
|
if (tokenService.getLoginUser()!=null){
|
Integer data2 = remoteOrderService.getMeditationIsBuy(tokenService.getLoginUser().getUserid()
|
,clientMeditationVO.getId() ).getData();
|
clientMeditationVO.setIsBuy(data2);
|
}else{
|
clientMeditationVO.setIsBuy(2);
|
}
|
}
|
}
|
vo.setClientMeditationVOList(meditationListByCateId);
|
voList.add(vo);
|
}
|
return voList;
|
}
|
// @Override
|
// public List<ClientMeditationAndCateVO> getMeditationAndCateList() {
|
// List<ClientMeditationAndCateVO> voList = CollUtils.newArrayList();
|
//
|
// // 查询分类列表
|
// List<MeditationCategory> cateList = meditationCategoryMapper.selectList(
|
// Wrappers.lambdaQuery(MeditationCategory.class)
|
// .orderByDesc(MeditationCategory::getSortNum));
|
//
|
// LoginUser loginUser = tokenService.getLoginUser();
|
// Long userId = loginUser != null ? loginUser.getUserid() : null;
|
//
|
// for (MeditationCategory cate : cateList) {
|
// ClientMeditationAndCateVO vo = new ClientMeditationAndCateVO();
|
// vo.setClientMeditationCategoryVO(BeanUtils.copyBean(cate, ClientMeditationCategoryVO.class));
|
//
|
// List<ClientMeditationVO> meditationListByCateId = getMeditationListByCateId(cate.getId());
|
//
|
// for (ClientMeditationVO record : meditationListByCateId) {
|
// setMeditationDetails(record, userId);
|
// }
|
//
|
// vo.setClientMeditationVOList(meditationListByCateId);
|
// voList.add(vo);
|
// }
|
//
|
// return voList;
|
// }
|
//
|
// private void setMeditationDetails(ClientMeditationVO record, Long userId) {
|
// Long historyCount = remoteAppUserService.getMeditationHistoryCount(record.getId()).getData();
|
// record.setRealLearnedNum(Integer.valueOf(historyCount.toString()));
|
// record.setRealLearnedNum(record.getVirtualLearnedNum() + record.getRealLearnedNum());
|
//
|
// Integer isBuy = userId != null ? remoteOrderService.getMeditationIsBuy(userId, record.getId()).getData() : 2;
|
// record.setIsBuy(isBuy);
|
//
|
// Meditation meditation = this.getById(record.getId());
|
// meditation.setRealLearnedNum(Integer.valueOf(historyCount.toString()));
|
// this.updateById(meditation);
|
// }
|
/**
|
* 根据分类id获取冥想列表-分页
|
*
|
* @param cateId 分类id
|
* @param pageCurr 当前页码
|
* @param pageSize 每页数量
|
* @return 冥想列表
|
*/
|
@Override
|
public PageDTO<ClientMeditationVO> getMeditationPageByCateId(Long cateId, Integer pageCurr,
|
Integer pageSize) {
|
PageDTO<ClientMeditationVO> pageDTO = PageDTO.empty(0L, 0L);
|
// 获取当前登录用户id
|
AppUser appUser = getCurrentUser();
|
LambdaQueryWrapper<Meditation> meditationLambdaQueryWrapper = new LambdaQueryWrapper<>();
|
meditationLambdaQueryWrapper.eq(Meditation::getCateId, cateId);
|
if (appUser!=null){
|
if (appUser.getSanskritFlag() == 2){
|
meditationLambdaQueryWrapper.eq(Meditation::getSanskrit, 2);
|
}
|
}
|
meditationLambdaQueryWrapper.eq(Meditation::getListingStatus,1);
|
meditationLambdaQueryWrapper.orderByDesc(Meditation::getSortNum);
|
Page<Meditation> page = this.page(new Page<>(pageCurr, pageSize), meditationLambdaQueryWrapper);
|
// 如果没有查到数据直接返回
|
if (page.getRecords().isEmpty()) {
|
return pageDTO;
|
}
|
for (Meditation record : page.getRecords()) {
|
Long data = remoteAppUserService.getMeditationHistoryCount(record.getId()).getData();
|
record.setRealLearnedNum(Integer.valueOf(data+""));
|
record.setRealLearnedNum(record.getVirtualLearnedNum()+record.getRealLearnedNum());
|
if (tokenService.getLoginUser()!=null){
|
Integer data2 = remoteOrderService.getMeditationIsBuy(tokenService.getLoginUser().getUserid()
|
,record.getId() ).getData();
|
record.setIsBuy(data2);
|
}else{
|
record.setIsBuy(2);
|
}
|
this.updateById(record);
|
}
|
// 将实体类转换为VO
|
pageDTO = PageDTO.of(page, ClientMeditationVO.class);
|
return pageDTO;
|
}
|
|
@Autowired
|
private TokenService tokenService;
|
/**
|
* 首页搜索首页
|
*
|
* @param condition 搜索条件
|
* @param pageCurr 当前页码
|
* @param pageSize 每页数量
|
* @return 冥想列表
|
*/
|
@Override
|
public PageDTO<ClientMeditationVO> search(String condition, Integer pageCurr,
|
Integer pageSize) {
|
PageDTO<ClientMeditationVO> pageDTO = PageDTO.empty(0L, 0L);
|
// 获取当前登录用户id
|
LoginUser loginUser = tokenService.getLoginUser();
|
if (loginUser!=null){
|
Long userid = loginUser.getUserid();
|
}
|
LambdaQueryWrapper<Meditation> meditationLambdaQueryWrapper = new LambdaQueryWrapper<>();
|
meditationLambdaQueryWrapper.eq(Meditation::getListingStatus,1);
|
meditationLambdaQueryWrapper.like(Meditation::getMeditationTitle, condition);
|
if (loginUser!=null){
|
Long userid = loginUser.getUserid();
|
AppUser appUser = remoteAppUserService.getAppUserById(userid + "").getData();
|
if (appUser.getSanskritFlag()==2)
|
meditationLambdaQueryWrapper.eq(Meditation::getSanskrit, appUser.getSanskritFlag());
|
}
|
meditationLambdaQueryWrapper.like(Meditation::getMeditationTitle, condition);
|
meditationLambdaQueryWrapper.orderByDesc(Meditation::getSortNum);
|
Page<Meditation> page = this.page(new Page<>(pageCurr, pageSize), meditationLambdaQueryWrapper);
|
// 如果没有查到数据直接返回
|
if (!Optional.ofNullable(page.getRecords()).isPresent()) {
|
return pageDTO;
|
}
|
// 音频链接加密
|
/* page.getRecords().forEach(meditation -> {
|
try {
|
meditation.setTutorAudioUrl(DES.encryptDES(meditation.getTutorAudioUrl()));
|
} catch (Exception e) {
|
throw new RuntimeException(e);
|
}
|
});*/
|
// 将实体类转换为VO
|
pageDTO = PageDTO.of(page, ClientMeditationVO.class);
|
handlePaidMeditation(pageDTO.getList());
|
return pageDTO;
|
}
|
|
/**
|
* 获取冥想音频详情
|
*
|
* @param id 冥想音频id
|
* @return 客户端冥想详情视图对象
|
*/
|
@Override
|
public R<ClientMeditationDetailsVO> getMeditationDetails(Long id) {
|
// 查询冥想音频
|
Meditation meditation = this.getById(id);
|
ClientMeditationDetailsVO vo = BeanUtils.copyBean(meditation,
|
ClientMeditationDetailsVO.class);
|
if (meditation.getChargeType() != 1){
|
LoginUser loginUser = tokenService.getLoginUser();
|
if (loginUser==null){
|
return R.tokenError("登录失效");
|
}
|
Long userid = loginUser.getUserid();
|
AppUser data1 = remoteAppUserService.getAppUserById(userid + "").getData();
|
|
if (data1.getVipExpireTime()!=null && data1.getVipExpireTime().isAfter(LocalDateTime.now())){
|
vo.setIsVip(1);
|
}else{
|
vo.setIsVip(2);
|
}
|
Integer data = remoteOrderService.getMeditationIsBuy(data1.getId(), id).getData();
|
vo.setIsBuy(data);
|
List<MeditationUserFavorite> list = meditationUserFavoriteService.lambdaQuery()
|
.eq(MeditationUserFavorite::getMeditationId, id)
|
.eq(MeditationUserFavorite::getAppUserId, userid).list();
|
if (list.isEmpty()){
|
vo.setFavorite(2);
|
}else{
|
vo.setFavorite(1);
|
}
|
}
|
// 查询冥想音频
|
List<MeditationMusic> meditationMusics = meditationMusicMapper.selectList(
|
Wrappers.lambdaQuery(MeditationMusic.class)
|
.eq(MeditationMusic::getMeditationId, id));
|
if (CollUtils.isNotEmpty(meditationMusics)) {
|
// 获取音频链接
|
List<String> musicUrlList = meditationMusics.stream()
|
.map(MeditationMusic::getMusicUrl).collect(Collectors.toList());
|
// 获取音频链接
|
List<Integer> musicSencodList = meditationMusics.stream()
|
.map(MeditationMusic::getMusicSecond).collect(Collectors.toList());
|
vo.setMeditationMusicList(musicUrlList);
|
vo.setMeditationSecondList(musicSencodList);
|
}
|
if (tokenService.getLoginUser()!=null){
|
List<Long> data = remoteAppUserService.getUserBlackList(tokenService.getLoginUser().getUserid()).getData();
|
// 获取提问数
|
vo.setQuestionCount(meditationQuestionMapper.selectCount(
|
Wrappers.lambdaQuery(MeditationQuestion.class)
|
.notIn(!data.isEmpty(),MeditationQuestion::getAppUserId, data)
|
.eq(MeditationQuestion::getMeditationId, id)
|
.eq(MeditationQuestion::getShowFlag,1)));
|
}else{
|
// 获取提问数
|
vo.setQuestionCount(meditationQuestionMapper.selectCount(
|
Wrappers.lambdaQuery(MeditationQuestion.class)
|
.eq(MeditationQuestion::getMeditationId, id)
|
.eq(MeditationQuestion::getShowFlag,1)));
|
}
|
|
if (tokenService.getLoginUser()!=null){
|
Integer data2 = remoteOrderService.getMeditationIsBuy(tokenService.getLoginUser().getUserid(), id).getData();
|
vo.setIsBuy(data2);
|
List<MeditationUserFavorite> list = meditationUserFavoriteService.lambdaQuery()
|
.eq(MeditationUserFavorite::getMeditationId, id)
|
.eq(MeditationUserFavorite::getAppUserId, tokenService.getLoginUser().getUserid()).list();
|
|
if (list.isEmpty()){
|
vo.setFavorite(2);
|
}else{
|
vo.setFavorite(1);
|
}
|
}
|
|
|
return R.ok(vo);
|
}
|
@Override
|
public ClientMeditationDetailsVO getMeditationDetails1(Long id) {
|
// 查询冥想音频
|
Meditation meditation = this.getById(id);
|
ClientMeditationDetailsVO vo = BeanUtils.copyBean(meditation,
|
ClientMeditationDetailsVO.class);
|
// 查询冥想音频
|
List<MeditationMusic> meditationMusics = meditationMusicMapper.selectList(
|
Wrappers.lambdaQuery(MeditationMusic.class)
|
.eq(MeditationMusic::getMeditationId, id));
|
if (CollUtils.isNotEmpty(meditationMusics)) {
|
// 获取音频链接
|
List<String> musicUrlList = meditationMusics.stream()
|
.map(MeditationMusic::getMusicUrl).collect(Collectors.toList());
|
vo.setMeditationMusicList(musicUrlList);
|
}
|
// 获取提问数
|
vo.setQuestionCount(meditationQuestionMapper.selectCount(
|
Wrappers.lambdaQuery(MeditationQuestion.class)
|
.eq(MeditationQuestion::getMeditationId, id)
|
.eq(MeditationQuestion::getShowFlag,1)));
|
return vo;
|
}
|
|
/**
|
* 收藏/取消收藏
|
*
|
* @param id 冥想音频id
|
*/
|
@Override
|
public void favorite(Long id) {
|
Meditation meditation = this.getById(id);
|
if (Objects.isNull(meditation)) {
|
throw new ServiceException("该冥想音频不存在");
|
}
|
// 查询收藏记录
|
Optional<MeditationUserFavorite> userOperationOpt = meditationUserFavoriteService.lambdaQuery()
|
.eq(MeditationUserFavorite::getMeditationId, id)
|
.eq(MeditationUserFavorite::getAppUserId, tokenService.getLoginUser().getUserid())
|
.last("limit 1").oneOpt();
|
if (userOperationOpt.isPresent()) {
|
meditationUserFavoriteService.removeById(userOperationOpt.get());
|
// 减少收藏数
|
meditation.setFavoriteCount(meditation.getFavoriteCount() - 1);
|
} else {
|
// 增加收藏记录
|
MeditationUserFavorite meditationUserFavorite = new MeditationUserFavorite();
|
meditationUserFavorite.setMeditationId(id);
|
meditationUserFavorite.setAppUserId(tokenService.getLoginUser().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);
|
}
|
|
/**
|
* 获取冥想音频提问列表-分页
|
*
|
* @param id 冥想音频id
|
* @param pageCurr 当前页码
|
* @param pageSize 每页数量
|
* @return 冥想音频提问分页列表
|
*/
|
@Override
|
public PageDTO<ClientMeditationQuestionVO> getMeditationQuestionPage(Long id,
|
Integer pageCurr, Integer pageSize) {
|
Long userid = tokenService.getLoginUser().getUserid();
|
List<Long> data = remoteAppUserService.getUserBlackList(userid).getData();
|
// 查询冥想提问列表
|
Page<MeditationQuestion> questionPage = meditationQuestionMapper.selectPage(
|
new Page<>(pageCurr, pageSize),
|
Wrappers.lambdaQuery(MeditationQuestion.class)
|
.eq(MeditationQuestion::getMeditationId, id)
|
.notIn(!data.isEmpty(),MeditationQuestion::getAppUserId, data)
|
.eq(MeditationQuestion::getShowFlag, DisabledEnum.YES.getCode())
|
.orderByDesc(MeditationQuestion::getPublishTime));
|
if (CollUtils.isEmpty(questionPage.getRecords())) {
|
return PageDTO.empty(questionPage);
|
}
|
// 将 questionPage 转换为 PageDTO
|
PageDTO<ClientMeditationQuestionVO> pageDTO = PageDTO.of(
|
questionPage, ClientMeditationQuestionVO.class);
|
List<ClientMeditationQuestionVO> questionVOList = pageDTO.getList();
|
|
// 提取用户ID集合
|
Set<Long> appUserIdSet = questionVOList.stream()
|
.map(ClientMeditationQuestionVO::getAppUserId)
|
.collect(Collectors.toSet());
|
|
// 远程调用,获取APP用户信息
|
Map<Long, AppUser> appUserMap = Collections.emptyMap();
|
if (!appUserIdSet.isEmpty()) {
|
List<AppUser> appUserList = remoteAppUserService.getAppUserList(appUserIdSet,
|
SecurityConstants.INNER)
|
.getData();
|
appUserMap = appUserList.stream()
|
.collect(Collectors.toMap(AppUser::getId, Function.identity()));
|
}
|
|
// 封装用户信息
|
for (ClientMeditationQuestionVO questionVO : questionVOList) {
|
AppUser appUser = appUserMap.get(questionVO.getAppUserId());
|
if (appUser != null) {
|
questionVO.setNickname(appUser.getNickname());
|
questionVO.setAvatar(appUser.getAvatar());
|
}
|
}
|
|
// 获取当前登录用户ID
|
Long userId = tokenService.getLoginUser().getUserid();
|
|
// 查询用户已点赞提问列表
|
Set<Long> likedQuestionIds = meditationQuestionLikeService.lambdaQuery()
|
.eq(MeditationQuestionLike::getAppUserId, userId)
|
.list()
|
.stream()
|
.map(MeditationQuestionLike::getMeditationQuestionId)
|
.collect(Collectors.toSet());
|
|
// 设置问题的点赞状态
|
questionVOList.forEach(question -> {
|
if (likedQuestionIds.contains(question.getId())) {
|
question.setLike(DisabledEnum.YES.getCode());
|
}
|
});
|
|
return pageDTO;
|
}
|
@Override
|
public PageDTO<ClientMeditationQuestionVO> getMeditationQuestionPageShare(Long id,
|
Integer pageCurr, Integer pageSize) {
|
LoginUser loginUser = tokenService.getLoginUser();
|
List<Long> longs = new ArrayList<>();
|
|
if (loginUser!=null){
|
longs = remoteAppUserService.getUserBlackList(loginUser.getAppUserId()).getData();
|
|
}
|
// 查询冥想提问列表
|
Page<MeditationQuestion> questionPage = meditationQuestionMapper.selectPage(
|
new Page<>(pageCurr, pageSize),
|
Wrappers.lambdaQuery(MeditationQuestion.class)
|
.eq(MeditationQuestion::getMeditationId, id)
|
.notIn(!longs.isEmpty(),MeditationQuestion::getAppUserId, longs)
|
.eq(MeditationQuestion::getShowFlag, DisabledEnum.YES.getCode())
|
.orderByDesc(MeditationQuestion::getPublishTime));
|
if (CollUtils.isEmpty(questionPage.getRecords())) {
|
return PageDTO.empty(questionPage);
|
}
|
// 将 questionPage 转换为 PageDTO
|
PageDTO<ClientMeditationQuestionVO> pageDTO = PageDTO.of(
|
questionPage, ClientMeditationQuestionVO.class);
|
List<ClientMeditationQuestionVO> questionVOList = pageDTO.getList();
|
|
// 提取用户ID集合
|
Set<Long> appUserIdSet = questionVOList.stream()
|
.map(ClientMeditationQuestionVO::getAppUserId)
|
.collect(Collectors.toSet());
|
|
// 远程调用,获取APP用户信息
|
Map<Long, AppUser> appUserMap = Collections.emptyMap();
|
if (!appUserIdSet.isEmpty()) {
|
List<AppUser> appUserList = remoteAppUserService.getAppUserList(appUserIdSet,
|
SecurityConstants.INNER)
|
.getData();
|
appUserMap = appUserList.stream()
|
.collect(Collectors.toMap(AppUser::getId, Function.identity()));
|
}
|
|
// 封装用户信息
|
for (ClientMeditationQuestionVO questionVO : questionVOList) {
|
AppUser appUser = appUserMap.get(questionVO.getAppUserId());
|
if (appUser != null) {
|
questionVO.setNickname(appUser.getNickname());
|
questionVO.setAvatar(appUser.getAvatar());
|
}
|
}
|
|
// // 获取当前登录用户ID
|
// Long userId = tokenService.getLoginUser().getUserid();
|
//
|
// // 查询用户已点赞提问列表
|
// Set<Long> likedQuestionIds = meditationQuestionLikeService.lambdaQuery()
|
// .eq(MeditationQuestionLike::getAppUserId, userId)
|
// .list()
|
// .stream()
|
// .map(MeditationQuestionLike::getMeditationQuestionId)
|
// .collect(Collectors.toSet());
|
//
|
// // 设置问题的点赞状态
|
// questionVOList.forEach(question -> {
|
// if (likedQuestionIds.contains(question.getId())) {
|
// question.setLike(DisabledEnum.YES.getCode());
|
// }
|
// });
|
|
return pageDTO;
|
}
|
|
}
|