| | |
| | | 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.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; |
| | |
| | | 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; |
| | | |
| | |
| | | */ |
| | | @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; |
| | | } |
| | | |
| | | |
| | | /** |
| | | * 处理已付费冥想音频 |
| | | * |
| | |
| | | */ |
| | | 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(); |
| | |
| | | */ |
| | | @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); |
| | |
| | | * @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(); |
| | | } |
| | | |
| | | } |
| | | |
| | | /** |
| | |
| | | @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; |
| | | } |
| | | |
| | |
| | | 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 |
| | |
| | | return pageDTO; |
| | | } |
| | | |
| | | @Autowired |
| | | private TokenService tokenService; |
| | | /** |
| | | * 首页搜索首页 |
| | | * |
| | |
| | | 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; |
| | | } |
| | | // 音频链接加密 |
| | |
| | | */ |
| | | @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, |
| | |
| | | .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) |
| | |
| | | // 查询收藏记录 |
| | | 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()); |
| | |
| | | // 增加收藏记录 |
| | | MeditationUserFavorite meditationUserFavorite = new MeditationUserFavorite(); |
| | | meditationUserFavorite.setMeditationId(id); |
| | | meditationUserFavorite.setAppUserId(SecurityUtils.getUserId()); |
| | | meditationUserFavorite.setAppUserId(tokenService.getLoginUser().getUserid()); |
| | | meditationUserFavoriteService.save(meditationUserFavorite); |
| | | // 增加收藏数 |
| | | meditation.setFavoriteCount(meditation.getFavoriteCount() + 1); |
| | |
| | | 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); |
| | |
| | | } |
| | | |
| | | // 获取当前登录用户ID |
| | | Long userId = SecurityUtils.getUserId(); |
| | | Long userId = tokenService.getLoginUser().getUserid(); |
| | | |
| | | // 查询用户已点赞提问列表 |
| | | Set<Long> likedQuestionIds = meditationQuestionLikeService.lambdaQuery() |
| | |
| | | |
| | | 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; |
| | | } |
| | | |
| | | } |