Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
B
beyond-clouds
Overview
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
4
Issues
4
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
段启岩
beyond-clouds
Commits
f9c8837a
Commit
f9c8837a
authored
Feb 16, 2020
by
段启岩
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
话题锁定
parent
65a63e13
Hide whitespace changes
Inline
Side-by-side
Showing
7 changed files
with
64 additions
and
8 deletions
+64
-8
src/main/java/cn/meteor/beyondclouds/modules/post/service/impl/PostServiceImpl.java
+16
-1
src/main/java/cn/meteor/beyondclouds/modules/topic/api/TopicApi.java
+7
-2
src/main/java/cn/meteor/beyondclouds/modules/topic/entity/Topic.java
+2
-0
src/main/java/cn/meteor/beyondclouds/modules/topic/mapper/xml/TopicMapper.xml
+1
-0
src/main/java/cn/meteor/beyondclouds/modules/topic/service/ITopicService.java
+1
-1
src/main/java/cn/meteor/beyondclouds/modules/topic/service/impl/TopicServiceImpl.java
+23
-4
src/main/java/cn/meteor/beyondclouds/util/TopicUtils.java
+14
-0
No files found.
src/main/java/cn/meteor/beyondclouds/modules/post/service/impl/PostServiceImpl.java
View file @
f9c8837a
...
...
@@ -9,7 +9,6 @@ import cn.meteor.beyondclouds.modules.post.enums.PostErrorCode;
import
cn.meteor.beyondclouds.modules.post.exception.PostServiceException
;
import
cn.meteor.beyondclouds.modules.post.mapper.PostMapper
;
import
cn.meteor.beyondclouds.modules.post.service.IPostService
;
import
cn.meteor.beyondclouds.modules.post.vo.PostVO
;
import
cn.meteor.beyondclouds.modules.project.exception.ProjectServiceException
;
import
cn.meteor.beyondclouds.modules.queue.service.IMessageQueueService
;
import
cn.meteor.beyondclouds.modules.topic.entity.Topic
;
...
...
@@ -136,6 +135,22 @@ public class PostServiceImpl extends ServiceImpl<PostMapper, Post> implements IP
List
<
String
>
topicNames
=
TopicUtils
.
parseTopics
(
post
.
getContent
());
if
(!
CollectionUtils
.
isEmpty
(
topicNames
))
{
List
<
Topic
>
topics
=
topicService
.
queryAndCreateByTopicNames
(
topicNames
,
post
.
getUserId
());
List
<
String
>
unLockedTopicNames
=
topics
.
stream
()
.
map
(
Topic:
:
getTopicName
)
.
collect
(
Collectors
.
toList
());
// 筛选出被锁定的话题
List
<
String
>
lockedTopics
=
topicNames
.
stream
()
.
filter
(
topicName
->
!
unLockedTopicNames
.
contains
(
topicName
))
.
collect
(
Collectors
.
toList
());
// 从动态中删除被锁定的话题
if
(!
CollectionUtils
.
isEmpty
(
lockedTopics
))
{
post
.
setContent
(
TopicUtils
.
clearLockedTopics
(
postContent
,
lockedTopics
));
updateById
(
post
);
}
List
<
String
>
topicIds
=
topics
.
stream
().
map
(
Topic:
:
getTopicId
).
collect
(
Collectors
.
toList
());
// 关联话题和动态
...
...
src/main/java/cn/meteor/beyondclouds/modules/topic/api/TopicApi.java
View file @
f9c8837a
...
...
@@ -139,8 +139,13 @@ public class TopicApi {
if
(
bindingResult
.
hasErrors
())
{
return
Response
.
fieldError
(
bindingResult
.
getFieldError
());
}
PageDTO
<
UserFollowDTO
>
page
=
topicService
.
getTopicsFollower
(
pageForm
.
getPage
(),
pageForm
.
getSize
(),
topicId
);
return
Response
.
success
(
page
);
PageDTO
<
UserFollowDTO
>
page
;
try
{
page
=
topicService
.
getTopicsFollower
(
pageForm
.
getPage
(),
pageForm
.
getSize
(),
topicId
);
return
Response
.
success
(
page
);
}
catch
(
TopicServiceException
e
)
{
return
Response
.
error
(
e
);
}
}
...
...
src/main/java/cn/meteor/beyondclouds/modules/topic/entity/Topic.java
View file @
f9c8837a
...
...
@@ -47,6 +47,8 @@ public class Topic implements Serializable {
@ApiModelProperty
(
value
=
"被引用次数"
)
private
Integer
referenceCount
;
private
Integer
status
;
private
Date
createTime
;
private
Date
updateTime
;
...
...
src/main/java/cn/meteor/beyondclouds/modules/topic/mapper/xml/TopicMapper.xml
View file @
f9c8837a
...
...
@@ -11,6 +11,7 @@
FROM topic t, search_degree sd
WHERE t.topic_id = sd.item_id
AND sd.item_type = 'TOPIC'
AND t.status = 0
ORDER BY sd.degree DESC
</select>
...
...
src/main/java/cn/meteor/beyondclouds/modules/topic/service/ITopicService.java
View file @
f9c8837a
...
...
@@ -73,7 +73,7 @@ public interface ITopicService extends IService<Topic> {
* @param topicId
* @return
*/
PageDTO
<
UserFollowDTO
>
getTopicsFollower
(
Integer
page
,
Integer
size
,
String
topicId
);
PageDTO
<
UserFollowDTO
>
getTopicsFollower
(
Integer
page
,
Integer
size
,
String
topicId
)
throws
TopicServiceException
;
/**
* 获取用户的话题分页
...
...
src/main/java/cn/meteor/beyondclouds/modules/topic/service/impl/TopicServiceImpl.java
View file @
f9c8837a
...
...
@@ -35,6 +35,7 @@ import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
import
com.baomidou.mybatisplus.core.metadata.IPage
;
import
com.baomidou.mybatisplus.extension.plugins.pagination.Page
;
import
com.baomidou.mybatisplus.extension.service.impl.ServiceImpl
;
import
net.sf.jsqlparser.statement.select.Top
;
import
org.elasticsearch.common.recycler.Recycler
;
import
org.springframework.beans.BeanUtils
;
import
org.springframework.beans.factory.annotation.Autowired
;
...
...
@@ -140,6 +141,7 @@ public class TopicServiceImpl extends ServiceImpl<TopicMapper, Topic> implements
IPage
<
Topic
>
page
=
new
Page
<>(
pageNumber
,
pageSize
);
QueryWrapper
<
Topic
>
topicQueryWrapper
=
new
QueryWrapper
<>();
topicQueryWrapper
.
like
(
"topic_name"
,
keywords
);
topicQueryWrapper
.
eq
(
"status"
,
0
);
IPage
<
Topic
>
topicPage
=
page
(
page
,
topicQueryWrapper
);
// 更新话题的搜索量
...
...
@@ -211,6 +213,7 @@ public class TopicServiceImpl extends ServiceImpl<TopicMapper, Topic> implements
//2. 获取话题
QueryWrapper
<
Topic
>
topicQueryWrapper
=
new
QueryWrapper
<>();
topicQueryWrapper
.
eq
(
topicAccessWay
.
getFieldName
(),
identification
);
topicQueryWrapper
.
eq
(
"status"
,
0
);
topic
=
getOne
(
topicQueryWrapper
);
// 找不到该话题,抛出业务异常
...
...
@@ -246,7 +249,11 @@ public class TopicServiceImpl extends ServiceImpl<TopicMapper, Topic> implements
public
void
followTopic
(
String
userId
,
String
topicId
)
throws
TopicServiceException
{
//1. 获取话题
Topic
topic
=
getById
(
topicId
);
QueryWrapper
<
Topic
>
topicQueryWrapper
=
new
QueryWrapper
<>();
topicQueryWrapper
.
eq
(
"topic_id"
,
topicId
);
topicQueryWrapper
.
eq
(
"status"
,
0
);
Topic
topic
=
getOne
(
topicQueryWrapper
);
//2. 找不到该话题,抛出业务异常
if
(
topic
==
null
)
{
...
...
@@ -307,8 +314,15 @@ public class TopicServiceImpl extends ServiceImpl<TopicMapper, Topic> implements
}
@Override
public
PageDTO
<
UserFollowDTO
>
getTopicsFollower
(
Integer
pageNumber
,
Integer
pageSize
,
String
topicId
)
{
public
PageDTO
<
UserFollowDTO
>
getTopicsFollower
(
Integer
pageNumber
,
Integer
pageSize
,
String
topicId
)
throws
TopicServiceException
{
QueryWrapper
<
Topic
>
topicQueryWrapper
=
new
QueryWrapper
<>();
topicQueryWrapper
.
eq
(
"status"
,
0
);
topicQueryWrapper
.
eq
(
"topic_id"
,
topicId
);
Topic
topic
=
getOne
(
topicQueryWrapper
);
if
(
null
==
topic
)
{
throw
new
TopicServiceException
(
TopicErrorCode
.
TOPIC_NOT_EXISTS
);
}
// 1. 通过话题id获取该话题所有关注着
// 设置分页信息
IPage
<
TopicFollow
>
page
=
new
Page
<>(
pageNumber
,
pageSize
);
...
...
@@ -383,6 +397,7 @@ public class TopicServiceImpl extends ServiceImpl<TopicMapper, Topic> implements
public
PageDTO
<
TopicDTO
>
getTopicPage
(
Integer
pageNumber
,
Integer
pageSize
)
{
IPage
<
Topic
>
page
=
new
Page
<>(
pageNumber
,
pageSize
);
QueryWrapper
<
Topic
>
topicQueryWrapper
=
new
QueryWrapper
<>();
topicQueryWrapper
.
eq
(
"status"
,
0
);
topicQueryWrapper
.
orderByDesc
(
"create_time"
);
return
toPageDTO
(
page
(
page
,
topicQueryWrapper
));
}
...
...
@@ -455,6 +470,7 @@ public class TopicServiceImpl extends ServiceImpl<TopicMapper, Topic> implements
IPage
<
Topic
>
page
=
new
Page
<>(
pageNumber
,
pageSize
);
QueryWrapper
<
Topic
>
topicQueryWrapper
=
new
QueryWrapper
<>();
topicQueryWrapper
.
eq
(
"status"
,
0
);
topicQueryWrapper
.
orderByDesc
(
"reference_count"
);
return
toPageDTO
(
page
(
page
,
topicQueryWrapper
));
...
...
@@ -469,6 +485,7 @@ public class TopicServiceImpl extends ServiceImpl<TopicMapper, Topic> implements
//2. 判断该话题是否存在
QueryWrapper
<
Topic
>
topicQueryWrapper
=
new
QueryWrapper
<>();
topicQueryWrapper
.
eq
(
"topic_name"
,
topicName
);
topicQueryWrapper
.
eq
(
"status"
,
0
);
Topic
topic
=
getOne
(
topicQueryWrapper
);
if
(
topic
==
null
)
{
throw
new
TopicServiceException
(
TopicErrorCode
.
TOPIC_NOT_EXISTS
);
...
...
@@ -542,12 +559,14 @@ public class TopicServiceImpl extends ServiceImpl<TopicMapper, Topic> implements
topics
.
add
(
topic
);
});
return
topics
;
// 过滤掉被锁定的话题
List
<
Topic
>
topicList
=
topics
.
stream
().
filter
((
topic
->
topic
.
getStatus
()
==
0
)).
collect
(
Collectors
.
toList
());
return
topicList
;
}
@Override
public
PageDTO
<
TopicDTO
>
getHotSearchTopics
(
Integer
pageNumber
,
Integer
pageSize
)
{
IPage
<
Topic
>
topicPage
=
topicMapper
.
selectHotSearchPage
(
new
Page
<
Topic
>(
pageNumber
,
pageSize
));
IPage
<
Topic
>
topicPage
=
topicMapper
.
selectHotSearchPage
(
new
Page
<>(
pageNumber
,
pageSize
));
return
toPageDTO
(
topicPage
);
}
...
...
src/main/java/cn/meteor/beyondclouds/util/TopicUtils.java
View file @
f9c8837a
...
...
@@ -53,6 +53,20 @@ public class TopicUtils {
public
static
void
main
(
String
[]
args
)
{
System
.
out
.
println
(
TopicUtils
.
parseTopics
(
"#哈哈哈#今#哈哈哈#天你吃饭了吗#吃了#######"
));
System
.
out
.
println
(
TopicUtils
.
encodeTopic
(
"#哈哈哈#今#哈哈哈#天你吃饭了吗#吃了#######哈哈#a#b"
));
System
.
out
.
println
(
TopicUtils
.
clearLockedTopics
(
"#哈哈哈#今#哈哈哈#天你吃饭了吗#吃了#######哈哈#a#b"
,
List
.
of
(
"哈哈哈"
)));
}
/**
* 删除被锁定的话题
* @param content
* @param lockedTopics
* @return
*/
public
static
String
clearLockedTopics
(
String
content
,
List
<
String
>
lockedTopics
)
{
String
newContent
=
content
;
for
(
String
topicName:
lockedTopics
)
{
newContent
=
newContent
.
replace
(
"#"
+
topicName
+
"#"
,
""
);
}
return
encodeTopic
(
newContent
);
}
}
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