|
@@ -3,12 +3,15 @@ package com.redxun.knowledge.album.service;
|
|
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
|
|
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
|
|
import com.baomidou.mybatisplus.core.metadata.IPage;
|
|
|
+import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
|
|
|
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
|
|
import com.redxun.common.base.db.BaseDao;
|
|
|
import com.redxun.common.base.db.BaseService;
|
|
|
import com.redxun.common.base.db.PageHelper;
|
|
|
import com.redxun.common.base.search.QueryFilter;
|
|
|
import com.redxun.common.service.impl.SuperServiceImpl;
|
|
|
import com.redxun.common.tool.IdGenerator;
|
|
|
+import com.redxun.common.tool.StringUtils;
|
|
|
import com.redxun.knowledge.album.entity.consts.AlbumConst;
|
|
|
import com.redxun.knowledge.album.entity.dao.*;
|
|
|
import com.redxun.knowledge.album.entity.dto.YelpDto;
|
|
@@ -24,6 +27,7 @@ import com.redxun.knowledge.album.mapper.AlbumInfoMapper;
|
|
|
import com.redxun.knowledge.album.mapper.AlbumVersionMapper;
|
|
|
import com.redxun.knowledge.album.mapper.AlbumYelpMapper;
|
|
|
import com.redxun.knowledge.common.UserService;
|
|
|
+import com.redxun.knowledge.utils.PageListUtils;
|
|
|
import org.springframework.beans.BeanUtils;
|
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
|
import org.springframework.stereotype.Service;
|
|
@@ -77,23 +81,57 @@ public class AlbumYelpServiceImpl extends SuperServiceImpl<AlbumYelpMapper, Albu
|
|
|
*/
|
|
|
@Override
|
|
|
public IPage query(QueryFilter queryFilter) {
|
|
|
- Map<String, Object> params = PageHelper.constructParams(queryFilter);
|
|
|
- queryFilter.getParams().put("createBy",userService.queryLoginUser());
|
|
|
- IPage page = albumYelpMapper.findAllYelpInfo(queryFilter.getPage(), queryFilter.getParams(), params);
|
|
|
- List<AlbumYelp> albumYelpList = page.getRecords();
|
|
|
- List<AlbumYelpListPcVo> albumYelpListPcVoList = albumYelpList.parallelStream().map(albumYelp -> {
|
|
|
- AlbumYelpListPcVo albumYelpListPcVo = new AlbumYelpListPcVo();
|
|
|
- albumYelpListPcVo.setPkId(albumYelp.getPkId());
|
|
|
- albumYelpListPcVo.setState(albumYelp.getState());
|
|
|
- albumYelpListPcVo.setCreateName(userService.queryOsUserDto(albumYelp.getCreateBy()).getFullName());
|
|
|
- albumYelpListPcVo.setCreatePhoto((String) userService.querySexAndPhoto(albumYelp.getCreateBy()).get("photo"));
|
|
|
- albumYelpListPcVo.setContent(albumYelp.getContent());
|
|
|
- albumYelpListPcVo.setCreateTime(albumYelp.getCreateTime());
|
|
|
- // TODO: 2023/2/16 下级回复
|
|
|
- return albumYelpListPcVo;
|
|
|
- }).collect(Collectors.toList());
|
|
|
- page.setRecords(albumYelpListPcVoList);
|
|
|
- return page;
|
|
|
+ //获取请求参数
|
|
|
+ String userId = userService.queryLoginUser();
|
|
|
+ Map<String, Object> params = queryFilter.getParams();
|
|
|
+ String albumId = (String) params.get("albumId");
|
|
|
+ String type = (String) params.get("type");
|
|
|
+ List<AlbumYelpListPcVo> albumYelpListPcVoList = new ArrayList<>();
|
|
|
+ if ("1".equals(type)){
|
|
|
+ albumYelpListPcVoList = listAll(albumId,type);
|
|
|
+ Page page = PageListUtils.getPages(queryFilter.getPage().getCurrent(), queryFilter.getPage().getSize(), albumYelpListPcVoList);
|
|
|
+ return page;
|
|
|
+ } else {
|
|
|
+ //与我相关
|
|
|
+ //1.1 与我相关的一级点评+回复
|
|
|
+ List<AlbumYelpListPcVo> finalAlbumYelpListPcVoList = listAll(albumId,type);
|
|
|
+ //收集一级点评Id
|
|
|
+ List<String> yelpId = finalAlbumYelpListPcVoList.parallelStream().map(AlbumYelpListPcVo::getPkId).collect(Collectors.toList());
|
|
|
+ //1.2 查询与我相关的回复
|
|
|
+ List<AlbumYelp> listAllRepliesById = albumYelpMapper.findListAllRepliesById(albumId, userId);
|
|
|
+ listAllRepliesById.forEach(e -> {
|
|
|
+ QueryWrapper<AlbumYelp> queryWrapper = new QueryWrapper<>();
|
|
|
+ queryWrapper.eq("PK_ID",e.getYelpId());
|
|
|
+ AlbumYelp albumYelpParent = albumYelpMapper.selectOne(queryWrapper);
|
|
|
+ if (CollectionUtils.isNotEmpty(yelpId)){
|
|
|
+ if (!yelpId.contains(albumYelpParent.getPkId())){
|
|
|
+ AlbumYelpListPcVo albumYelpListPcVoParent = new AlbumYelpListPcVo();
|
|
|
+ BeanUtils.copyProperties(albumYelpParent, albumYelpListPcVoParent);
|
|
|
+ albumYelpListPcVoParent.setCreateName(userService.queryOsUserDto(albumYelpParent.getCreateBy()).getFullName());
|
|
|
+ albumYelpListPcVoParent.setCreatePhoto((String) userService.querySexAndPhoto(albumYelpParent.getCreateBy()).get("photo"));
|
|
|
+ List<AlbumYelpListPcVo> replies = replies(albumYelpParent);
|
|
|
+ replyCount(albumYelpListPcVoParent,replies);
|
|
|
+ finalAlbumYelpListPcVoList.add(albumYelpListPcVoParent);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ });
|
|
|
+ Page page = PageListUtils.getPages(queryFilter.getPage().getCurrent(), queryFilter.getPage().getSize(),
|
|
|
+ finalAlbumYelpListPcVoList.stream().distinct().sorted((t1, t2) -> t2.getCreateTime().compareTo(t1.getCreateTime())).collect(Collectors.toList()));
|
|
|
+ return page;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ private void replyCount(AlbumYelpListPcVo albumYelpListPcVoParent,List<AlbumYelpListPcVo> replies){
|
|
|
+ if (replies.size() == 0) {
|
|
|
+ albumYelpListPcVoParent.setReplyCount(0);
|
|
|
+ albumYelpListPcVoParent.setReplies(null);
|
|
|
+ } else if (replies.size() >= 2){
|
|
|
+ albumYelpListPcVoParent.setReplyCount(replies.size());
|
|
|
+ albumYelpListPcVoParent.setReplies(replies.stream().limit(2).collect(Collectors.toList()));
|
|
|
+ } else {
|
|
|
+ albumYelpListPcVoParent.setReplyCount(replies.size());
|
|
|
+ albumYelpListPcVoParent.setReplies(replies);
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
/**
|
|
@@ -274,9 +312,14 @@ public class AlbumYelpServiceImpl extends SuperServiceImpl<AlbumYelpMapper, Albu
|
|
|
* @param albumId
|
|
|
* @return
|
|
|
*/
|
|
|
- public List<AlbumYelpListPcVo> listAll(String albumId) {
|
|
|
+ public List<AlbumYelpListPcVo> listAll(String albumId,String type) {
|
|
|
+ List<AlbumYelp> albumYelpList = new ArrayList<>();
|
|
|
String userId = userService.queryLoginUser();
|
|
|
- List<AlbumYelp> albumYelpList = albumYelpMapper.findListAllYelpInfo(albumId,userId);
|
|
|
+ if ("1".equals(type)){
|
|
|
+ albumYelpList = albumYelpMapper.findListAllYelpInfo(albumId,userId);
|
|
|
+ } else {
|
|
|
+ albumYelpList = albumYelpMapper.findListAllYelpInfoById(albumId, userId);
|
|
|
+ }
|
|
|
List<AlbumYelpListPcVo> albumYelpListPcVoList = albumYelpList.parallelStream().map(albumYelp -> {
|
|
|
AlbumYelpListPcVo albumYelpListPcVo = new AlbumYelpListPcVo();
|
|
|
BeanUtils.copyProperties(albumYelp, albumYelpListPcVo);
|
|
@@ -284,16 +327,8 @@ public class AlbumYelpServiceImpl extends SuperServiceImpl<AlbumYelpMapper, Albu
|
|
|
albumYelpListPcVo.setCreatePhoto((String) userService.querySexAndPhoto(albumYelp.getCreateBy()).get("photo"));
|
|
|
//查询下级
|
|
|
List<AlbumYelpListPcVo> replies = replies(albumYelp);
|
|
|
- if (replies.size() == 0) {
|
|
|
- albumYelpListPcVo.setReplyCount(0);
|
|
|
- albumYelpListPcVo.setReplies(null);
|
|
|
- } else if (replies.size() >= 2){
|
|
|
- albumYelpListPcVo.setReplyCount(replies.size());
|
|
|
- albumYelpListPcVo.setReplies(replies.stream().limit(2).collect(Collectors.toList()));
|
|
|
- } else {
|
|
|
- albumYelpListPcVo.setReplyCount(replies.size());
|
|
|
- albumYelpListPcVo.setReplies(replies);
|
|
|
- }
|
|
|
+ //组装下级
|
|
|
+ replyCount(albumYelpListPcVo,replies);
|
|
|
return albumYelpListPcVo;
|
|
|
}).collect(Collectors.toList());
|
|
|
return albumYelpListPcVoList;
|
|
@@ -309,9 +344,9 @@ public class AlbumYelpServiceImpl extends SuperServiceImpl<AlbumYelpMapper, Albu
|
|
|
List<AlbumYelp> albumYelpList = albumYelpMapper.findListAllReplies(albumYelp.getAlbumId(),userId,albumYelp.getPkId());
|
|
|
List<AlbumYelpListPcVo> albumYelpListPcVoList = albumYelpList.parallelStream().map(albumYelp1 -> {
|
|
|
AlbumYelpListPcVo albumYelpListPcVo = new AlbumYelpListPcVo();
|
|
|
- BeanUtils.copyProperties(albumYelp, albumYelpListPcVo);
|
|
|
- albumYelpListPcVo.setCreateName(userService.queryOsUserDto(albumYelp.getCreateBy()).getFullName());
|
|
|
- albumYelpListPcVo.setCreatePhoto((String) userService.querySexAndPhoto(albumYelp.getCreateBy()).get("photo"));
|
|
|
+ BeanUtils.copyProperties(albumYelp1, albumYelpListPcVo);
|
|
|
+ albumYelpListPcVo.setCreateName(userService.queryOsUserDto(albumYelp1.getCreateBy()).getFullName());
|
|
|
+ albumYelpListPcVo.setCreatePhoto((String) userService.querySexAndPhoto(albumYelp1.getCreateBy()).get("photo"));
|
|
|
List<AlbumYelpListPcVo> replies = replies(albumYelp1);
|
|
|
if (replies.size() == 0) {
|
|
|
albumYelpListPcVo.setReplyCount(0);
|