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
12018294
Commit
12018294
authored
Feb 13, 2020
by
段启岩
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
添加话题详情
parent
64be074a
Show whitespace changes
Inline
Side-by-side
Showing
7 changed files
with
134 additions
and
25 deletions
+134
-25
src/main/java/cn/meteor/beyondclouds/modules/post/dto/PostDTO.java
+35
-0
src/main/java/cn/meteor/beyondclouds/modules/topic/api/TopicApi.java
+5
-6
src/main/java/cn/meteor/beyondclouds/modules/topic/dto/TopicDTO.java
+24
-1
src/main/java/cn/meteor/beyondclouds/modules/topic/service/ITopicService.java
+3
-3
src/main/java/cn/meteor/beyondclouds/modules/topic/service/impl/TopicServiceImpl.java
+57
-14
src/main/java/cn/meteor/beyondclouds/modules/user/service/IUserFollowService.java
+8
-0
src/main/java/cn/meteor/beyondclouds/modules/user/service/impl/UserFollowServiceImpl.java
+2
-1
No files found.
src/main/java/cn/meteor/beyondclouds/modules/post/dto/PostDTO.java
0 → 100644
View file @
12018294
package
cn
.
meteor
.
beyondclouds
.
modules
.
post
.
dto
;
import
lombok.Data
;
import
java.util.Date
;
/**
* @author meteor
*/
@Data
public
class
PostDTO
{
private
static
final
long
serialVersionUID
=
1L
;
private
String
postId
;
private
String
userId
;
private
Integer
type
;
private
String
content
;
private
String
[]
pictures
;
private
String
video
;
private
String
userAvatar
;
private
String
userNick
;
private
Date
createTime
;
private
Date
updateTime
;
private
Boolean
followedAuthor
;
}
src/main/java/cn/meteor/beyondclouds/modules/topic/api/TopicApi.java
View file @
12018294
...
...
@@ -6,8 +6,8 @@ import cn.meteor.beyondclouds.core.annotation.Anonymous;
import
cn.meteor.beyondclouds.core.annotation.CurrentSubject
;
import
cn.meteor.beyondclouds.core.api.Response
;
import
cn.meteor.beyondclouds.core.authentication.Subject
;
import
cn.meteor.beyondclouds.modules.post.
entity.Post
;
import
cn.meteor.beyondclouds.modules.topic.
bean
.TopicDTO
;
import
cn.meteor.beyondclouds.modules.post.
dto.PostDTO
;
import
cn.meteor.beyondclouds.modules.topic.
dto
.TopicDTO
;
import
cn.meteor.beyondclouds.modules.topic.entity.Topic
;
import
cn.meteor.beyondclouds.modules.topic.enums.TopicAccessWay
;
import
cn.meteor.beyondclouds.modules.topic.exception.TopicServiceException
;
...
...
@@ -183,12 +183,11 @@ public class TopicApi {
@Anonymous
@ApiOperation
(
"查询话题下的所有动态"
)
@GetMapping
(
"/topic/{topicName}/posts"
)
public
Response
<
PageDTO
<
Post
>>
getPostByTopicName
(
@Valid
PageForm
pageForm
,
@PathVariable
(
"topicName"
)
String
topicName
)
{
public
Response
<
PageDTO
<
Post
DTO
>>
getPostByTopicName
(
@Valid
PageForm
pageForm
,
@PathVariable
(
"topicName"
)
String
topicName
)
{
try
{
IPage
<
Post
>
post
=
topicService
.
getPostByTopicName
(
pageForm
.
getPage
(),
pageForm
.
getSize
(),
topicName
);
PageDTO
<
Post
>
postPageDTO
=
new
PageDTO
<>(
post
);
return
Response
.
success
(
postPageDTO
);
PageDTO
<
PostDTO
>
postPage
=
topicService
.
getPostByTopicName
(
pageForm
.
getPage
(),
pageForm
.
getSize
(),
topicName
);
return
Response
.
success
(
postPage
);
}
catch
(
TopicServiceException
e
)
{
e
.
printStackTrace
();
return
Response
.
error
();
...
...
src/main/java/cn/meteor/beyondclouds/modules/topic/
bean
/TopicDTO.java
→
src/main/java/cn/meteor/beyondclouds/modules/topic/
dto
/TopicDTO.java
View file @
12018294
package
cn
.
meteor
.
beyondclouds
.
modules
.
topic
.
bean
;
package
cn
.
meteor
.
beyondclouds
.
modules
.
topic
.
dto
;
import
cn.meteor.beyondclouds.modules.user.entity.UserStatistics
;
import
com.fasterxml.jackson.annotation.JsonInclude
;
import
io.swagger.annotations.ApiModelProperty
;
import
lombok.Data
;
import
java.util.Date
;
/**
* @author 胡明森
* @since 2020/2/8
...
...
@@ -11,7 +16,25 @@ public class TopicDTO {
private
String
topicId
;
private
String
userId
;
private
String
topicName
;
private
String
topicIcon
;
private
String
cover
;
private
String
topicDescrption
;
private
Integer
referenceCount
;
private
Date
createTime
;
private
Date
updateTime
;
private
Boolean
followedTopic
;
@JsonInclude
(
JsonInclude
.
Include
.
NON_NULL
)
private
UserStatistics
userStatistics
;
}
src/main/java/cn/meteor/beyondclouds/modules/topic/service/ITopicService.java
View file @
12018294
package
cn
.
meteor
.
beyondclouds
.
modules
.
topic
.
service
;
import
cn.meteor.beyondclouds.common.dto.PageDTO
;
import
cn.meteor.beyondclouds.modules.post.
entity.Post
;
import
cn.meteor.beyondclouds.modules.topic.
bean
.TopicDTO
;
import
cn.meteor.beyondclouds.modules.post.
dto.PostDTO
;
import
cn.meteor.beyondclouds.modules.topic.
dto
.TopicDTO
;
import
cn.meteor.beyondclouds.modules.topic.entity.Topic
;
import
cn.meteor.beyondclouds.modules.topic.enums.TopicAccessWay
;
import
cn.meteor.beyondclouds.modules.topic.exception.TopicServiceException
;
...
...
@@ -143,7 +143,7 @@ public interface ITopicService extends IService<Topic> {
* @throws TopicServiceException
* @return IPage<Post>
*/
IPage
<
Post
>
getPostByTopicName
(
Integer
pageNumber
,
Integer
pageSize
,
String
topicName
)
throws
TopicServiceException
;
PageDTO
<
PostDTO
>
getPostByTopicName
(
Integer
pageNumber
,
Integer
pageSize
,
String
topicName
)
throws
TopicServiceException
;
/**
* 查找并话题,若话题不存在,则创建话题
...
...
src/main/java/cn/meteor/beyondclouds/modules/topic/service/impl/TopicServiceImpl.java
View file @
12018294
package
cn
.
meteor
.
beyondclouds
.
modules
.
topic
.
service
.
impl
;
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.service.IPostService
;
import
cn.meteor.beyondclouds.modules.topic.
bean
.TopicDTO
;
import
cn.meteor.beyondclouds.modules.topic.
dto
.TopicDTO
;
import
cn.meteor.beyondclouds.modules.topic.entity.Topic
;
import
cn.meteor.beyondclouds.modules.topic.entity.TopicFollow
;
import
cn.meteor.beyondclouds.modules.topic.entity.TopicReference
;
...
...
@@ -15,7 +16,10 @@ import cn.meteor.beyondclouds.modules.topic.service.ITopicFollowService;
import
cn.meteor.beyondclouds.modules.topic.service.ITopicReferenceService
;
import
cn.meteor.beyondclouds.modules.topic.service.ITopicService
;
import
cn.meteor.beyondclouds.modules.user.entity.User
;
import
cn.meteor.beyondclouds.modules.user.entity.UserStatistics
;
import
cn.meteor.beyondclouds.modules.user.service.IUserFollowService
;
import
cn.meteor.beyondclouds.modules.user.service.IUserService
;
import
cn.meteor.beyondclouds.modules.user.service.IUserStatisticsService
;
import
cn.meteor.beyondclouds.util.PageUtils
;
import
cn.meteor.beyondclouds.util.SubjectUtils
;
import
com.baomidou.mybatisplus.core.conditions.query.QueryWrapper
;
...
...
@@ -55,6 +59,10 @@ public class TopicServiceImpl extends ServiceImpl<TopicMapper, Topic> implements
private
IPostService
postService
;
private
IUserFollowService
userFollowService
;
private
IUserStatisticsService
userStatisticsService
;
@Autowired
public
TopicServiceImpl
(
ITopicFollowService
topicFollowService
,
TopicMapper
topicMapper
,
ITopicReferenceService
topicReferenceService
)
{
this
.
topicFollowService
=
topicFollowService
;
...
...
@@ -63,6 +71,16 @@ public class TopicServiceImpl extends ServiceImpl<TopicMapper, Topic> implements
}
@Autowired
public
void
setUserFollowService
(
IUserFollowService
userFollowService
)
{
this
.
userFollowService
=
userFollowService
;
}
@Autowired
public
void
setUserStatisticsService
(
IUserStatisticsService
userStatisticsService
)
{
this
.
userStatisticsService
=
userStatisticsService
;
}
@Autowired
public
void
setPostService
(
IPostService
postService
)
{
this
.
postService
=
postService
;
}
...
...
@@ -112,18 +130,25 @@ public class TopicServiceImpl extends ServiceImpl<TopicMapper, Topic> implements
private
PageDTO
<
TopicDTO
>
toPageDTO
(
IPage
<
Topic
>
topicPage
)
{
List
<
Topic
>
topicList
=
topicPage
.
getRecords
();
Set
<
String
>
followedTopicIds
=
topicFollowService
.
getFollowedTopicIds
();
List
<
TopicDTO
>
topicDTOList
=
new
ArrayList
<>();
if
(
SubjectUtils
.
isAuthenticated
())
{
Set
<
String
>
followedTopicIds
=
topicFollowService
.
getFollowedTopicIds
();
topicList
.
forEach
(
topic
->
{
TopicDTO
topicDTO
=
new
TopicDTO
();
BeanUtils
.
copyProperties
(
topic
,
topicDTO
);
if
(
SubjectUtils
.
isAuthenticated
())
{
topicDTO
.
setFollowedTopic
(
followedTopicIds
.
contains
(
topic
.
getTopicId
()));
topicDTOList
.
add
(
topicDTO
);
});
}
else
{
topicList
.
forEach
(
topic
->
{
TopicDTO
topicDTO
=
new
TopicDTO
();
BeanUtils
.
copyProperties
(
topic
,
topicDTO
);
topicDTO
.
setFollowedTopic
(
false
);
}
topicDTOList
.
add
(
topicDTO
);
});
}
PageDTO
<
TopicDTO
>
pageDTO
=
new
PageDTO
<>();
PageUtils
.
copyMeta
(
topicPage
,
pageDTO
);
...
...
@@ -149,7 +174,11 @@ public class TopicServiceImpl extends ServiceImpl<TopicMapper, Topic> implements
throw
new
TopicServiceException
(
TopicErrorCode
.
TOPIC_NOT_EXISTS
);
}
return
toTopicDTO
(
topic
);
TopicDTO
topicDTO
=
toTopicDTO
(
topic
);
// 获取话题创建者的信息
UserStatistics
userStatistics
=
userStatisticsService
.
getById
(
topic
.
getUserId
());
topicDTO
.
setUserStatistics
(
userStatistics
);
return
topicDTO
;
}
/**
...
...
@@ -368,7 +397,7 @@ public class TopicServiceImpl extends ServiceImpl<TopicMapper, Topic> implements
}
@Override
public
IPage
<
Post
>
getPostByTopicName
(
Integer
pageNumber
,
Integer
pageSize
,
String
topicName
)
throws
TopicServiceException
{
public
PageDTO
<
PostDTO
>
getPostByTopicName
(
Integer
pageNumber
,
Integer
pageSize
,
String
topicName
)
throws
TopicServiceException
{
//1. 设置分页信息
IPage
<
TopicReference
>
page
=
new
Page
<>(
pageNumber
,
pageSize
);
...
...
@@ -399,15 +428,29 @@ public class TopicServiceImpl extends ServiceImpl<TopicMapper, Topic> implements
posts
=
List
.
of
();
}
List
<
PostDTO
>
postDTOList
=
new
ArrayList
<>();
if
(
SubjectUtils
.
isAuthenticated
())
{
Set
<
String
>
followedUserIds
=
userFollowService
.
getCurrentUserFollowedUserIds
();
posts
.
forEach
(
post
->
{
PostDTO
postDTO
=
new
PostDTO
();
BeanUtils
.
copyProperties
(
post
,
postDTO
);
postDTO
.
setFollowedAuthor
(
followedUserIds
.
contains
(
post
.
getUserId
()));
});
}
else
{
posts
.
forEach
(
post
->
{
PostDTO
postDTO
=
new
PostDTO
();
BeanUtils
.
copyProperties
(
post
,
postDTO
);
postDTO
.
setFollowedAuthor
(
false
);
postDTOList
.
add
(
postDTO
);
});
}
// 6.构造分页结果
IPage
<
Post
>
postIPage
=
new
Page
<>();
postIPage
.
setSize
(
topicReferenceIPage
.
getSize
());
postIPage
.
setCurrent
(
topicReferenceIPage
.
getCurrent
());
postIPage
.
setPages
(
topicReferenceIPage
.
getPages
());
postIPage
.
setTotal
(
topicReferenceIPage
.
getTotal
());
postIPage
.
setRecords
(
posts
);
return
postIPage
;
PageDTO
<
PostDTO
>
postDTOPage
=
new
PageDTO
<>();
PageUtils
.
copyMeta
(
topicReferenceIPage
,
postDTOPage
);
postDTOPage
.
setDataList
(
postDTOList
);
return
postDTOPage
;
}
@Override
...
...
src/main/java/cn/meteor/beyondclouds/modules/user/service/IUserFollowService.java
View file @
12018294
...
...
@@ -6,6 +6,8 @@ import cn.meteor.beyondclouds.modules.user.entity.UserFollow;
import
cn.meteor.beyondclouds.modules.user.exception.UserServiceException
;
import
com.baomidou.mybatisplus.extension.service.IService
;
import
java.util.Set
;
/**
* @author 段启岩
...
...
@@ -55,4 +57,10 @@ public interface IUserFollowService extends IService<UserFollow> {
* @return
*/
boolean
hasFollowedUser
(
String
userId
);
/**
* 获取当前用户关注的所有用户的ID
* @return
*/
Set
<
String
>
getCurrentUserFollowedUserIds
();
}
src/main/java/cn/meteor/beyondclouds/modules/user/service/impl/UserFollowServiceImpl.java
View file @
12018294
...
...
@@ -316,7 +316,8 @@ public class UserFollowServiceImpl extends ServiceImpl<UserFollowMapper, UserFol
return
pageDTO
;
}
private
Set
<
String
>
getCurrentUserFollowedUserIds
()
{
@Override
public
Set
<
String
>
getCurrentUserFollowedUserIds
()
{
Assert
.
isTrue
(
SubjectUtils
.
isAuthenticated
(),
"subject must be authenticated"
);
Subject
subject
=
SubjectUtils
.
getSubject
();
String
currentUserId
=
(
String
)
subject
.
getId
();
...
...
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