From 64f7ccb9ef8b5a0618e65cddc14b981c1f108ba3 Mon Sep 17 00:00:00 2001 From: 无关风月 <443237572@qq.com> Date: 星期一, 04 十一月 2024 09:01:59 +0800 Subject: [PATCH] 代码提交 --- xinquan-modules/xinquan-meditation/src/main/java/com/xinquan/meditation/service/impl/MeditationServiceImpl.java | 243 +++++++++++++++++++++++++++++++++++++----------- 1 files changed, 186 insertions(+), 57 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 7e74ef5..89ee900 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,9 +1,11 @@ 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; @@ -11,7 +13,9 @@ 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.common.security.utils.SecurityUtils; +import com.xinquan.course.api.domain.Course; import com.xinquan.meditation.api.domain.Meditation; import com.xinquan.meditation.domain.*; import com.xinquan.meditation.domain.vo.ClientMeditationAndCateVO; @@ -30,18 +34,17 @@ import com.xinquan.order.api.feign.RemoteOrderService; import com.xinquan.system.api.domain.AppUser; import com.xinquan.system.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.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; @@ -71,21 +74,35 @@ */ @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(); + 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); + } + voList = handlePaidMeditation(voList); + return voList; + }else{ + voList = baseMapper.getMeditationListByTagId(null, null); + return voList; } - voList = handlePaidMeditation(voList); - return voList; } - + /** * 处理已付费冥想音频 * @@ -94,7 +111,11 @@ */ private List<ClientMeditationVO> handlePaidMeditation(List<ClientMeditationVO> voList) { // 远程调用订单服务,查询用户已付费冥想 - Long userId = SecurityUtils.getUserId(); + 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(); @@ -117,13 +138,17 @@ */ @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<>(); + meditationLambdaQueryWrapper.eq(Meditation::getCateId, cateId); + if (appUser!=null){ + meditationLambdaQueryWrapper.eq(Meditation::getSanskrit, appUser.getSanskritFlag()); + meditationLambdaQueryWrapper.orderByDesc(Meditation::getSortNum).last("limit 8"); + } + List<Meditation> list =this.list(meditationLambdaQueryWrapper); + if (CollUtils.isNotEmpty(list)) { // 对象拷贝 voList = BeanUtils.copyList(list, ClientMeditationVO.class); @@ -138,10 +163,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(); + } + } /** @@ -152,21 +185,18 @@ @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)); + BeanUtils.copyBean(cate, ClientMeditationCategoryVO.class)); vo.setClientMeditationVOList(getMeditationListByCateId(cate.getId())); voList.add(vo); } - } return voList; } @@ -184,13 +214,15 @@ 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){ + meditationLambdaQueryWrapper.eq(Meditation::getSanskrit, appUser.getSanskritFlag()); + } + 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; } // 将实体类转换为VO @@ -198,6 +230,8 @@ return pageDTO; } + @Autowired + private TokenService tokenService; /** * 首页搜索首页 * @@ -211,15 +245,22 @@ 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.like(Meditation::getMeditationTitle, condition); + if (loginUser!=null){ + Long userid = loginUser.getUserid(); + AppUser appUser = remoteAppUserService.getAppUserById(userid + "").getData(); + 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; } // 音频链接加密 @@ -244,6 +285,38 @@ */ @Override public ClientMeditationDetailsVO getMeditationDetails(Long id) { + AppUserVO data1 = remoteAppUserService.getCurrentUser().getData(); + + + // 查询冥想音频 + Meditation meditation = this.getById(id); + ClientMeditationDetailsVO vo = BeanUtils.copyBean(meditation, + ClientMeditationDetailsVO.class); + if (data1.getVipExpireTime()!=null && data1.getVipExpireTime().isAfter(LocalDateTime.now())){ + vo.setIsVip(1); + }else{ + vo.setIsVip(0); + } + Integer data = remoteOrderService.getMeditationIsBuy(data1.getId(), id).getData(); + vo.setIsBuy(data); + // 查询冥想音频 + 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))); + return vo; + } + @Override + public ClientMeditationDetailsVO getMeditationDetails1(Long id) { // 查询冥想音频 Meditation meditation = this.getById(id); ClientMeditationDetailsVO vo = BeanUtils.copyBean(meditation, @@ -258,11 +331,6 @@ .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) @@ -284,7 +352,7 @@ // 查询收藏记录 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()); @@ -294,7 +362,7 @@ // 增加收藏记录 MeditationUserFavorite meditationUserFavorite = new MeditationUserFavorite(); meditationUserFavorite.setMeditationId(id); - meditationUserFavorite.setAppUserId(SecurityUtils.getUserId()); + meditationUserFavorite.setAppUserId(tokenService.getLoginUser().getUserid()); meditationUserFavoriteService.save(meditationUserFavorite); // 增加收藏数 meditation.setFavoriteCount(meditation.getFavoriteCount() + 1); @@ -331,12 +399,11 @@ new Page<>(pageCurr, pageSize), Wrappers.lambdaQuery(MeditationQuestion.class) .eq(MeditationQuestion::getMeditationId, id) - .eq(MeditationQuestion::getShowFlag, DisabledEnum.YES) + .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); @@ -367,7 +434,7 @@ } // 获取当前登录用户ID - Long userId = SecurityUtils.getUserId(); + Long userId = tokenService.getLoginUser().getUserid(); // 查询用户已点赞提问列表 Set<Long> likedQuestionIds = meditationQuestionLikeService.lambdaQuery() @@ -386,5 +453,67 @@ return pageDTO; } + @Override + public PageDTO<ClientMeditationQuestionVO> getMeditationQuestionPageShare(Long id, + Integer pageCurr, Integer pageSize) { + // 查询冥想提问列表 + Page<MeditationQuestion> questionPage = meditationQuestionMapper.selectPage( + new Page<>(pageCurr, pageSize), + Wrappers.lambdaQuery(MeditationQuestion.class) + .eq(MeditationQuestion::getMeditationId, id) + .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