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
477f2043
Commit
477f2043
authored
Feb 13, 2020
by
段启岩
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
话题下的动态支持搜索功能
parent
22323713
Show whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
47 additions
and
20 deletions
+47
-20
src/main/java/cn/meteor/beyondclouds/modules/topic/api/TopicApi.java
+5
-2
src/main/java/cn/meteor/beyondclouds/modules/topic/mapper/TopicMapper.java
+13
-0
src/main/java/cn/meteor/beyondclouds/modules/topic/mapper/xml/TopicMapper.xml
+11
-0
src/main/java/cn/meteor/beyondclouds/modules/topic/service/ITopicService.java
+3
-1
src/main/java/cn/meteor/beyondclouds/modules/topic/service/impl/TopicServiceImpl.java
+15
-17
No files found.
src/main/java/cn/meteor/beyondclouds/modules/topic/api/TopicApi.java
View file @
477f2043
...
@@ -194,10 +194,13 @@ public class TopicApi {
...
@@ -194,10 +194,13 @@ public class TopicApi {
@Anonymous
@Anonymous
@ApiOperation
(
"查询话题下的所有动态"
)
@ApiOperation
(
"查询话题下的所有动态"
)
@GetMapping
(
"/topic/{topicName}/posts"
)
@GetMapping
(
"/topic/{topicName}/posts"
)
public
Response
<
PageDTO
<
PostDTO
>>
getPostByTopicName
(
@Valid
PageForm
pageForm
,
@PathVariable
(
"topicName"
)
String
topicName
)
{
public
Response
<
PageDTO
<
PostDTO
>>
getPostByTopicName
(
@Valid
PageForm
pageForm
,
@PathVariable
(
"topicName"
)
String
topicName
,
@RequestParam
(
value
=
"type"
,
required
=
false
)
Integer
type
,
@RequestParam
(
value
=
"keywords"
,
required
=
false
)
String
keywords
)
{
try
{
try
{
PageDTO
<
PostDTO
>
postPage
=
topicService
.
getPostByTopicName
(
pageForm
.
getPage
(),
pageForm
.
getSize
(),
topicName
);
PageDTO
<
PostDTO
>
postPage
=
topicService
.
getPostByTopicName
(
pageForm
.
getPage
(),
pageForm
.
getSize
(),
topicName
,
type
,
keywords
);
return
Response
.
success
(
postPage
);
return
Response
.
success
(
postPage
);
}
catch
(
TopicServiceException
e
)
{
}
catch
(
TopicServiceException
e
)
{
e
.
printStackTrace
();
e
.
printStackTrace
();
...
...
src/main/java/cn/meteor/beyondclouds/modules/topic/mapper/TopicMapper.java
View file @
477f2043
package
cn
.
meteor
.
beyondclouds
.
modules
.
topic
.
mapper
;
package
cn
.
meteor
.
beyondclouds
.
modules
.
topic
.
mapper
;
import
cn.meteor.beyondclouds.modules.post.entity.Post
;
import
cn.meteor.beyondclouds.modules.topic.entity.Topic
;
import
cn.meteor.beyondclouds.modules.topic.entity.Topic
;
import
com.baomidou.mybatisplus.core.conditions.query.QueryWrapper
;
import
com.baomidou.mybatisplus.core.mapper.BaseMapper
;
import
com.baomidou.mybatisplus.core.mapper.BaseMapper
;
import
com.baomidou.mybatisplus.core.metadata.IPage
;
import
com.baomidou.mybatisplus.core.metadata.IPage
;
import
com.baomidou.mybatisplus.core.toolkit.Constants
;
import
com.baomidou.mybatisplus.extension.plugins.pagination.Page
;
import
com.baomidou.mybatisplus.extension.plugins.pagination.Page
;
import
org.apache.ibatis.annotations.Param
;
import
org.springframework.stereotype.Component
;
import
org.springframework.stereotype.Component
;
import
java.util.List
;
import
java.util.List
;
...
@@ -32,4 +36,13 @@ public interface TopicMapper extends BaseMapper<Topic> {
...
@@ -32,4 +36,13 @@ public interface TopicMapper extends BaseMapper<Topic> {
* @return
* @return
*/
*/
IPage
<
Topic
>
selectHotSearchPage
(
Page
<
Topic
>
topicPage
);
IPage
<
Topic
>
selectHotSearchPage
(
Page
<
Topic
>
topicPage
);
/**
* 搜索话题下的所有动态
* @param postPage
* @param queryWrapper
* @return
*/
IPage
<
Post
>
searchPostInTopicWithConditions
(
Page
<
Post
>
postPage
,
@Param
(
Constants
.
WRAPPER
)
QueryWrapper
<?>
queryWrapper
);
}
}
src/main/java/cn/meteor/beyondclouds/modules/topic/mapper/xml/TopicMapper.xml
View file @
477f2043
...
@@ -13,4 +13,15 @@
...
@@ -13,4 +13,15 @@
AND sd.item_type = 'TOPIC'
AND sd.item_type = 'TOPIC'
ORDER BY sd.degree DESC
ORDER BY sd.degree DESC
</select>
</select>
<select
id=
"searchPostInTopicWithConditions"
resultType=
"cn.meteor.beyondclouds.modules.post.entity.Post"
>
SELECT *
FROM topic_reference tr inner join post p
on tr.referencer_id=p.post_id
<if
test=
"ew != null and ew.customSqlSegment != null"
>
${ew.customSqlSegment}
</if>
</select>
</mapper>
</mapper>
src/main/java/cn/meteor/beyondclouds/modules/topic/service/ITopicService.java
View file @
477f2043
...
@@ -141,10 +141,12 @@ public interface ITopicService extends IService<Topic> {
...
@@ -141,10 +141,12 @@ public interface ITopicService extends IService<Topic> {
* @param pageNumber
* @param pageNumber
* @param pageSize
* @param pageSize
* @param topicName
* @param topicName
* @param type
* @param keywords
* @throws TopicServiceException
* @throws TopicServiceException
* @return IPage<Post>
* @return IPage<Post>
*/
*/
PageDTO
<
PostDTO
>
getPostByTopicName
(
Integer
pageNumber
,
Integer
pageSize
,
String
topicName
)
throws
TopicServiceException
;
PageDTO
<
PostDTO
>
getPostByTopicName
(
Integer
pageNumber
,
Integer
pageSize
,
String
topicName
,
Integer
type
,
String
keywords
)
throws
TopicServiceException
;
/**
/**
* 查找并话题,若话题不存在,则创建话题
* 查找并话题,若话题不存在,则创建话题
...
...
src/main/java/cn/meteor/beyondclouds/modules/topic/service/impl/TopicServiceImpl.java
View file @
477f2043
...
@@ -34,6 +34,7 @@ import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
...
@@ -34,6 +34,7 @@ import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
import
com.baomidou.mybatisplus.core.metadata.IPage
;
import
com.baomidou.mybatisplus.core.metadata.IPage
;
import
com.baomidou.mybatisplus.extension.plugins.pagination.Page
;
import
com.baomidou.mybatisplus.extension.plugins.pagination.Page
;
import
com.baomidou.mybatisplus.extension.service.impl.ServiceImpl
;
import
com.baomidou.mybatisplus.extension.service.impl.ServiceImpl
;
import
org.apache.ibatis.annotations.Param
;
import
org.springframework.beans.BeanUtils
;
import
org.springframework.beans.BeanUtils
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.stereotype.Service
;
import
org.springframework.stereotype.Service
;
...
@@ -459,7 +460,7 @@ public class TopicServiceImpl extends ServiceImpl<TopicMapper, Topic> implements
...
@@ -459,7 +460,7 @@ public class TopicServiceImpl extends ServiceImpl<TopicMapper, Topic> implements
}
}
@Override
@Override
public
PageDTO
<
PostDTO
>
getPostByTopicName
(
Integer
pageNumber
,
Integer
pageSize
,
String
topicName
)
throws
TopicServiceException
{
public
PageDTO
<
PostDTO
>
getPostByTopicName
(
Integer
pageNumber
,
Integer
pageSize
,
String
topicName
,
Integer
type
,
String
keywords
)
throws
TopicServiceException
{
//1. 设置分页信息
//1. 设置分页信息
IPage
<
TopicReference
>
page
=
new
Page
<>(
pageNumber
,
pageSize
);
IPage
<
TopicReference
>
page
=
new
Page
<>(
pageNumber
,
pageSize
);
...
@@ -472,23 +473,20 @@ public class TopicServiceImpl extends ServiceImpl<TopicMapper, Topic> implements
...
@@ -472,23 +473,20 @@ public class TopicServiceImpl extends ServiceImpl<TopicMapper, Topic> implements
throw
new
TopicServiceException
(
TopicErrorCode
.
TOPIC_NOT_EXISTS
);
throw
new
TopicServiceException
(
TopicErrorCode
.
TOPIC_NOT_EXISTS
);
}
}
//3. 通过话题id与动态类型3查找该话题下的所有动态
QueryWrapper
queryWrapper
=
new
QueryWrapper
();
QueryWrapper
<
TopicReference
>
topicReferenceQueryWrapper
=
new
QueryWrapper
<>();
queryWrapper
.
eq
(
"tr.topic_id"
,
topic
.
getTopicId
());
topicReferenceQueryWrapper
.
eq
(
"topic_id"
,
topic
.
getTopicId
()).
eq
(
"referencer_type"
,
3
);
queryWrapper
.
eq
(
"tr.referencer_type"
,
3
);
IPage
<
TopicReference
>
topicReferenceIPage
=
topicReferenceService
.
page
(
page
,
topicReferenceQueryWrapper
);
if
(
null
!=
type
)
{
queryWrapper
.
eq
(
"p.type"
,
type
);
}
if
(
null
!=
keywords
)
{
queryWrapper
.
like
(
"p.content"
,
keywords
);
}
queryWrapper
.
orderByDesc
(
"p.create_time"
);
//4. 获取查询到的referencerId
IPage
<
Post
>
postPage
=
topicMapper
.
searchPostInTopicWithConditions
(
new
Page
<
Post
>(
pageNumber
,
pageSize
),
queryWrapper
);
List
<
String
>
referencerId
=
topicReferenceIPage
.
getRecords
().
stream
()
.
map
(
TopicReference:
:
getReferencerId
)
.
collect
(
Collectors
.
toList
());
//5. 通过referencerId批量查询动态
List
<
Post
>
posts
=
postPage
.
getRecords
();
List
<
Post
>
posts
;
if
(!
CollectionUtils
.
isEmpty
(
referencerId
))
{
posts
=
postService
.
listByIds
(
referencerId
);
}
else
{
posts
=
List
.
of
();
}
List
<
PostDTO
>
postDTOList
=
new
ArrayList
<>();
List
<
PostDTO
>
postDTOList
=
new
ArrayList
<>();
if
(
SubjectUtils
.
isAuthenticated
())
{
if
(
SubjectUtils
.
isAuthenticated
())
{
...
@@ -510,7 +508,7 @@ public class TopicServiceImpl extends ServiceImpl<TopicMapper, Topic> implements
...
@@ -510,7 +508,7 @@ public class TopicServiceImpl extends ServiceImpl<TopicMapper, Topic> implements
// 6.构造分页结果
// 6.构造分页结果
PageDTO
<
PostDTO
>
postDTOPage
=
new
PageDTO
<>();
PageDTO
<
PostDTO
>
postDTOPage
=
new
PageDTO
<>();
PageUtils
.
copyMeta
(
topicReferenceI
Page
,
postDTOPage
);
PageUtils
.
copyMeta
(
post
Page
,
postDTOPage
);
postDTOPage
.
setDataList
(
postDTOList
);
postDTOPage
.
setDataList
(
postDTOList
);
return
postDTOPage
;
return
postDTOPage
;
...
...
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