From b01f752252eaadd1fa31eda6a9ad43146660b721 Mon Sep 17 00:00:00 2001 From: 无关风月 <443237572@qq.com> Date: 星期四, 03 四月 2025 23:42:57 +0800 Subject: [PATCH] bug修改 --- xinquan-modules/xinquan-meditation/src/main/java/com/xinquan/meditation/service/impl/MeditationServiceImpl.java | 658 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 655 insertions(+), 3 deletions(-) diff --git a/xinquan-modules/xinquan-meditation/src/main/java/com/xinquan/meditation/service/impl/MeditationServiceImpl.java b/xinquan-modules/xinquan-meditation/src/main/java/com/xinquan/meditation/service/impl/MeditationServiceImpl.java index 631cfcb..2735f72 100644 --- a/xinquan-modules/xinquan-meditation/src/main/java/com/xinquan/meditation/service/impl/MeditationServiceImpl.java +++ b/xinquan-modules/xinquan-meditation/src/main/java/com/xinquan/meditation/service/impl/MeditationServiceImpl.java @@ -1,10 +1,51 @@ package com.xinquan.meditation.service.impl; -import com.xinquan.meditation.domain.Meditation; -import com.xinquan.meditation.mapper.MeditationMapper; -import com.xinquan.meditation.service.MeditationService; +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.AppUserViewingHistory; +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> @@ -15,6 +56,617 @@ * @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; + private final MeditationMapper meditationMapper; + /** + * 获取私人订制 + * + * @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> data1 = remoteOrderService.getMeditationIsBuyAll(userId).getData(); + List<Long> meditationIdList = data1.stream().map(Order::getBusinessId).collect(Collectors.toList()); + if (CollUtils.isNotEmpty(meditationIdList)) { + Set<Long> meditationIdSet = new HashSet<>(meditationIdList); + voList = voList.stream() + .filter(meditationVO -> meditationIdSet.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); + + if (CollUtils.isNotEmpty(list)) { + // 对象拷贝 + voList = BeanUtils.copyList(list, 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){ + List<Order> data1 = remoteOrderService.getMeditationIsBuyAll(loginUser.getUserid()).getData(); + for (ClientMeditationVO clientMeditationVO : meditationListByCateId) { + Order order = data1.stream().filter(e -> e.getBusinessId().equals(clientMeditationVO.getId())).findFirst().orElse(null); + if (order==null){ + clientMeditationVO.setIsBuy(2); + }else{ + clientMeditationVO.setIsBuy(1); + } + clientMeditationVO.setRealLearnedNum(clientMeditationVO.getVirtualLearnedNum()+clientMeditationVO.getRealLearnedNum()); + } + }else{ + for (ClientMeditationVO clientMeditationVO : meditationListByCateId) { + clientMeditationVO.setIsBuy(2); + clientMeditationVO.setRealLearnedNum(clientMeditationVO.getVirtualLearnedNum()+clientMeditationVO.getRealLearnedNum()); + } + } + 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; + } + List<Order> data1 = new ArrayList<Order>(); + + if (tokenService.getLoginUser()!=null){ + data1 = remoteOrderService.getMeditationIsBuyAll(tokenService.getLoginUser().getUserid()).getData(); + } + List<AppUserViewingHistory> data2 = remoteAppUserService.getMeditationHistoryCountAll().getData(); + boolean temp = tokenService.getLoginUser()!=null; + for (Meditation record : page.getRecords()) { + List<AppUserViewingHistory> collect = data2.stream().filter(e -> e.getBizId().equals(record.getId())).collect(Collectors.toList()); + record.setRealLearnedNum(collect.size()); + record.setRealLearnedNum(record.getVirtualLearnedNum()+record.getRealLearnedNum()); + if (temp){ + Order order = data1.stream().filter(e -> e.getBusinessId().equals(record.getId())).findFirst().orElse(null); + if (order==null){ + record.setIsBuy(2); + }else{ + record.setIsBuy(1); + } + }else{ + record.setIsBuy(2); + } + } + this.updateBatchById(page.getRecords()); + // 将实体类转换为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); + } + } + + this.updateById(meditation); + 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; + } + } -- Gitblit v1.7.1