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 | 465 +++++++++++++++++++++++++++++++++++++++++++++++++-------- 1 files changed, 395 insertions(+), 70 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 0142788..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,21 +1,21 @@ 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.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.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; @@ -28,20 +28,24 @@ 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.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.util.Arrays; -import java.util.Collections; -import java.util.List; -import java.util.Map; -import java.util.Objects; -import java.util.Optional; -import java.util.Set; + +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> @@ -61,7 +65,8 @@ private final MeditationQuestionMapper meditationQuestionMapper; private final MeditationQuestionLikeService meditationQuestionLikeService; private final MeditationUserFavoriteService meditationUserFavoriteService; - + private final RemoteOrderService remoteOrderService; + private final MeditationMapper meditationMapper; /** * 获取私人订制 * @@ -69,16 +74,62 @@ */ @Override public List<ClientMeditationVO> getPersonalityPlan() { - List<ClientMeditationVO> voList = null; + List<ClientMeditationVO> voList = new ArrayList<>(); // 获取当前登录用户id - AppUser appUser = getCurrentUser(); - if (Optional.ofNullable(appUser.getTagId()).isPresent()) { - String tagId = appUser.getTagId(); - Integer sanskritFlag = appUser.getSanskritFlag(); - Set<Long> tagIdSet = Arrays.stream(tagId.split(",")).map(Long::parseLong) - .collect(Collectors.toSet()); - // 查询冥想列表 - voList = baseMapper.getMeditationListByTagId(tagIdSet, sanskritFlag); + 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; } @@ -91,17 +142,26 @@ */ @Override public List<ClientMeditationVO> getMeditationListByCateId(Long cateId) { - List<ClientMeditationVO> voList = null; + List<ClientMeditationVO> voList = new ArrayList<>(); // 获取当前登录用户id AppUser appUser = getCurrentUser(); - // 查询 - List<Meditation> list = this.lambdaQuery().eq(Meditation::getCateId, cateId) - .eq(Meditation::getSanskrit, appUser.getSanskritFlag()) - .orderByDesc(Meditation::getSortNum).last("limit 8").list(); + 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; } @@ -111,10 +171,18 @@ * @return AppUser */ private AppUser getCurrentUser() { - Long userId = SecurityUtils.getUserId(); - return remoteAppUserService.getUserByCondition( - AppUserDTO.builder().id(userId).build(), - SecurityConstants.INNER).getData(); + 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(); + } + } /** @@ -124,25 +192,82 @@ */ @Override public List<ClientMeditationAndCateVO> getMeditationAndCateList() { + // 获取当前登录用户 - AppUser appUser = getCurrentUser(); List<ClientMeditationAndCateVO> voList = CollUtils.newArrayList(); // 查询分类列表 List<MeditationCategory> cateList = meditationCategoryMapper.selectList( Wrappers.lambdaQuery(MeditationCategory.class) .orderByDesc(MeditationCategory::getSortNum)); - if (CollUtils.isNotEmpty(cateList)) { for (MeditationCategory cate : cateList) { ClientMeditationAndCateVO vo = new ClientMeditationAndCateVO(); vo.setClientMeditationCategoryVO( - BeanUtils.copyBean(cateList, ClientMeditationCategoryVO.class)); - vo.setClientMeditationVOList(getMeditationListByCateId(cate.getId())); + 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获取冥想列表-分页 * @@ -157,20 +282,50 @@ PageDTO<ClientMeditationVO> pageDTO = PageDTO.empty(0L, 0L); // 获取当前登录用户id AppUser appUser = getCurrentUser(); - // 查询 - Page<Meditation> page = this.lambdaQuery().eq(Meditation::getCateId, cateId) - .eq(Meditation::getSanskrit, appUser.getSanskritFlag()) - .orderByDesc(Meditation::getSortNum) - .page(new Page<>(pageCurr, pageSize)); + 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 (Optional.ofNullable(page.getRecords()).isPresent()) { + 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; /** * 首页搜索首页 * @@ -184,15 +339,24 @@ Integer pageSize) { PageDTO<ClientMeditationVO> pageDTO = PageDTO.empty(0L, 0L); // 获取当前登录用户id - AppUser appUser = getCurrentUser(); - // 查询 - Page<Meditation> page = this.lambdaQuery() - .like(Meditation::getMeditationTitle, condition).or() - .eq(Meditation::getSanskrit, appUser.getSanskritFlag()) - .orderByDesc(Meditation::getSortNum) - .page(new Page<>(pageCurr, pageSize)); + 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()) { + if (!Optional.ofNullable(page.getRecords()).isPresent()) { return pageDTO; } // 音频链接加密 @@ -205,6 +369,7 @@ });*/ // 将实体类转换为VO pageDTO = PageDTO.of(page, ClientMeditationVO.class); + handlePaidMeditation(pageDTO.getList()); return pageDTO; } @@ -215,7 +380,84 @@ * @return 客户端冥想详情视图对象 */ @Override - public ClientMeditationDetailsVO getMeditationDetails(Long id) { + 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, @@ -230,11 +472,11 @@ .map(MeditationMusic::getMusicUrl).collect(Collectors.toList()); vo.setMeditationMusicList(musicUrlList); } - // 查询收藏记录 - vo.setFavorite(meditationUserFavoriteService.lambdaQuery() - .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) + .eq(MeditationQuestion::getShowFlag,1))); return vo; } @@ -252,22 +494,35 @@ // 查询收藏记录 Optional<MeditationUserFavorite> userOperationOpt = meditationUserFavoriteService.lambdaQuery() .eq(MeditationUserFavorite::getMeditationId, id) - .eq(MeditationUserFavorite::getAppUserId, SecurityUtils.getUserId()) + .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(SecurityUtils.getUserId()); + 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); } /** @@ -281,19 +536,19 @@ @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) - .eq(MeditationQuestion::getShowFlag, DisabledEnum.YES) - .orderByDesc(MeditationQuestion::getPublishTime) - ); - + .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); @@ -324,7 +579,7 @@ } // 获取当前登录用户ID - Long userId = SecurityUtils.getUserId(); + Long userId = tokenService.getLoginUser().getUserid(); // 查询用户已点赞提问列表 Set<Long> likedQuestionIds = meditationQuestionLikeService.lambdaQuery() @@ -343,5 +598,75 @@ 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