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
c27f9aaf
Commit
c27f9aaf
authored
Feb 08, 2020
by
段启岩
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
相关推荐完成
parent
ebf70bd5
Hide whitespace changes
Inline
Side-by-side
Showing
8 changed files
with
119 additions
and
4 deletions
+119
-4
src/main/java/cn/meteor/beyondclouds/modules/blog/api/BlogApi.java
+15
-2
src/main/java/cn/meteor/beyondclouds/modules/blog/mapper/BlogTagMapper.java
+11
-0
src/main/java/cn/meteor/beyondclouds/modules/blog/mapper/xml/BlogMapper.xml
+11
-0
src/main/java/cn/meteor/beyondclouds/modules/blog/service/IBlogService.java
+11
-1
src/main/java/cn/meteor/beyondclouds/modules/blog/service/IBlogTagService.java
+10
-0
src/main/java/cn/meteor/beyondclouds/modules/blog/service/impl/BlogServiceImpl.java
+28
-1
src/main/java/cn/meteor/beyondclouds/modules/blog/service/impl/BlogTagServiceImpl.java
+12
-0
src/main/java/cn/meteor/beyondclouds/util/PageUtils.java
+21
-0
No files found.
src/main/java/cn/meteor/beyondclouds/modules/blog/api/BlogApi.java
View file @
c27f9aaf
...
...
@@ -162,15 +162,28 @@ public class BlogApi {
}
@Anonymous
@ApiOperation
(
"
查看标签下的
博客列表"
)
@ApiOperation
(
"
根据标签查找
博客列表"
)
@GetMapping
(
"/tag/{tagId}/blogs"
)
public
Response
<?>
getBlogsByTagId
(
@PathVariable
(
"tagId"
)
String
tagId
,
@Valid
PageForm
pageForm
,
BindingResult
result
)
{
if
(
result
.
hasErrors
())
{
return
Response
.
fieldError
(
result
.
getFieldError
());
}
IPage
<
Blog
>
blogPage
=
blogService
.
getBlogPageBy
t
agId
(
pageForm
.
getPage
(),
pageForm
.
getSize
(),
tagId
);
IPage
<
Blog
>
blogPage
=
blogService
.
getBlogPageBy
T
agId
(
pageForm
.
getPage
(),
pageForm
.
getSize
(),
tagId
);
PageVO
<
Blog
>
blogPageVO
=
new
PageVO
<>(
blogPage
);
return
Response
.
success
(
blogPageVO
);
}
@Anonymous
@ApiOperation
(
"相关博客"
)
@GetMapping
(
"/blog/{blogId}/recommends"
)
public
Response
<?>
getRelatedBlogs
(
@PathVariable
(
"blogId"
)
String
blogId
,
@Valid
PageForm
pageForm
,
BindingResult
bindingResult
)
{
if
(
bindingResult
.
hasErrors
())
{
return
Response
.
fieldError
(
bindingResult
.
getFieldError
());
}
IPage
<
Blog
>
blogPage
=
blogService
.
getRelatedBlogPage
(
pageForm
.
getPage
()
,
pageForm
.
getSize
()
,
blogId
);
PageVO
<
Blog
>
blogPageVO
=
new
PageVO
<>(
blogPage
);
return
Response
.
success
(
blogPageVO
);
}
}
src/main/java/cn/meteor/beyondclouds/modules/blog/mapper/BlogTagMapper.java
View file @
c27f9aaf
...
...
@@ -2,6 +2,10 @@ package cn.meteor.beyondclouds.modules.blog.mapper;
import
cn.meteor.beyondclouds.modules.blog.entity.BlogTag
;
import
com.baomidou.mybatisplus.core.mapper.BaseMapper
;
import
com.baomidou.mybatisplus.core.metadata.IPage
;
import
org.apache.ibatis.annotations.Select
;
import
java.util.Collection
;
/**
* <p>
...
...
@@ -13,4 +17,11 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper;
*/
public
interface
BlogTagMapper
extends
BaseMapper
<
BlogTag
>
{
/**
* 根据博客ID获取相关的博客ids
* @param page
* @param tagIds
* @return
*/
IPage
<
String
>
selectRelatedBlogIds
(
IPage
<?>
page
,
Collection
<
String
>
tagIds
);
}
src/main/java/cn/meteor/beyondclouds/modules/blog/mapper/xml/BlogMapper.xml
View file @
c27f9aaf
...
...
@@ -64,4 +64,15 @@
#{blogId}
</foreach>
</select>
<select
id=
"selectRelatedBlogIds"
>
select distinct (blog_id)
from blog_tag
where tag_id in
<foreach
collection=
"tagIds"
item=
"tagId"
index=
"index"
open=
"("
close=
")"
separator=
","
>
#{tagId}
</foreach>
</select>
</mapper>
src/main/java/cn/meteor/beyondclouds/modules/blog/service/IBlogService.java
View file @
c27f9aaf
...
...
@@ -95,6 +95,16 @@ public interface IBlogService extends IService<Blog> {
* @param tagId
* @return
*/
IPage
<
Blog
>
getBlogPageBytagId
(
Integer
pageNumber
,
Integer
pageSize
,
String
tagId
);
IPage
<
Blog
>
getBlogPageByTagId
(
Integer
pageNumber
,
Integer
pageSize
,
String
tagId
);
/**
* 相关博客
* @param page
* @param size
* @param blogId
* @return
*/
IPage
<
Blog
>
getRelatedBlogPage
(
Integer
page
,
Integer
size
,
String
blogId
);
}
src/main/java/cn/meteor/beyondclouds/modules/blog/service/IBlogTagService.java
View file @
c27f9aaf
...
...
@@ -4,6 +4,8 @@ import cn.meteor.beyondclouds.modules.blog.entity.BlogTag;
import
com.baomidou.mybatisplus.core.metadata.IPage
;
import
com.baomidou.mybatisplus.extension.service.IService
;
import
java.util.Collection
;
/**
* <p>
* 博客标签表,用来记录博客里面引用了哪些标签 服务类
...
...
@@ -22,4 +24,12 @@ public interface IBlogTagService extends IService<BlogTag> {
* @return
*/
IPage
<
BlogTag
>
getBlogIdByTagId
(
Integer
pageNumber
,
Integer
pageSize
,
String
tagId
);
/**
* 根据博客ID获取相关的博客ID
* @param page
* @param tagIds
* @return
*/
IPage
<
String
>
getRelatedBlogIds
(
IPage
<
String
>
page
,
Collection
<
String
>
tagIds
);
}
src/main/java/cn/meteor/beyondclouds/modules/blog/service/impl/BlogServiceImpl.java
View file @
c27f9aaf
...
...
@@ -22,6 +22,7 @@ import cn.meteor.beyondclouds.modules.topic.service.ITopicService;
import
cn.meteor.beyondclouds.modules.user.entity.User
;
import
cn.meteor.beyondclouds.modules.user.service.IUserService
;
import
cn.meteor.beyondclouds.util.AbstractUtils
;
import
cn.meteor.beyondclouds.util.PageUtils
;
import
com.baomidou.mybatisplus.core.conditions.query.QueryWrapper
;
import
com.baomidou.mybatisplus.core.metadata.IPage
;
import
com.baomidou.mybatisplus.extension.plugins.pagination.Page
;
...
...
@@ -36,6 +37,7 @@ import org.springframework.util.CollectionUtils;
import
org.springframework.util.StringUtils
;
import
java.util.ArrayList
;
import
java.util.Collection
;
import
java.util.List
;
import
java.util.stream.Collectors
;
...
...
@@ -473,7 +475,7 @@ public class BlogServiceImpl extends ServiceImpl<BlogMapper, Blog> implements IB
}
@Override
public
IPage
<
Blog
>
getBlogPageBy
t
agId
(
Integer
pageNumber
,
Integer
pageSize
,
String
tagId
)
{
public
IPage
<
Blog
>
getBlogPageBy
T
agId
(
Integer
pageNumber
,
Integer
pageSize
,
String
tagId
)
{
// 查询blogTagPage
IPage
<
BlogTag
>
page
=
new
Page
<>(
pageNumber
,
pageSize
);
QueryWrapper
<
BlogTag
>
blogTagQueryWrapper
=
new
QueryWrapper
<>();
...
...
@@ -500,4 +502,29 @@ public class BlogServiceImpl extends ServiceImpl<BlogMapper, Blog> implements IB
}
return
blogPage
;
}
@Override
public
IPage
<
Blog
>
getRelatedBlogPage
(
Integer
pageNumber
,
Integer
pageSize
,
String
blogId
)
{
// 1.查找博客引用的所有标签id
QueryWrapper
<
BlogTag
>
blogTagQueryWrapper
=
new
QueryWrapper
<>();
List
<
BlogTag
>
blogTagList
=
blogTagService
.
list
(
blogTagQueryWrapper
);
List
<
String
>
tagIds
=
blogTagList
.
stream
()
.
map
(
BlogTag:
:
getTagId
)
.
collect
(
Collectors
.
toList
());
// 如果博客没有引用标签,则构造一个空的分页返回
if
(
CollectionUtils
.
isEmpty
(
tagIds
))
{
return
PageUtils
.
emptyPage
();
}
// 如果博客没有引用了标签,则查询引用的标签下的所有博客ID的分页
IPage
<
String
>
page
=
new
Page
<>(
pageNumber
,
pageSize
);
IPage
<
String
>
blogIdPage
=
blogTagService
.
getRelatedBlogIds
(
page
,
tagIds
);
List
<
String
>
blogIds
=
blogIdPage
.
getRecords
();
if
(
CollectionUtils
.
isEmpty
(
blogIds
))
{
return
PageUtils
.
emptyPage
();
}
else
{
return
blogMapper
.
listByIdsWithTags
(
blogIds
);
}
}
}
src/main/java/cn/meteor/beyondclouds/modules/blog/service/impl/BlogTagServiceImpl.java
View file @
c27f9aaf
...
...
@@ -9,6 +9,8 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import
com.baomidou.mybatisplus.extension.service.impl.ServiceImpl
;
import
org.springframework.stereotype.Service
;
import
java.util.Collection
;
/**
* <p>
* 博客标签表,用来记录博客里面引用了哪些标签 服务实现类
...
...
@@ -20,6 +22,11 @@ import org.springframework.stereotype.Service;
@Service
public
class
BlogTagServiceImpl
extends
ServiceImpl
<
BlogTagMapper
,
BlogTag
>
implements
IBlogTagService
{
private
BlogTagMapper
blogTagMapper
;
public
BlogTagServiceImpl
(
BlogTagMapper
blogTagMapper
)
{
this
.
blogTagMapper
=
blogTagMapper
;
}
@Override
public
IPage
<
BlogTag
>
getBlogIdByTagId
(
Integer
pageNumber
,
Integer
pageSize
,
String
tagId
)
{
...
...
@@ -29,4 +36,9 @@ public class BlogTagServiceImpl extends ServiceImpl<BlogTagMapper, BlogTag> impl
queryWrapper
.
eq
(
"tag_id"
,
tagId
);
return
page
(
page
,
queryWrapper
);
}
@Override
public
IPage
<
String
>
getRelatedBlogIds
(
IPage
<
String
>
page
,
Collection
<
String
>
tagIds
)
{
return
blogTagMapper
.
selectRelatedBlogIds
(
page
,
tagIds
);
}
}
src/main/java/cn/meteor/beyondclouds/util/PageUtils.java
0 → 100644
View file @
c27f9aaf
package
cn
.
meteor
.
beyondclouds
.
util
;
import
cn.meteor.beyondclouds.modules.blog.entity.Blog
;
import
com.baomidou.mybatisplus.core.metadata.IPage
;
import
com.baomidou.mybatisplus.extension.plugins.pagination.Page
;
import
java.util.List
;
/**
* @author meteor
*/
public
class
PageUtils
{
public
static
<
T
>
IPage
<
T
>
emptyPage
()
{
IPage
<
T
>
page
=
new
Page
<>();
page
.
setTotal
(
0L
);
page
.
setPages
(
0L
);
page
.
setCurrent
(
0
);
page
.
setRecords
(
List
.
of
());
return
page
;
}
}
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