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
53c6bae3
Commit
53c6bae3
authored
Jul 19, 2021
by
刘基明
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
数据分析
parent
8cd2e4bf
Hide whitespace changes
Inline
Side-by-side
Showing
12 changed files
with
244 additions
and
97 deletions
+244
-97
ThemeAnalysDO.java
.../java/com/tanpu/community/api/beans/qo/ThemeAnalysDO.java
+2
-11
TopicHotQo.java
...ain/java/com/tanpu/community/api/beans/qo/TopicHotQo.java
+1
-1
StatusEnum.java
...c/main/java/com/tanpu/community/api/enums/StatusEnum.java
+32
-0
TopicStatusEnum.java
...n/java/com/tanpu/community/api/enums/TopicStatusEnum.java
+12
-13
ConJobManager.java
.../main/java/com/tanpu/community/manager/ConJobManager.java
+12
-2
ThemeManager.java
...c/main/java/com/tanpu/community/manager/ThemeManager.java
+8
-32
TopicManager.java
...c/main/java/com/tanpu/community/manager/TopicManager.java
+24
-22
CommentService.java
...main/java/com/tanpu/community/service/CommentService.java
+2
-2
RankService.java
...rc/main/java/com/tanpu/community/service/RankService.java
+91
-0
ThemeService.java
...c/main/java/com/tanpu/community/service/ThemeService.java
+41
-1
TopicService.java
...c/main/java/com/tanpu/community/service/TopicService.java
+15
-13
ConvertUtil.java
...e/src/main/java/com/tanpu/community/util/ConvertUtil.java
+4
-0
No files found.
community-api/src/main/java/com/tanpu/community/api/beans/qo/ThemeAnalysDO.java
View file @
53c6bae3
...
...
@@ -16,18 +16,9 @@ public class ThemeAnalysDO {
private
static
final
long
serialVersionUID
=
1L
;
@ApiModelProperty
(
value
=
"
UUID
"
)
@ApiModelProperty
(
value
=
"
主题Id
"
)
private
String
themeId
;
@ApiModelProperty
(
value
=
"标题"
)
private
String
title
;
@ApiModelProperty
(
value
=
"类型"
)
private
Integer
themeType
;
@ApiModelProperty
(
value
=
"文本内容"
)
private
String
content
;
@ApiModelProperty
(
value
=
"作者id"
)
private
String
authorId
;
...
...
@@ -59,7 +50,7 @@ public class ThemeAnalysDO {
double
p
=
(
double
)
(
viewCount
+
forwardCount
+
commentCount
+
likeCount
+
collectCount
);
double
t
=
Double
.
valueOf
(
minuteTillNow
);
double
g
=
1.8
;
double
rank
=(
p
-
1
)/
Math
.
pow
(
t
+
2
,
g
);
double
rank
=(
p
)/
Math
.
pow
(
t
+
2
,
g
);
return
rank
;
}
...
...
community-api/src/main/java/com/tanpu/community/api/beans/qo/TopicHotQo.java
View file @
53c6bae3
...
...
@@ -28,6 +28,6 @@ public class TopicHotQo {
* @return
*/
public
Integer
getRank
(){
return
this
.
viewCount
+
this
.
disscussCount
*
5
;
return
this
.
viewCount
+
this
.
disscussCount
*
3
;
}
}
community-api/src/main/java/com/tanpu/community/api/enums/StatusEnum.java
0 → 100644
View file @
53c6bae3
package
com
.
tanpu
.
community
.
api
.
enums
;
public
enum
StatusEnum
{
TRUE
(
1
,
true
),
FALSE
(
0
,
false
);
private
Integer
code
;
private
boolean
status
;
public
Integer
getCode
()
{
return
code
;
}
public
void
setCode
(
Integer
code
)
{
this
.
code
=
code
;
}
public
boolean
isStatus
()
{
return
status
;
}
public
void
setStatus
(
boolean
status
)
{
this
.
status
=
status
;
}
StatusEnum
(
Integer
code
,
boolean
status
)
{
this
.
code
=
code
;
this
.
status
=
status
;
}
}
community-api/src/main/java/com/tanpu/community/api/enums/TopicStatusEnum.java
View file @
53c6bae3
...
...
@@ -2,10 +2,16 @@ package com.tanpu.community.api.enums;
public
enum
TopicStatusEnum
{
TRUE
(
1
,
true
),
FALSE
(
0
,
false
);
HOTTEST
(
1
,
"最热"
),
NEWEST
(
2
,
"最新"
);;
private
Integer
code
;
private
boolean
status
;
private
String
type
;
TopicStatusEnum
(
Integer
code
,
String
type
)
{
this
.
code
=
code
;
this
.
type
=
type
;
}
public
Integer
getCode
()
{
return
code
;
...
...
@@ -15,18 +21,11 @@ public enum TopicStatusEnum {
this
.
code
=
code
;
}
public
boolean
isStatus
()
{
return
status
;
}
public
void
setStatus
(
boolean
status
)
{
this
.
status
=
status
;
public
String
getType
()
{
return
type
;
}
TopicStatusEnum
(
Integer
code
,
boolean
status
)
{
this
.
code
=
code
;
this
.
status
=
status
;
public
void
setType
(
String
type
)
{
this
.
type
=
type
;
}
}
community-service/src/main/java/com/tanpu/community/manager/ConJobManager.java
View file @
53c6bae3
package
com
.
tanpu
.
community
.
manager
;
import
com.tanpu.community.service.RankService
;
import
com.tanpu.community.service.RedisService
;
import
com.tanpu.community.service.VisitSummaryService
;
import
lombok.extern.slf4j.Slf4j
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.context.annotation.Configuration
;
import
org.springframework.data.redis.core.RedisTemplate
;
import
org.springframework.scheduling.annotation.EnableScheduling
;
import
org.springframework.scheduling.annotation.Scheduled
;
import
org.springframework.stereotype.Service
;
...
...
@@ -21,6 +20,9 @@ public class ConJobManager {
@Autowired
private
RedisService
redisService
;
@Autowired
private
RankService
rankService
;
/**
* 定时统计 话题 访问数据,并刷到redis
*/
...
...
@@ -30,4 +32,12 @@ public class ConJobManager {
Integer
detailVisitTimes
=
visitSummaryService
.
queryTopicDetailVisit
(
topicId
);
redisService
.
set
(
"topicVisitorStats"
,
detailVisitTimes
);
}
/**
* 定时统计主题排行
*/
@Scheduled
(
cron
=
"0 */2 * * * ?"
)
public
void
themeRank
()
{
rankService
.
rankThemes
();
}
}
community-service/src/main/java/com/tanpu/community/manager/ThemeManager.java
View file @
53c6bae3
...
...
@@ -2,28 +2,18 @@ package com.tanpu.community.manager;
import
com.tanpu.common.exception.BizException
;
import
com.tanpu.common.util.JsonUtil
;
import
com.tanpu.community.api.beans.qo.ESThemeQo
;
import
com.tanpu.community.api.beans.qo.FormerThemeQo
;
import
com.tanpu.community.api.beans.qo.ThemeAnalysDO
;
import
com.tanpu.community.api.beans.qo.ThemeContentQo
;
import
com.tanpu.community.api.beans.qo.ThemeQo
;
import
com.tanpu.community.api.beans.qo.*
;
import
com.tanpu.community.api.beans.req.homepage.QueryRecordThemeReq
;
import
com.tanpu.community.api.beans.req.theme.*
;
import
com.tanpu.community.api.beans.resp.CreateThemeResp
;
import
com.tanpu.community.api.enums.*
;
import
com.tanpu.community.api.enums.BlockTypeEnum
;
import
com.tanpu.community.api.enums.CollectionTypeEnum
;
import
com.tanpu.community.api.enums.ThemeListTypeEnum
;
import
com.tanpu.community.api.enums.ThemeTypeEnum
;
import
com.tanpu.community.cache.CacheGet
;
import
com.tanpu.community.dao.entity.community.*
;
import
com.tanpu.community.dao.entity.user.UserInfoEntity
;
import
com.tanpu.community.service.*
;
import
com.tanpu.community.service.BlackListService
;
import
com.tanpu.community.service.base.ESService
;
import
com.tanpu.community.util.ConvertUtil
;
import
org.apache.commons.collections4.CollectionUtils
;
import
org.apache.commons.collections4.ListUtils
;
import
org.apache.commons.lang3.StringUtils
;
import
org.springframework.beans.BeanUtils
;
import
org.springframework.beans.factory.annotation.Autowired
;
...
...
@@ -64,6 +54,9 @@ public class ThemeManager {
@Autowired
private
VisitSummaryService
visitSummaryService
;
@Autowired
private
RankService
rankService
;
@Autowired
private
ESService
esService
;
...
...
@@ -123,10 +116,10 @@ public class ThemeManager {
List
<
ThemeEntity
>
themeEntities
=
new
ArrayList
<>();
if
(
ThemeListTypeEnum
.
RECOMMEND
.
getCode
().
equals
(
req
.
getType
()))
{
// TODO:推荐
themeEntities
=
themeService
.
selectExcludeUser
(
userId
,
req
.
getLastId
(),
req
.
getPageSize
());
Set
<
String
>
recomondThemeIds
;
Set
<
String
>
hotThemeIds
;
Set
<
String
>
newThemeIds
;
//
themeEntities = themeService.selectExcludeUser(userId, req.getLastId(), req.getPageSize());
List
<
String
>
recommendThemeIds
=
rankService
.
getHotAndNewThemes
(
20
,
20
)
;
themeEntities
=
themeService
.
queryByThemeIdsExcludeUser
(
recommendThemeIds
,
userId
,
req
.
getLastId
(),
req
.
getPageSize
())
;
}
else
if
(
ThemeListTypeEnum
.
FOLLOW
.
getCode
().
equals
(
req
.
getType
()))
{
//根据关注列表查询
List
<
String
>
fansList
=
followRelService
.
queryFansByFollowerId
(
userId
);
...
...
@@ -379,22 +372,5 @@ public class ThemeManager {
return
themeService
.
queryCountFromLastTime
(
fansList
,
lastViewTime
);
}
public
void
rank
()
{
List
<
ThemeEntity
>
themeEntities
=
themeService
.
queryAll
();
List
<
ThemeAnalysDO
>
themeAnalysDOS
=
ConvertUtil
.
themeEntityToAnalysDOs
(
themeEntities
);
for
(
ThemeAnalysDO
theme
:
themeAnalysDOS
)
{
String
themeId
=
theme
.
getThemeId
();
Integer
likeCount
=
collectionService
.
getCountByTypeAndId
(
themeId
,
CollectionTypeEnum
.
LIKE_THEME
);
Integer
bookCount
=
collectionService
.
getCountByTypeAndId
(
themeId
,
CollectionTypeEnum
.
COLLECT_THEME
);
Integer
commentCount
=
commentService
.
getCommentCountByThemeId
(
themeId
);
Integer
forwardCount
=
themeService
.
getForwardCountById
(
themeId
);
theme
.
setCommentCount
(
commentCount
);
theme
.
setLikeCount
(
likeCount
);
theme
.
setForwardCount
(
forwardCount
);
theme
.
setCollectCount
(
bookCount
);
}
Map
<
Double
,
ThemeAnalysDO
>
collect
=
themeAnalysDOS
.
stream
().
collect
(
Collectors
.
toMap
(
ThemeAnalysDO:
:
getRank
,
o
->
o
));
}
}
community-service/src/main/java/com/tanpu/community/manager/TopicManager.java
View file @
53c6bae3
package
com
.
tanpu
.
community
.
manager
;
import
com.tanpu.common.exception.BizException
;
import
com.tanpu.community.api.beans.vo.TopicDTO
;
import
com.tanpu.community.api.beans.vo.TopicDataAnalysDTO
;
import
com.tanpu.community.api.beans.qo.TopicDetailQo
;
import
com.tanpu.community.api.beans.qo.TopicHotQo
;
import
com.tanpu.community.api.beans.qo.TopicTitileQo
;
import
com.tanpu.community.api.beans.req.page.Page
;
import
com.tanpu.community.api.beans.req.topic.TopicSearchReq
;
import
com.tanpu.community.api.beans.vo.TopicDTO
;
import
com.tanpu.community.api.beans.vo.TopicDataAnalysDTO
;
import
com.tanpu.community.api.constants.RedisKeyConstant
;
import
com.tanpu.community.api.enums.CollectionTypeEnum
;
import
com.tanpu.community.dao.entity.community.TopicEntity
;
...
...
@@ -22,7 +22,6 @@ import org.springframework.stereotype.Service;
import
java.util.HashSet
;
import
java.util.List
;
import
java.util.Set
;
import
java.util.stream.Collectors
;
@Service
public
class
TopicManager
{
...
...
@@ -44,6 +43,8 @@ public class TopicManager {
@Autowired
private
VisitSummaryService
visitSummaryService
;
@Autowired
private
RankService
rankService
;
//新增话题
public
void
insertTopic
(
String
topicTitle
,
String
userId
)
{
...
...
@@ -106,25 +107,26 @@ public class TopicManager {
public
List
<
TopicHotQo
>
getHotTopicTitles
()
{
List
<
TopicEntity
>
topicEntities
=
topicService
.
queryAll
();
List
<
TopicHotQo
>
topicHotQos
=
ConvertUtil
.
topicEntityToHotQos
(
topicEntities
);
for
(
TopicHotQo
topic
:
topicHotQos
)
{
List
<
String
>
themeIds
=
themeService
.
queryThemeIdsByTopic
(
topic
.
getTopicId
());
//浏览量
Integer
topicPV
=
visitSummaryService
.
queryTopicDetailVisit
(
topic
.
getTopicId
());
Integer
themePV
=
visitSummaryService
.
queryThemeVisit
(
themeIds
);
topic
.
setViewCount
(
topicPV
+
themePV
);
//讨论数=发布主题贴数+回复总数
Integer
commentCount
=
commentService
.
getCommentCountByThemeIds
(
themeIds
);
topic
.
setDisscussCount
(
themeIds
.
size
()
+
commentCount
);
}
topicHotQos
.
stream
().
collect
(
Collectors
.
toMap
(
TopicHotQo:
:
getRank
,
o
->
o
));
//TODO 添加类型:热 新 顶
topicHotQos
.
get
(
0
).
setType
(
1
);
topicHotQos
.
get
(
2
).
setType
(
2
);
return
topicHotQos
;
// List<TopicEntity> topicEntities = topicService.queryAll();
// List<TopicHotQo> topicHotQos = ConvertUtil.topicEntityToHotQos(topicEntities);
// for (TopicHotQo topic : topicHotQos) {
// List<String> themeIds = themeService.queryThemeIdsByTopic(topic.getTopicId());
// //浏览量
// Integer topicPV = visitSummaryService.queryTopicDetailVisit(topic.getTopicId());
// Integer themePV = visitSummaryService.queryThemeVisit(themeIds);
// topic.setViewCount(topicPV + themePV);
// //讨论数=发布主题贴数+回复总数
// Integer commentCount = commentService.getCommentCountByThemeIds(themeIds);
// topic.setDisscussCount(themeIds.size() + commentCount);
// }
// Map<TopicHotQo, Integer> map = topicHotQos.stream().collect(Collectors.toMap(o -> o, TopicHotQo::getRank));
// map.entrySet().stream().sorted(Comparator.)
//
// //TODO 添加类型:热 新 顶
// topicHotQos.get(0).setType(1);
// topicHotQos.get(2).setType(2);
// return topicHotQos;
return
rankService
.
rankTopics
();
}
public
void
setTopTopic
(
String
topicId
,
boolean
setTop
)
{
...
...
community-service/src/main/java/com/tanpu/community/service/CommentService.java
View file @
53c6bae3
...
...
@@ -5,7 +5,7 @@ import com.tanpu.common.exception.BizException;
import
com.tanpu.common.uuid.UuidGenHelper
;
import
com.tanpu.community.api.enums.CommentTypeEnum
;
import
com.tanpu.community.api.enums.DeleteTagEnum
;
import
com.tanpu.community.api.enums.
Topic
StatusEnum
;
import
com.tanpu.community.api.enums.StatusEnum
;
import
com.tanpu.community.dao.entity.community.CommentEntity
;
import
com.tanpu.community.dao.mapper.community.CommentMapper
;
import
org.apache.commons.collections4.CollectionUtils
;
...
...
@@ -66,7 +66,7 @@ public class CommentService {
LambdaQueryWrapper
<
CommentEntity
>
queryWrapper
=
new
LambdaQueryWrapper
<
CommentEntity
>()
.
eq
(
CommentEntity:
:
getThemeId
,
themeId
)
.
eq
(
CommentEntity:
:
getDeleteTag
,
DeleteTagEnum
.
NOT_DELETED
.
getCode
())
.
eq
(
CommentEntity:
:
getIsBlock
,
Topic
StatusEnum
.
FALSE
.
getCode
())
.
eq
(
CommentEntity:
:
getIsBlock
,
StatusEnum
.
FALSE
.
getCode
())
.
orderByDesc
(
CommentEntity:
:
getCreateTime
);
if
(
parentId
==
null
)
{
queryWrapper
.
isNull
(
CommentEntity:
:
getParentId
);
...
...
community-service/src/main/java/com/tanpu/community/service/RankService.java
0 → 100644
View file @
53c6bae3
package
com
.
tanpu
.
community
.
service
;
import
com.tanpu.community.api.beans.qo.ThemeAnalysDO
;
import
com.tanpu.community.api.beans.qo.TopicHotQo
;
import
com.tanpu.community.api.enums.CollectionTypeEnum
;
import
com.tanpu.community.api.enums.TopicStatusEnum
;
import
com.tanpu.community.dao.entity.community.ThemeEntity
;
import
com.tanpu.community.dao.entity.community.TopicEntity
;
import
com.tanpu.community.util.ConvertUtil
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.stereotype.Service
;
import
java.util.*
;
import
java.util.stream.Collectors
;
@Service
public
class
RankService
{
@Autowired
private
ThemeService
themeService
;
@Autowired
private
CollectionService
collectionService
;
@Autowired
private
CommentService
commentService
;
@Autowired
private
TopicService
topicService
;
@Autowired
private
VisitSummaryService
visitSummaryService
;
public
List
<
String
>
rankThemeList
=
new
ArrayList
<>();
public
void
rankThemes
()
{
List
<
ThemeEntity
>
themeEntities
=
themeService
.
queryAll
();
List
<
ThemeAnalysDO
>
themeAnalysDOS
=
ConvertUtil
.
themeEntityToAnalysDOs
(
themeEntities
);
for
(
ThemeAnalysDO
theme
:
themeAnalysDOS
)
{
String
themeId
=
theme
.
getThemeId
();
Integer
likeCount
=
collectionService
.
getCountByTypeAndId
(
themeId
,
CollectionTypeEnum
.
LIKE_THEME
);
Integer
bookCount
=
collectionService
.
getCountByTypeAndId
(
themeId
,
CollectionTypeEnum
.
COLLECT_THEME
);
Integer
commentCount
=
commentService
.
getCommentCountByThemeId
(
themeId
);
Integer
forwardCount
=
themeService
.
getForwardCountById
(
themeId
);
Integer
viewCount
=
visitSummaryService
.
queryThemeVisit
(
themeId
);
theme
.
setCommentCount
(
commentCount
);
theme
.
setLikeCount
(
likeCount
);
theme
.
setForwardCount
(
forwardCount
);
theme
.
setCollectCount
(
bookCount
);
theme
.
setViewCount
(
viewCount
);
}
Map
<
ThemeAnalysDO
,
Double
>
map
=
themeAnalysDOS
.
stream
().
collect
(
Collectors
.
toMap
(
o
->
o
,
ThemeAnalysDO:
:
getRank
));
rankThemeList
=
map
.
entrySet
().
stream
().
sorted
(
Map
.
Entry
.
comparingByValue
(
Comparator
.
reverseOrder
())).
map
(
e
->
e
.
getKey
().
getThemeId
()).
collect
(
Collectors
.
toList
());
}
public
List
<
TopicHotQo
>
rankTopics
()
{
List
<
TopicEntity
>
topicEntities
=
topicService
.
queryAll
();
List
<
TopicHotQo
>
topicHotQos
=
ConvertUtil
.
topicEntityToHotQos
(
topicEntities
);
if
(
topicHotQos
.
size
()
==
0
)
{
return
topicHotQos
;
}
TopicHotQo
lastTopic
=
topicHotQos
.
get
(
0
);
lastTopic
.
setType
(
TopicStatusEnum
.
NEWEST
.
getCode
());
for
(
TopicHotQo
topic
:
topicHotQos
)
{
List
<
String
>
themeIds
=
themeService
.
queryThemeIdsByTopic
(
topic
.
getTopicId
());
//浏览量
Integer
topicPV
=
visitSummaryService
.
queryTopicDetailVisit
(
topic
.
getTopicId
());
Integer
themePV
=
visitSummaryService
.
queryThemeVisit
(
themeIds
);
topic
.
setViewCount
(
topicPV
+
themePV
);
//讨论数=发布主题贴数+回复总数
Integer
commentCount
=
commentService
.
getCommentCountByThemeIds
(
themeIds
);
topic
.
setDisscussCount
(
themeIds
.
size
()
+
commentCount
);
}
Map
<
TopicHotQo
,
Integer
>
map
=
topicHotQos
.
stream
().
collect
(
Collectors
.
toMap
(
o
->
o
,
TopicHotQo:
:
getRank
));
List
<
TopicHotQo
>
rankList
=
map
.
entrySet
().
stream
().
sorted
(
Map
.
Entry
.
comparingByValue
(
Comparator
.
reverseOrder
())).
map
(
e
->
e
.
getKey
()).
collect
(
Collectors
.
toList
());
rankList
.
get
(
0
).
setType
(
TopicStatusEnum
.
HOTTEST
.
getCode
());
Set
<
TopicHotQo
>
resultSet
=
rankList
.
stream
().
limit
(
4
).
collect
(
Collectors
.
toSet
());
resultSet
.
add
(
lastTopic
);
return
new
ArrayList
<>(
resultSet
);
}
public
List
<
String
>
getHotAndNewThemes
(
Integer
hotCount
,
Integer
newCount
){
Set
<
String
>
hotThemeIds
=
this
.
rankThemeList
.
stream
().
limit
(
hotCount
).
collect
(
Collectors
.
toSet
());
Set
<
String
>
newThemeIds
=
themeService
.
selectExcludeUser
(
null
,
null
,
newCount
)
.
stream
().
map
(
ThemeEntity:
:
getThemeId
).
collect
(
Collectors
.
toSet
());
hotThemeIds
.
addAll
(
newThemeIds
);
return
new
ArrayList
<>(
hotThemeIds
);
}
}
community-service/src/main/java/com/tanpu/community/service/ThemeService.java
View file @
53c6bae3
...
...
@@ -83,6 +83,9 @@ public class ThemeService {
//根据ids返回主题详情,带分页
public
List
<
ThemeEntity
>
queryByThemeIds
(
List
<
String
>
themeIds
,
String
lastId
,
Integer
pageSize
)
{
if
(
CollectionUtils
.
isEmpty
(
themeIds
)){
return
Collections
.
emptyList
();
}
LambdaQueryWrapper
<
ThemeEntity
>
queryWrapper
=
new
LambdaQueryWrapper
<
ThemeEntity
>()
.
in
(
ThemeEntity:
:
getThemeId
,
themeIds
)
.
eq
(
ThemeEntity:
:
getDeleteTag
,
DeleteTagEnum
.
NOT_DELETED
.
getCode
());
...
...
@@ -103,6 +106,9 @@ public class ThemeService {
* @return
*/
public
List
<
ThemeEntity
>
queryByThemeIds
(
List
<
String
>
themeIds
)
{
if
(
CollectionUtils
.
isEmpty
(
themeIds
)){
return
Collections
.
emptyList
();
}
LambdaQueryWrapper
<
ThemeEntity
>
queryWrapper
=
new
LambdaQueryWrapper
<
ThemeEntity
>()
.
in
(
ThemeEntity:
:
getThemeId
,
themeIds
)
.
eq
(
ThemeEntity:
:
getDeleteTag
,
DeleteTagEnum
.
NOT_DELETED
.
getCode
());
...
...
@@ -130,8 +136,42 @@ public class ThemeService {
if
(
lastEntity
==
null
)
throw
new
BizException
(
"主题未找到,id:"
+
lastId
);
queryWrapper
.
lt
(
ThemeEntity:
:
getUpdateTime
,
lastEntity
.
getCreateTime
());
}
if
(
pageSize
!=
null
){
queryWrapper
.
last
(
"limit "
+
pageSize
);
}
queryWrapper
.
orderByDesc
(
ThemeEntity:
:
getId
);
queryWrapper
.
orderByDesc
(
ThemeEntity:
:
getCreateTime
);
queryWrapper
.
eq
(
ThemeEntity:
:
getDeleteTag
,
DeleteTagEnum
.
NOT_DELETED
.
getCode
());
return
themeMapper
.
selectList
(
queryWrapper
);
}
/**
* 查询非传入作者的主题(可分页)
* @param lastId
* @param pageSize
* @param userId
* @return
*/
public
List
<
ThemeEntity
>
queryByThemeIdsExcludeUser
(
List
<
String
>
themeIds
,
String
userId
,
String
lastId
,
Integer
pageSize
)
{
if
(
CollectionUtils
.
isEmpty
(
themeIds
)){
return
Collections
.
emptyList
();
}
LambdaQueryWrapper
<
ThemeEntity
>
queryWrapper
=
new
LambdaQueryWrapper
<
ThemeEntity
>()
.
in
(
ThemeEntity:
:
getThemeId
,
themeIds
);
if
(!
StringUtils
.
isEmpty
(
userId
)){
queryWrapper
.
ne
(
ThemeEntity:
:
getAuthorId
,
userId
);
}
if
(
StringUtils
.
isNotEmpty
(
lastId
))
{
ThemeEntity
lastEntity
=
queryByThemeId
(
lastId
);
if
(
lastEntity
==
null
)
throw
new
BizException
(
"主题未找到,id:"
+
lastId
);
queryWrapper
.
lt
(
ThemeEntity:
:
getUpdateTime
,
lastEntity
.
getCreateTime
());
}
if
(
pageSize
!=
null
){
queryWrapper
.
last
(
"limit "
+
pageSize
);
}
queryWrapper
.
last
(
"limit "
+
pageSize
);
queryWrapper
.
orderByDesc
(
ThemeEntity:
:
getId
);
queryWrapper
.
orderByDesc
(
ThemeEntity:
:
getCreateTime
);
queryWrapper
.
eq
(
ThemeEntity:
:
getDeleteTag
,
DeleteTagEnum
.
NOT_DELETED
.
getCode
());
...
...
community-service/src/main/java/com/tanpu/community/service/TopicService.java
View file @
53c6bae3
...
...
@@ -4,7 +4,7 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import
com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper
;
import
com.tanpu.common.uuid.UuidGenHelper
;
import
com.tanpu.community.api.enums.DeleteTagEnum
;
import
com.tanpu.community.api.enums.
Topic
StatusEnum
;
import
com.tanpu.community.api.enums.StatusEnum
;
import
com.tanpu.community.dao.entity.community.TopicEntity
;
import
com.tanpu.community.dao.mapper.community.TopicMapper
;
import
org.apache.commons.collections4.CollectionUtils
;
...
...
@@ -30,13 +30,15 @@ public class TopicService {
public
List
<
TopicEntity
>
queryAll
()
{
return
topicMapper
.
selectList
(
new
LambdaQueryWrapper
<
TopicEntity
>()
.
eq
(
TopicEntity:
:
getDeleteTag
,
DeleteTagEnum
.
NOT_DELETED
.
getCode
()));
.
eq
(
TopicEntity:
:
getDeleteTag
,
DeleteTagEnum
.
NOT_DELETED
.
getCode
())
.
orderByDesc
(
TopicEntity:
:
getCreateTime
));
}
public
List
<
TopicEntity
>
queryByKeyword
(
String
keyword
)
{
return
topicMapper
.
selectList
(
new
LambdaQueryWrapper
<
TopicEntity
>()
.
like
(
TopicEntity:
:
getTopicTitle
,
keyword
)
.
eq
(
TopicEntity:
:
getDeleteTag
,
DeleteTagEnum
.
NOT_DELETED
.
getCode
()));
.
like
(
TopicEntity:
:
getTopicTitle
,
keyword
)
.
eq
(
TopicEntity:
:
getDeleteTag
,
DeleteTagEnum
.
NOT_DELETED
.
getCode
())
.
orderByDesc
(
TopicEntity:
:
getCreateTime
));
}
@Transactional
...
...
@@ -44,8 +46,8 @@ public class TopicService {
TopicEntity
entity
=
TopicEntity
.
builder
()
.
topicId
(
uuidGenHelper
.
getUuidStr
())
.
topicTitle
(
topicTitle
)
.
isTop
(
Topic
StatusEnum
.
FALSE
.
getCode
())
.
isConceal
(
Topic
StatusEnum
.
FALSE
.
getCode
())
.
isTop
(
StatusEnum
.
FALSE
.
getCode
())
.
isConceal
(
StatusEnum
.
FALSE
.
getCode
())
.
build
();
topicMapper
.
insert
(
entity
);
...
...
@@ -54,41 +56,41 @@ public class TopicService {
public
void
updateTopicToTop
(
String
topicId
)
{
TopicEntity
topicEntity
=
new
TopicEntity
();
topicEntity
.
setIsTop
(
Topic
StatusEnum
.
TRUE
.
getCode
());
topicEntity
.
setIsTop
(
StatusEnum
.
TRUE
.
getCode
());
topicMapper
.
update
(
topicEntity
,
new
LambdaUpdateWrapper
<
TopicEntity
>()
.
eq
(
TopicEntity:
:
getId
,
topicId
));
}
public
void
updateTopicNotTop
(
String
topicId
)
{
TopicEntity
topicEntity
=
new
TopicEntity
();
topicEntity
.
setIsTop
(
Topic
StatusEnum
.
FALSE
.
getCode
());
topicEntity
.
setIsTop
(
StatusEnum
.
FALSE
.
getCode
());
topicMapper
.
update
(
topicEntity
,
new
LambdaUpdateWrapper
<
TopicEntity
>()
.
eq
(
TopicEntity:
:
getId
,
topicId
));
}
public
void
updateTopicToConceal
(
String
topicId
)
{
TopicEntity
topicEntity
=
new
TopicEntity
();
topicEntity
.
setIsConceal
(
Topic
StatusEnum
.
TRUE
.
getCode
());
topicEntity
.
setIsConceal
(
StatusEnum
.
TRUE
.
getCode
());
topicMapper
.
update
(
topicEntity
,
new
LambdaUpdateWrapper
<
TopicEntity
>()
.
eq
(
TopicEntity:
:
getId
,
topicId
));
}
public
void
updateTopicNotConceal
(
String
topicId
)
{
TopicEntity
topicEntity
=
new
TopicEntity
();
topicEntity
.
setIsConceal
(
Topic
StatusEnum
.
FALSE
.
getCode
());
topicEntity
.
setIsConceal
(
StatusEnum
.
FALSE
.
getCode
());
topicMapper
.
update
(
topicEntity
,
new
LambdaUpdateWrapper
<
TopicEntity
>()
.
eq
(
TopicEntity:
:
getId
,
topicId
));
}
public
TopicEntity
queryById
(
String
topicId
)
{
return
topicMapper
.
selectOne
(
new
LambdaQueryWrapper
<
TopicEntity
>().
eq
(
TopicEntity:
:
getTopicId
,
topicId
));
return
topicMapper
.
selectOne
(
new
LambdaQueryWrapper
<
TopicEntity
>().
eq
(
TopicEntity:
:
getTopicId
,
topicId
));
}
public
List
<
TopicEntity
>
queryByIds
(
List
<
String
>
topicIds
)
{
if
(
CollectionUtils
.
isEmpty
(
topicIds
)){
if
(
CollectionUtils
.
isEmpty
(
topicIds
))
{
return
Collections
.
emptyList
();
}
return
topicMapper
.
selectList
(
new
LambdaQueryWrapper
<
TopicEntity
>().
in
(
TopicEntity:
:
getTopicId
,
topicIds
));
return
topicMapper
.
selectList
(
new
LambdaQueryWrapper
<
TopicEntity
>().
in
(
TopicEntity:
:
getTopicId
,
topicIds
));
}
public
void
modifyViewCount
(
String
topicId
,
long
Count
)
{
...
...
community-service/src/main/java/com/tanpu/community/util/ConvertUtil.java
View file @
53c6bae3
...
...
@@ -16,6 +16,7 @@ import org.springframework.beans.BeanUtils;
import
org.springframework.util.StringUtils
;
import
java.util.ArrayList
;
import
java.util.Collections
;
import
java.util.List
;
import
java.util.Map
;
import
java.util.stream.Collectors
;
...
...
@@ -89,6 +90,9 @@ public class ConvertUtil {
}
public
static
List
<
TopicHotQo
>
topicEntityToHotQos
(
List
<
TopicEntity
>
topicEntities
)
{
if
(
topicEntities
==
null
){
return
Collections
.
emptyList
();
}
return
topicEntities
.
stream
().
map
(
ConvertUtil:
:
topicEntityToHotQo
).
collect
(
Collectors
.
toList
());
}
...
...
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