Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Sign in
Toggle navigation
T
tanpu-community
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Packages
Packages
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
探普后端
tanpu-community
Commits
c70d817b
Commit
c70d817b
authored
Feb 22, 2022
by
刘基明
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch 'v2.3.1' into 'dev'
权限过滤 See merge request
!59
parents
77124794
0c221fdb
Show whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
75 additions
and
8 deletions
+75
-8
CommentManager.java
...main/java/com/tanpu/community/manager/CommentManager.java
+14
-2
ThemeManager.java
...c/main/java/com/tanpu/community/manager/ThemeManager.java
+7
-3
TopicManager.java
...c/main/java/com/tanpu/community/manager/TopicManager.java
+6
-1
TopicService.java
...c/main/java/com/tanpu/community/service/TopicService.java
+29
-2
RankUtils.java
...ice/src/main/java/com/tanpu/community/util/RankUtils.java
+19
-0
No files found.
community-service/src/main/java/com/tanpu/community/manager/CommentManager.java
View file @
c70d817b
...
...
@@ -24,6 +24,7 @@ import com.tanpu.community.service.CommentService;
import
com.tanpu.community.service.NotificationService
;
import
com.tanpu.community.service.ReportLogService
;
import
com.tanpu.community.service.ThemeService
;
import
com.tanpu.community.service.TopicService
;
import
com.tanpu.community.util.ConvertUtil
;
import
org.apache.commons.lang3.StringUtils
;
import
org.springframework.beans.factory.annotation.Autowired
;
...
...
@@ -62,6 +63,8 @@ public class CommentManager {
@Autowired
private
ThemeService
themeService
;
@Resource
private
TopicService
topicService
;
// 评论(对主题)
// 发表评论(对主题)
...
...
@@ -124,6 +127,9 @@ public class CommentManager {
}
else
{
likeCommentList
=
Sets
.
newHashSetWithExpectedSize
(
0
);
}
// 查询管理员
ThemeEntity
themeEntity
=
themeService
.
queryByThemeId
(
themeId
);
String
managerId
=
topicService
.
getManagerId
(
themeEntity
.
getTopicId
());
for
(
CommentQo
commentQo
:
commentQos
)
{
// 封装用户信息
...
...
@@ -133,7 +139,13 @@ public class CommentManager {
commentQo
.
setHasLiked
(
likeCommentList
.
contains
(
commentId
));
Integer
countByTypeAndId
=
collectionService
.
getCountByTypeAndId
(
commentId
,
CollectionTypeEnum
.
LIKE_COMMENT
);
commentQo
.
setLikeCount
(
countByTypeAndId
);
// 是否管理员
if
(
commentQo
.
getAuthorId
().
equals
(
managerId
))
{
commentQo
.
setManager
(
true
);
}
else
{
commentQo
.
setManager
(
false
);
}
}
//排序:点赞降序+时间降序
...
...
@@ -157,7 +169,7 @@ public class CommentManager {
commentQo
.
setBelongUserOrgName
(
userInfo
.
getBelongUserOrgName
());
}
// 回复用户名
if
(
StringUtils
.
isNotBlank
(
commentQo
.
getReplyUserId
())){
if
(
StringUtils
.
isNotBlank
(
commentQo
.
getReplyUserId
()))
{
UserInfoResp
replyUser
=
redisCache
.
getObject
(
StringUtils
.
joinWith
(
"_"
,
CACHE_FEIGN_USER_INFO
,
authorId
),
60
,
()
->
this
.
getUserInfo
(
commentQo
.
getReplyUserId
()),
UserInfoResp
.
class
);
if
(
replyUser
!=
null
)
{
...
...
community-service/src/main/java/com/tanpu/community/manager/ThemeManager.java
View file @
c70d817b
...
...
@@ -467,8 +467,7 @@ public class ThemeManager {
/**
* 查询主题列表:推荐/关注/热门/最新
*/
// 查询主题列表:推荐/关注/热门/最新
public
ThemeListResp
queryList
(
ThemeListReq
req
,
String
userId111
)
{
public
ThemeListResp
queryList
(
ThemeListReq
req
,
String
userId
)
{
List
<
String
>
excludeIds
=
new
ArrayList
<>();
LocalDateTime
firstThemeTime
=
LocalDateTime
.
now
();
if
(
req
.
page
.
pageNumber
>
1
)
{
...
...
@@ -492,6 +491,7 @@ public class ThemeManager {
// 需要筛掉用户访问过详情的 & 最近出现在列表页过的.
List
<
String
>
visitedIds
=
StringUtils
.
isEmpty
(
req
.
getUserId
())
?
Lists
.
newArrayListWithCapacity
(
0
)
:
visitLogService
.
queryUserRecentVisited
(
req
.
getUserId
());
List
<
String
>
excludes
=
ListUtils
.
union
(
excludeIds
,
visitedIds
);
// 计算推荐列表
List
<
String
>
recmdIds
=
recommendService
.
getRecommendThemes
(
pageStart
,
pageSize
,
req
.
getUserId
(),
excludes
,
firstThemeTime
);
// 加载第一页时,为防止首页显示空列表,从推荐池中再捞出已看过帖子
...
...
@@ -501,8 +501,12 @@ public class ThemeManager {
}
themes
=
themeService
.
queryByThemeIds
(
recmdIds
);
// 权限控制,筛选出当前用户有权限的话题
Set
<
String
>
userPermitTopics
=
topicService
.
getUserPermitTopics
(
userId
);
// 排序并去重
themes
=
RankUtils
.
sortThemeEntityByIds
(
themes
,
recmdIds
).
stream
().
limit
(
pageSize
).
collect
(
Collectors
.
toList
());
themes
=
RankUtils
.
sortThemeEntityByIds
(
themes
,
recmdIds
,
userPermitTopics
).
stream
().
limit
(
pageSize
).
collect
(
Collectors
.
toList
());
}
else
if
(
ThemeListTypeEnum
.
FOLLOW
.
getCode
().
equals
(
req
.
getType
()))
{
...
...
community-service/src/main/java/com/tanpu/community/manager/TopicManager.java
View file @
c70d817b
...
...
@@ -56,7 +56,11 @@ public class TopicManager {
// 首页-话题标签
public
List
<
TopicRankQo
>
getTop4TopicTitles
()
{
return
rankService
.
getRankTopicListTop4
();
List
<
TopicRankQo
>
rankTopicListTop4
=
rankService
.
getRankTopicListTop4
();
//检查权限
topicService
.
batchCheckPermission
(
rankTopicListTop4
,
userHolder
.
getUserId
());
return
rankTopicListTop4
;
}
// 话题列表
...
...
@@ -98,6 +102,7 @@ public class TopicManager {
topicFollowQos
.
stream
().
forEach
(
o
->
{
TopicRankQo
topicRankQo
=
topicMap
.
get
(
o
.
getTopicId
());
BeanUtils
.
copyProperties
(
topicRankQo
,
o
);
o
.
setHasPermission
(
true
);
});
...
...
community-service/src/main/java/com/tanpu/community/service/TopicService.java
View file @
c70d817b
...
...
@@ -11,9 +11,9 @@ import com.tanpu.community.api.beans.qo.TopicPageDetailQo;
import
com.tanpu.community.api.beans.qo.TopicRankQo
;
import
com.tanpu.community.api.beans.req.topic.TopicDiscussionReq
;
import
com.tanpu.community.api.beans.resp.CoursePackageSimpleResp
;
import
com.tanpu.community.api.beans.vo.feign.product.FundCompanyVO
;
import
com.tanpu.community.api.beans.vo.feign.activity.OfflineActivitySimpleResp
;
import
com.tanpu.community.api.beans.vo.feign.fatools.UserInfoResp
;
import
com.tanpu.community.api.beans.vo.feign.product.FundCompanyVO
;
import
com.tanpu.community.api.beans.vo.feign.product.ProductInfoVO
;
import
com.tanpu.community.api.enums.DeleteTagEnum
;
import
com.tanpu.community.api.enums.StatusEnum
;
...
...
@@ -37,7 +37,9 @@ import java.time.LocalDateTime;
import
java.util.ArrayList
;
import
java.util.Arrays
;
import
java.util.Collections
;
import
java.util.HashSet
;
import
java.util.List
;
import
java.util.Set
;
import
java.util.stream.Collectors
;
...
...
@@ -248,6 +250,10 @@ public class TopicService {
}
public
String
getManagerId
(
String
topicId
)
{
if
(
StringUtils
.
isBlank
(
topicId
))
{
return
""
;
}
List
<
TopicManagerEntity
>
topicManagerEntities
=
topicManagerMapper
.
selectList
(
new
LambdaQueryWrapper
<
TopicManagerEntity
>().
eq
(
TopicManagerEntity:
:
getTopicId
,
topicId
));
List
<
String
>
managerIds
=
topicManagerEntities
.
stream
().
map
(
TopicManagerEntity:
:
getUserId
).
collect
(
Collectors
.
toList
());
...
...
@@ -265,6 +271,7 @@ public class TopicService {
/**
* 查询资源关联的话题
*
* @param req
* @return
*/
...
...
@@ -274,7 +281,7 @@ public class TopicService {
.
eq
(
TopicSubjectEntity:
:
getSubjectType
,
req
.
getSubjectType
())
.
orderByDesc
(
TopicSubjectEntity:
:
getCreateTime
));
if
(
CollectionUtils
.
isEmpty
(
topicSubjectEntities
)){
if
(
CollectionUtils
.
isEmpty
(
topicSubjectEntities
))
{
return
null
;
}
String
topicId
=
topicSubjectEntities
.
get
(
0
).
getTopicId
();
...
...
@@ -285,4 +292,24 @@ public class TopicService {
}
public
Set
<
String
>
getUserPermitTopics
(
String
userId
)
{
// 公开权限的话题
List
<
TopicEntity
>
openTopics
=
topicMapper
.
selectList
(
new
LambdaQueryWrapper
<
TopicEntity
>()
.
eq
(
TopicEntity:
:
getSpecialPermission
,
StatusEnum
.
TRUE
.
getCode
())
.
eq
(
TopicEntity:
:
getDeleteTag
,
StatusEnum
.
FALSE
.
getCode
())
.
eq
(
TopicEntity:
:
getIsConceal
,
StatusEnum
.
FALSE
.
getCode
()));
Set
<
String
>
openTopicIds
=
openTopics
.
stream
().
map
(
TopicEntity:
:
getTopicId
).
collect
(
Collectors
.
toSet
());
if
(
StringUtils
.
isBlank
(
userId
))
{
return
openTopicIds
;
}
// 拥有权限的话题
List
<
String
>
followTopics
=
topicFollowRelMapper
.
selectTopicIdByUserId
(
userId
);
HashSet
<
String
>
res
=
new
HashSet
<>(
followTopics
);
res
.
addAll
(
openTopicIds
);
return
res
;
}
}
community-service/src/main/java/com/tanpu/community/util/RankUtils.java
View file @
c70d817b
package
com
.
tanpu
.
community
.
util
;
import
com.tanpu.community.dao.entity.community.ThemeEntity
;
import
org.apache.commons.lang3.StringUtils
;
import
java.util.Comparator
;
import
java.util.HashMap
;
import
java.util.List
;
import
java.util.Set
;
import
java.util.stream.Collectors
;
public
class
RankUtils
{
...
...
@@ -31,4 +33,21 @@ public class RankUtils {
.
collect
(
Collectors
.
toList
());
return
collect
;
}
/**
* 根据id排序主题对象(同时过滤权限)
* @param list
* @param recmdIds
* @param topicIds
* @return
*/
public
static
List
<
ThemeEntity
>
sortThemeEntityByIds
(
List
<
ThemeEntity
>
list
,
List
<
String
>
recmdIds
,
Set
<
String
>
topicIds
){
List
<
ThemeEntity
>
themes
=
list
.
stream
().
filter
(
o
->
{
if
(
StringUtils
.
isBlank
(
o
.
getTopicId
()))
return
true
;
if
(
topicIds
.
contains
(
o
.
getTopicId
()))
return
true
;
return
false
;
}).
collect
(
Collectors
.
toList
());
return
sortThemeEntityByIds
(
themes
,
recmdIds
);
}
}
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment