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
a136a6ec
Commit
a136a6ec
authored
Feb 15, 2020
by
段启岩
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
推荐动态,话题下的推荐动态
parent
2d6e8e5f
Show whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
152 additions
and
3 deletions
+152
-3
src/main/java/cn/meteor/beyondclouds/modules/post/api/PostApi.java
+34
-0
src/main/java/cn/meteor/beyondclouds/modules/post/mapper/PostMapper.java
+17
-0
src/main/java/cn/meteor/beyondclouds/modules/post/mapper/xml/PostMapper.xml
+15
-0
src/main/java/cn/meteor/beyondclouds/modules/post/service/IPostService.java
+30
-3
src/main/java/cn/meteor/beyondclouds/modules/post/service/impl/PostServiceImpl.java
+56
-0
No files found.
src/main/java/cn/meteor/beyondclouds/modules/post/api/PostApi.java
View file @
a136a6ec
...
@@ -6,6 +6,7 @@ import cn.meteor.beyondclouds.core.annotation.Anonymous;
...
@@ -6,6 +6,7 @@ import cn.meteor.beyondclouds.core.annotation.Anonymous;
import
cn.meteor.beyondclouds.core.annotation.CurrentSubject
;
import
cn.meteor.beyondclouds.core.annotation.CurrentSubject
;
import
cn.meteor.beyondclouds.core.api.Response
;
import
cn.meteor.beyondclouds.core.api.Response
;
import
cn.meteor.beyondclouds.core.authentication.Subject
;
import
cn.meteor.beyondclouds.core.authentication.Subject
;
import
cn.meteor.beyondclouds.modules.post.dto.PostDTO
;
import
cn.meteor.beyondclouds.modules.post.entity.Post
;
import
cn.meteor.beyondclouds.modules.post.entity.Post
;
import
cn.meteor.beyondclouds.modules.post.enums.PostErrorCode
;
import
cn.meteor.beyondclouds.modules.post.enums.PostErrorCode
;
import
cn.meteor.beyondclouds.modules.post.exception.PostServiceException
;
import
cn.meteor.beyondclouds.modules.post.exception.PostServiceException
;
...
@@ -19,6 +20,7 @@ import cn.meteor.beyondclouds.util.SubjectUtils;
...
@@ -19,6 +20,7 @@ import cn.meteor.beyondclouds.util.SubjectUtils;
import
com.baomidou.mybatisplus.core.metadata.IPage
;
import
com.baomidou.mybatisplus.core.metadata.IPage
;
import
io.swagger.annotations.Api
;
import
io.swagger.annotations.Api
;
import
io.swagger.annotations.ApiOperation
;
import
io.swagger.annotations.ApiOperation
;
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.util.CollectionUtils
;
import
org.springframework.util.CollectionUtils
;
...
@@ -222,4 +224,36 @@ public class PostApi {
...
@@ -222,4 +224,36 @@ public class PostApi {
IPage
<
Post
>
postPage
=
postService
.
getFollowedPostPage
(
pageForm
.
getPage
(),
pageForm
.
getSize
(),
(
String
)
subject
.
getId
());
IPage
<
Post
>
postPage
=
postService
.
getFollowedPostPage
(
pageForm
.
getPage
(),
pageForm
.
getSize
(),
(
String
)
subject
.
getId
());
return
Response
.
success
(
toPostVOPage
(
postPage
));
return
Response
.
success
(
toPostVOPage
(
postPage
));
}
}
/**
* 推荐动态
* @param pageForm
* @param bindingResult
* @return
*/
@GetMapping
(
"/post/recommends"
)
public
Response
<?>
recommendPosts
(
@Valid
PageForm
pageForm
,
BindingResult
bindingResult
)
{
if
(
bindingResult
.
hasErrors
())
{
return
Response
.
fieldError
(
bindingResult
.
getFieldError
());
}
PageDTO
<
PostDTO
>
postDTOPage
=
postService
.
getRecommendPosts
(
pageForm
.
getPage
(),
pageForm
.
getSize
());
return
Response
.
success
(
postDTOPage
);
}
/**
* 话题下的推荐动态列表
* @param pageForm
* @param bindingResult
* @return
*/
@GetMapping
(
"/topic/{topicId}/post/recommends"
)
public
Response
<?>
recommendPostsInTopic
(
@Valid
PageForm
pageForm
,
@PathVariable
(
"topicId"
)
String
topicId
,
BindingResult
bindingResult
)
{
if
(
bindingResult
.
hasErrors
())
{
return
Response
.
fieldError
(
bindingResult
.
getFieldError
());
}
PageDTO
<
PostDTO
>
postDTOPage
=
postService
.
getRecommendPostsInTopic
(
topicId
,
pageForm
.
getPage
(),
pageForm
.
getSize
());
return
Response
.
success
(
postDTOPage
);
}
}
}
src/main/java/cn/meteor/beyondclouds/modules/post/mapper/PostMapper.java
View file @
a136a6ec
...
@@ -5,6 +5,7 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
...
@@ -5,6 +5,7 @@ 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.core.toolkit.Constants
;
import
com.baomidou.mybatisplus.extension.plugins.pagination.Page
;
import
org.apache.ibatis.annotations.Param
;
import
org.apache.ibatis.annotations.Param
;
/**
/**
...
@@ -16,4 +17,20 @@ import org.apache.ibatis.annotations.Param;
...
@@ -16,4 +17,20 @@ import org.apache.ibatis.annotations.Param;
* @since 2020-01-30
* @since 2020-01-30
*/
*/
public
interface
PostMapper
extends
BaseMapper
<
Post
>
{
public
interface
PostMapper
extends
BaseMapper
<
Post
>
{
/**
* 查询推荐动态
* @param page
* @return
*/
IPage
<
Post
>
selectRecommendPage
(
Page
<
Post
>
page
);
/**
* 查询推荐动态
* @param page
* @param topicId
* @return
*/
IPage
<
Post
>
selectRecommendPageInTopic
(
Page
<
Post
>
page
,
@Param
(
"topicId"
)
String
topicId
);
}
}
src/main/java/cn/meteor/beyondclouds/modules/post/mapper/xml/PostMapper.xml
View file @
a136a6ec
...
@@ -2,4 +2,19 @@
...
@@ -2,4 +2,19 @@
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper
namespace=
"cn.meteor.beyondclouds.modules.post.mapper.PostMapper"
>
<mapper
namespace=
"cn.meteor.beyondclouds.modules.post.mapper.PostMapper"
>
<select
id=
"selectRecommendPage"
resultType=
"cn.meteor.beyondclouds.modules.post.entity.Post"
>
select p.*
from post p, user_statistics us
where p.user_id = us.user_id
order by (us.fans_num + us.visited_num) desc
</select>
<select
id=
"selectRecommendPageInTopic"
resultType=
"cn.meteor.beyondclouds.modules.post.entity.Post"
>
select p.*
from post p, user_statistics us, topic_reference tr
where p.user_id = us.user_id
and tr.referencer_id = p.post_id
and topic_id = #{topicId}
order by (us.fans_num + us.visited_num) desc
</select>
</mapper>
</mapper>
src/main/java/cn/meteor/beyondclouds/modules/post/service/IPostService.java
View file @
a136a6ec
package
cn
.
meteor
.
beyondclouds
.
modules
.
post
.
service
;
package
cn
.
meteor
.
beyondclouds
.
modules
.
post
.
service
;
import
cn.meteor.beyondclouds.common.dto.PageDTO
;
import
cn.meteor.beyondclouds.modules.post.dto.PostDTO
;
import
cn.meteor.beyondclouds.modules.post.entity.Post
;
import
cn.meteor.beyondclouds.modules.post.entity.Post
;
import
cn.meteor.beyondclouds.modules.post.exception.PostServiceException
;
import
cn.meteor.beyondclouds.modules.post.exception.PostServiceException
;
import
cn.meteor.beyondclouds.modules.project.exception.ProjectServiceException
;
import
cn.meteor.beyondclouds.modules.project.exception.ProjectServiceException
;
...
@@ -18,6 +20,7 @@ public interface IPostService extends IService<Post> {
...
@@ -18,6 +20,7 @@ public interface IPostService extends IService<Post> {
/**
/**
* 发布动态
* 发布动态
*
* @param post
* @param post
* @throws ProjectServiceException
* @throws ProjectServiceException
*/
*/
...
@@ -25,14 +28,16 @@ public interface IPostService extends IService<Post> {
...
@@ -25,14 +28,16 @@ public interface IPostService extends IService<Post> {
/**
/**
* 删除动态
* 删除动态
*
* @param postId
* @param postId
* @param userId
* @param userId
*/
*/
void
deletePost
(
String
postId
,
String
userId
)
throws
PostServiceException
;
void
deletePost
(
String
postId
,
String
userId
)
throws
PostServiceException
;
/**
/**
* 动态列表
* 动态列表
*
* @param pageNumber
* @param pageNumber
* @param pageSize
* @param pageSize
* @param type
* @param type
...
@@ -42,31 +47,53 @@ public interface IPostService extends IService<Post> {
...
@@ -42,31 +47,53 @@ public interface IPostService extends IService<Post> {
/**
/**
* 个人动态列表
* 个人动态列表
*
* @param pageNumber
* @param pageNumber
* @param pageSize
* @param pageSize
* @param userId
* @param userId
* @return
* @return
*/
*/
IPage
<
Post
>
getUserPostPage
(
Integer
pageNumber
,
Integer
pageSize
,
String
userId
);
IPage
<
Post
>
getUserPostPage
(
Integer
pageNumber
,
Integer
pageSize
,
String
userId
);
/**
/**
* 更新动态里的用户头像
* 更新动态里的用户头像
*
* @param userId
* @param userId
*/
*/
void
updatePostUserAvatar
(
String
userId
);
void
updatePostUserAvatar
(
String
userId
);
/**
/**
* 更新动态里的用户昵称
* 更新动态里的用户昵称
*
* @param userId
* @param userId
*/
*/
void
updatePostUserNick
(
String
userId
);
void
updatePostUserNick
(
String
userId
);
/**
/**
* 获取我关注用户的动态列表
* 获取我关注用户的动态列表
*
* @param pageNumber
* @param pageNumber
* @param pageSize
* @param pageSize
* @param userId
* @param userId
* @return
* @return
*/
*/
IPage
<
Post
>
getFollowedPostPage
(
Integer
pageNumber
,
Integer
pageSize
,
String
userId
);
IPage
<
Post
>
getFollowedPostPage
(
Integer
pageNumber
,
Integer
pageSize
,
String
userId
);
/**
* 推荐动态
*
* @param page
* @param size
* @return
*/
PageDTO
<
PostDTO
>
getRecommendPosts
(
Integer
page
,
Integer
size
);
/**
* 查询话题下的推荐动态列表
* @param topicId
* @param page
* @param size
* @return
*/
PageDTO
<
PostDTO
>
getRecommendPostsInTopic
(
String
topicId
,
Integer
page
,
Integer
size
);
}
}
src/main/java/cn/meteor/beyondclouds/modules/post/service/impl/PostServiceImpl.java
View file @
a136a6ec
package
cn
.
meteor
.
beyondclouds
.
modules
.
post
.
service
.
impl
;
package
cn
.
meteor
.
beyondclouds
.
modules
.
post
.
service
.
impl
;
import
cn.meteor.beyondclouds.common.dto.PageDTO
;
import
cn.meteor.beyondclouds.core.queue.message.DataItemChangeMessage
;
import
cn.meteor.beyondclouds.core.queue.message.DataItemChangeMessage
;
import
cn.meteor.beyondclouds.core.queue.message.DataItemType
;
import
cn.meteor.beyondclouds.core.queue.message.DataItemType
;
import
cn.meteor.beyondclouds.modules.post.dto.PostDTO
;
import
cn.meteor.beyondclouds.modules.post.entity.Post
;
import
cn.meteor.beyondclouds.modules.post.entity.Post
;
import
cn.meteor.beyondclouds.modules.post.enums.PostErrorCode
;
import
cn.meteor.beyondclouds.modules.post.enums.PostErrorCode
;
import
cn.meteor.beyondclouds.modules.post.exception.PostServiceException
;
import
cn.meteor.beyondclouds.modules.post.exception.PostServiceException
;
import
cn.meteor.beyondclouds.modules.post.mapper.PostMapper
;
import
cn.meteor.beyondclouds.modules.post.mapper.PostMapper
;
import
cn.meteor.beyondclouds.modules.post.service.IPostService
;
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.project.exception.ProjectServiceException
;
import
cn.meteor.beyondclouds.modules.queue.service.IMessageQueueService
;
import
cn.meteor.beyondclouds.modules.queue.service.IMessageQueueService
;
import
cn.meteor.beyondclouds.modules.topic.entity.Topic
;
import
cn.meteor.beyondclouds.modules.topic.entity.Topic
;
...
@@ -18,12 +21,15 @@ import cn.meteor.beyondclouds.modules.user.entity.User;
...
@@ -18,12 +21,15 @@ import cn.meteor.beyondclouds.modules.user.entity.User;
import
cn.meteor.beyondclouds.modules.user.entity.UserFollow
;
import
cn.meteor.beyondclouds.modules.user.entity.UserFollow
;
import
cn.meteor.beyondclouds.modules.user.service.IUserFollowService
;
import
cn.meteor.beyondclouds.modules.user.service.IUserFollowService
;
import
cn.meteor.beyondclouds.modules.user.service.IUserService
;
import
cn.meteor.beyondclouds.modules.user.service.IUserService
;
import
cn.meteor.beyondclouds.util.PageUtils
;
import
cn.meteor.beyondclouds.util.SubjectUtils
;
import
cn.meteor.beyondclouds.util.TopicUtils
;
import
cn.meteor.beyondclouds.util.TopicUtils
;
import
com.baomidou.mybatisplus.core.conditions.query.QueryWrapper
;
import
com.baomidou.mybatisplus.core.conditions.query.QueryWrapper
;
import
com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper
;
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.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
;
import
org.springframework.util.CollectionUtils
;
import
org.springframework.util.CollectionUtils
;
...
@@ -54,12 +60,19 @@ public class PostServiceImpl extends ServiceImpl<PostMapper, Post> implements IP
...
@@ -54,12 +60,19 @@ public class PostServiceImpl extends ServiceImpl<PostMapper, Post> implements IP
private
IUserFollowService
userFollowService
;
private
IUserFollowService
userFollowService
;
private
PostMapper
postMapper
;
@Autowired
@Autowired
public
void
setUserFollowService
(
IUserFollowService
userFollowService
)
{
public
void
setUserFollowService
(
IUserFollowService
userFollowService
)
{
this
.
userFollowService
=
userFollowService
;
this
.
userFollowService
=
userFollowService
;
}
}
@Autowired
@Autowired
public
void
setPostMapper
(
PostMapper
postMapper
)
{
this
.
postMapper
=
postMapper
;
}
@Autowired
public
void
setTopicReferenceService
(
ITopicReferenceService
topicReferenceService
)
{
public
void
setTopicReferenceService
(
ITopicReferenceService
topicReferenceService
)
{
this
.
topicReferenceService
=
topicReferenceService
;
this
.
topicReferenceService
=
topicReferenceService
;
}
}
...
@@ -275,5 +288,48 @@ public class PostServiceImpl extends ServiceImpl<PostMapper, Post> implements IP
...
@@ -275,5 +288,48 @@ public class PostServiceImpl extends ServiceImpl<PostMapper, Post> implements IP
}
}
}
}
@Override
public
PageDTO
<
PostDTO
>
getRecommendPosts
(
Integer
page
,
Integer
size
)
{
IPage
<
Post
>
postPage
=
postMapper
.
selectRecommendPage
(
new
Page
<
Post
>(
page
,
size
));
return
toPageDTO
(
postPage
);
}
@Override
public
PageDTO
<
PostDTO
>
getRecommendPostsInTopic
(
String
topicId
,
Integer
page
,
Integer
size
)
{
IPage
<
Post
>
postPage
=
postMapper
.
selectRecommendPageInTopic
(
new
Page
<
Post
>(
page
,
size
),
topicId
);
return
toPageDTO
(
postPage
);
}
private
PageDTO
<
PostDTO
>
toPageDTO
(
IPage
<
Post
>
postPage
)
{
List
<
PostDTO
>
postDTOList
;
if
(
SubjectUtils
.
isAuthenticated
())
{
postDTOList
=
postPage
.
getRecords
().
stream
()
.
map
(
post
->
{
PostDTO
postDTO
=
new
PostDTO
();
BeanUtils
.
copyProperties
(
post
,
postDTO
);
if
(!
StringUtils
.
isEmpty
(
post
.
getPictures
()))
{
postDTO
.
setPictures
(
post
.
getPictures
().
split
(
","
));
}
postDTO
.
setFollowedAuthor
(
userFollowService
.
hasFollowedUser
(
post
.
getUserId
()));
return
postDTO
;
}).
collect
(
Collectors
.
toList
());
}
else
{
postDTOList
=
postPage
.
getRecords
().
stream
()
.
map
(
post
->
{
PostDTO
postVO
=
new
PostDTO
();
BeanUtils
.
copyProperties
(
post
,
postVO
);
if
(!
StringUtils
.
isEmpty
(
post
.
getPictures
()))
{
postVO
.
setPictures
(
post
.
getPictures
().
split
(
","
));
}
postVO
.
setFollowedAuthor
(
false
);
return
postVO
;
}).
collect
(
Collectors
.
toList
());
}
PageDTO
<
PostDTO
>
pageDTO
=
new
PageDTO
<>();
PageUtils
.
copyMeta
(
postPage
,
pageDTO
);
pageDTO
.
setDataList
(
postDTOList
);
return
pageDTO
;
}
}
}
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