|
@@ -41,6 +41,9 @@ import vip.xiaonuo.forum.modular.postinfo.param.ForumPostInfoEditParam;
|
|
|
import vip.xiaonuo.forum.modular.postinfo.param.ForumPostInfoIdParam;
|
|
import vip.xiaonuo.forum.modular.postinfo.param.ForumPostInfoIdParam;
|
|
|
import vip.xiaonuo.forum.modular.postinfo.param.ForumPostInfoPageParam;
|
|
import vip.xiaonuo.forum.modular.postinfo.param.ForumPostInfoPageParam;
|
|
|
import vip.xiaonuo.forum.modular.postinfo.service.ForumPostInfoService;
|
|
import vip.xiaonuo.forum.modular.postinfo.service.ForumPostInfoService;
|
|
|
|
|
+import vip.xiaonuo.forum.modular.postlike.entity.ForumPostLike;
|
|
|
|
|
+import vip.xiaonuo.forum.modular.postlike.mapper.ForumPostLikeMapper;
|
|
|
|
|
+import vip.xiaonuo.forum.modular.postlike.service.ForumPostLikeService;
|
|
|
import vip.xiaonuo.forum.modular.postreply.entity.ForumPostReply;
|
|
import vip.xiaonuo.forum.modular.postreply.entity.ForumPostReply;
|
|
|
import vip.xiaonuo.forum.modular.postreply.param.ForumPostReplyPageParam;
|
|
import vip.xiaonuo.forum.modular.postreply.param.ForumPostReplyPageParam;
|
|
|
import vip.xiaonuo.forum.modular.postreply.service.ForumPostReplyService;
|
|
import vip.xiaonuo.forum.modular.postreply.service.ForumPostReplyService;
|
|
@@ -55,7 +58,9 @@ import vip.xiaonuo.forum.modular.supportenv.mapper.ForumSupportEnvMapper;
|
|
|
import vip.xiaonuo.sys.api.SysUserApi;
|
|
import vip.xiaonuo.sys.api.SysUserApi;
|
|
|
|
|
|
|
|
import javax.annotation.Resource;
|
|
import javax.annotation.Resource;
|
|
|
|
|
+import java.util.ArrayList;
|
|
|
import java.util.List;
|
|
import java.util.List;
|
|
|
|
|
+import java.util.stream.Collectors;
|
|
|
|
|
|
|
|
/**
|
|
/**
|
|
|
* 帖子信息表Service接口实现类
|
|
* 帖子信息表Service接口实现类
|
|
@@ -88,6 +93,10 @@ public class ForumPostInfoServiceImpl extends ServiceImpl<ForumPostInfoMapper, F
|
|
|
@Lazy
|
|
@Lazy
|
|
|
private ForumPostReplyService forumPostReplyService;
|
|
private ForumPostReplyService forumPostReplyService;
|
|
|
|
|
|
|
|
|
|
+ @Resource
|
|
|
|
|
+ @Lazy
|
|
|
|
|
+ private ForumPostLikeService forumPostLikeService;
|
|
|
|
|
+
|
|
|
|
|
|
|
|
@Override
|
|
@Override
|
|
|
public Page<ForumPostInfo> page(ForumPostInfoPageParam forumPostInfoPageParam) {
|
|
public Page<ForumPostInfo> page(ForumPostInfoPageParam forumPostInfoPageParam) {
|
|
@@ -353,4 +362,87 @@ public class ForumPostInfoServiceImpl extends ServiceImpl<ForumPostInfoMapper, F
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
+ @Override
|
|
|
|
|
+ public Page<ForumPostInfo> moreList(ForumPostInfoPageParam forumPostInfoPageParam) {
|
|
|
|
|
+ SaBaseLoginUser loginUser = StpLoginUserUtil.getLoginUser();
|
|
|
|
|
+ QueryWrapper<ForumPostInfo> queryWrapper = new QueryWrapper<>();
|
|
|
|
|
+ // 帖子标题
|
|
|
|
|
+ if (StringUtils.isNotBlank(forumPostInfoPageParam.getPostTitle())) {
|
|
|
|
|
+ queryWrapper.lambda().like(ForumPostInfo::getPostTitle, forumPostInfoPageParam.getPostTitle());
|
|
|
|
|
+ }
|
|
|
|
|
+ // 帖子分类
|
|
|
|
|
+ if (StringUtils.isNotBlank(forumPostInfoPageParam.getTypeId())) {
|
|
|
|
|
+ queryWrapper.lambda().eq(ForumPostInfo::getTypeId, forumPostInfoPageParam.getTypeId());
|
|
|
|
|
+ }
|
|
|
|
|
+ // 帖子类型 0普通帖子 1技术支持 2内容纠错
|
|
|
|
|
+ if (forumPostInfoPageParam.getPostType() != null) {
|
|
|
|
|
+ queryWrapper.lambda().eq(ForumPostInfo::getPostType, forumPostInfoPageParam.getPostType());
|
|
|
|
|
+ }
|
|
|
|
|
+ // 帖子扩展类型 1.查询我发布的 2.查询我回复的 3.查询关于我的 4.查询我点赞的
|
|
|
|
|
+ if (forumPostInfoPageParam.getPostExtend() == 1) {
|
|
|
|
|
+ queryWrapper.lambda().eq(ForumPostInfo::getUserId, loginUser.getId());
|
|
|
|
|
+ } else if (forumPostInfoPageParam.getPostExtend() == 2) {
|
|
|
|
|
+ QueryWrapper<ForumPostReply> queryWrapper1 = new QueryWrapper<>();
|
|
|
|
|
+ queryWrapper1.lambda().eq(ForumPostReply::getUserId, StpLoginUserUtil.getLoginUser().getId());
|
|
|
|
|
+ List<String> postIds = forumPostReplyService.list(queryWrapper1).stream().map(ForumPostReply::getPostId).collect(Collectors.toList());
|
|
|
|
|
+ if (postIds.size() > 0) {
|
|
|
|
|
+ queryWrapper.lambda().in(ForumPostInfo::getPostId, postIds);
|
|
|
|
|
+ }
|
|
|
|
|
+ } else if (forumPostInfoPageParam.getPostExtend() == 3) {
|
|
|
|
|
+ queryWrapper.apply("FIND_IN_SET({0}, APPOINT_USER) > 0", loginUser.getAccount());
|
|
|
|
|
+ } else if (forumPostInfoPageParam.getPostExtend() == 4) {
|
|
|
|
|
+ QueryWrapper<ForumPostLike> queryWrapper1 = new QueryWrapper<>();
|
|
|
|
|
+ queryWrapper1.lambda().eq(ForumPostLike::getUserId, loginUser.getId());
|
|
|
|
|
+ List<ForumPostLike> list = forumPostLikeService.list(queryWrapper1);
|
|
|
|
|
+ List<String> postIds = new ArrayList<>();
|
|
|
|
|
+ for (ForumPostLike forumPostLike : list) {
|
|
|
|
|
+ // 因为点赞有两个类型,其中有一个是点赞回复的,所以点赞回复的还需要关联查一下帖子
|
|
|
|
|
+ if (forumPostLike.getLikeType() == 1) {
|
|
|
|
|
+ QueryWrapper<ForumPostReply> queryWrapper2 = new QueryWrapper<>();
|
|
|
|
|
+ queryWrapper2.lambda().eq(ForumPostReply::getReplyId, forumPostLike.getTargetId());
|
|
|
|
|
+ List<String> postIds1 = forumPostReplyService.list(queryWrapper2).stream().map(ForumPostReply::getPostId).collect(Collectors.toList());
|
|
|
|
|
+ postIds.addAll(postIds1);
|
|
|
|
|
+ } else {
|
|
|
|
|
+ postIds.add(forumPostLike.getTargetId());
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ if (postIds.size() > 0) {
|
|
|
|
|
+ queryWrapper.lambda().in(ForumPostInfo::getPostId, postIds);
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ // 置顶的优先
|
|
|
|
|
+ queryWrapper.lambda().orderByDesc(ForumPostInfo::getIsTop).orderByDesc(ForumPostInfo::getCreateTime);
|
|
|
|
|
+ // 帖子状态 0正常
|
|
|
|
|
+ queryWrapper.lambda().eq(ForumPostInfo::getPostStatus, 0);
|
|
|
|
|
+ Page<ForumPostInfo> page = this.page(CommonPageRequest.defaultPage(), queryWrapper);
|
|
|
|
|
+ if (page.getRecords().size() > 0) {
|
|
|
|
|
+ for (ForumPostInfo forumPostInfo : page.getRecords()) {
|
|
|
|
|
+ // 关联帖子分类名称
|
|
|
|
|
+ ForumPostType forumPostType = forumPostTypeMapper.selectById(forumPostInfo.getTypeId());
|
|
|
|
|
+ if (ObjectUtil.isNotNull(forumPostType)) {
|
|
|
|
|
+ forumPostInfo.setTypeName(forumPostType.getTypeName());
|
|
|
|
|
+ }
|
|
|
|
|
+ // 关联发帖用户的信息
|
|
|
|
|
+ JSONObject user = sysUserApi.getUserByIdWithoutException(forumPostInfo.getUserId());
|
|
|
|
|
+ if (user != null) {
|
|
|
|
|
+ forumPostInfo.setUserNickName(user.getStr("name"));
|
|
|
|
|
+ forumPostInfo.setUserAvatar(user.getStr("avatar"));
|
|
|
|
|
+ }
|
|
|
|
|
+ // 关联最后发帖用户的信息
|
|
|
|
|
+ JSONObject lastReplyUser = sysUserApi.getUserByIdWithoutException(forumPostInfo.getLastReplyUserId());
|
|
|
|
|
+ if (lastReplyUser != null) {
|
|
|
|
|
+ forumPostInfo.setLastReplyUserNickName(lastReplyUser.getStr("name"));
|
|
|
|
|
+ forumPostInfo.setLastReplyUserAvatar(lastReplyUser.getStr("avatar"));
|
|
|
|
|
+ }
|
|
|
|
|
+ // 校验帖子是否为自己的
|
|
|
|
|
+ if (forumPostInfo.getUserId().equals(StpLoginUserUtil.getLoginUser().getId())) {
|
|
|
|
|
+ forumPostInfo.setIsSelf(1);
|
|
|
|
|
+ } else {
|
|
|
|
|
+ forumPostInfo.setIsSelf(0);
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ return page;
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
}
|
|
}
|