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
80c24924
Commit
80c24924
authored
Feb 01, 2020
by
段启岩
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
2020.2.1第二次合并
parent
f38fd77d
Hide whitespace changes
Inline
Side-by-side
Showing
6 changed files
with
112 additions
and
122 deletions
+112
-122
src/main/java/cn/meteor/beyondclouds/common/vo/PageVO.java
+9
-0
src/main/java/cn/meteor/beyondclouds/modules/topic/api/TopicApi.java
+20
-28
src/main/java/cn/meteor/beyondclouds/modules/topic/service/ITopicService.java
+1
-1
src/main/java/cn/meteor/beyondclouds/modules/topic/service/impl/TopicFollowServiceImpl.java
+0
-24
src/main/java/cn/meteor/beyondclouds/modules/topic/service/impl/TopicServiceImpl.java
+81
-68
src/main/resources/application.yml
+1
-1
No files found.
src/main/java/cn/meteor/beyondclouds/common/vo/PageVO.java
View file @
80c24924
package
cn
.
meteor
.
beyondclouds
.
common
.
vo
;
import
com.baomidou.mybatisplus.core.metadata.IPage
;
import
lombok.Data
;
import
java.util.List
;
...
...
@@ -21,4 +22,11 @@ public class PageVO<T> {
*/
private
List
<
T
>
dataList
;
public
PageVO
()
{
}
public
PageVO
(
IPage
<
T
>
page
)
{
setDataList
(
page
.
getRecords
());
setTotalPage
(
page
.
getPages
());
}
}
\ No newline at end of file
src/main/java/cn/meteor/beyondclouds/modules/topic/api/TopicApi.java
View file @
80c24924
package
cn
.
meteor
.
beyondclouds
.
modules
.
topic
.
api
;
import
cn.meteor.beyondclouds.common.form.PageForm
;
import
cn.meteor.beyondclouds.common.vo.PageVO
;
import
cn.meteor.beyondclouds.core.annotation.Anonymous
;
import
cn.meteor.beyondclouds.core.annotation.CurrentSubject
;
import
cn.meteor.beyondclouds.core.api.Response
;
...
...
@@ -8,7 +9,6 @@ import cn.meteor.beyondclouds.core.bean.Subject;
import
cn.meteor.beyondclouds.modules.topic.entity.Topic
;
import
cn.meteor.beyondclouds.modules.topic.exception.TopicServiceException
;
import
cn.meteor.beyondclouds.modules.topic.form.CreateTopicForm
;
import
cn.meteor.beyondclouds.modules.topic.service.ITopicFollowService
;
import
cn.meteor.beyondclouds.modules.topic.service.ITopicService
;
import
cn.meteor.beyondclouds.modules.user.entity.User
;
import
com.baomidou.mybatisplus.core.metadata.IPage
;
...
...
@@ -32,25 +32,18 @@ import java.util.List;
@RequestMapping
(
"/api"
)
public
class
TopicApi
{
private
ITopicService
iTopicService
;
private
ITopicFollowService
iTopicFollowService
;
@Autowired
public
void
setiTopicService
(
ITopicService
iTopicService
)
{
this
.
iTopicService
=
iTopicService
;
}
private
ITopicService
topicService
;
@Autowired
public
void
set
iTopicFollowService
(
ITopicFollowService
iTopicFollow
Service
)
{
this
.
iTopicFollowService
=
iTopicFollow
Service
;
public
void
set
TopicService
(
ITopicService
topic
Service
)
{
this
.
topicService
=
topic
Service
;
}
@ApiOperation
(
"创建话题"
)
@PostMapping
(
"/topic"
)
public
Response
createTopic
(
@RequestBody
@Valid
CreateTopicForm
createTopicForm
,
@CurrentSubject
Subject
subject
){
public
Response
createTopic
(
@RequestBody
@Valid
CreateTopicForm
createTopicForm
,
@CurrentSubject
Subject
subject
)
{
iT
opicService
.
createTopic
(
String
.
valueOf
(
subject
.
getId
()),
createTopicForm
.
getTopicName
());
t
opicService
.
createTopic
(
String
.
valueOf
(
subject
.
getId
()),
createTopicForm
.
getTopicName
());
return
Response
.
success
();
}
...
...
@@ -63,11 +56,11 @@ public class TopicApi {
return
Response
.
fieldError
(
bindingResult
.
getFieldError
());
}
int
pageNo
=
pageForm
.
getPage
();
int
pageSize
=
pageForm
.
getSize
();
int
pageNo
=
pageForm
.
getPage
();
int
pageSize
=
pageForm
.
getSize
();
IPage
<
Topic
>
page
=
new
Page
<>(
pageNo
,
pageSize
);
return
Response
.
success
(
iT
opicService
.
page
(
page
));
return
Response
.
success
(
t
opicService
.
page
(
page
));
}
...
...
@@ -75,7 +68,7 @@ public class TopicApi {
@GetMapping
(
"/topic/search"
)
public
Response
<
List
<
Topic
>>
searchTopics
(
@RequestParam
(
"keywords"
)
String
keywords
)
{
List
<
Topic
>
topics
=
iT
opicService
.
searchTopics
(
keywords
);
List
<
Topic
>
topics
=
t
opicService
.
searchTopics
(
keywords
);
return
Response
.
success
(
topics
);
}
...
...
@@ -84,9 +77,9 @@ public class TopicApi {
@Anonymous
@ApiOperation
(
"话题详情"
)
@GetMapping
(
"/topic/{topicId}"
)
public
Response
getTopic
(
@PathVariable
(
"topicId"
)
String
topicId
){
public
Response
getTopic
(
@PathVariable
(
"topicId"
)
String
topicId
)
{
try
{
Topic
topic
=
iT
opicService
.
getTopic
(
topicId
);
Topic
topic
=
t
opicService
.
getTopic
(
topicId
);
return
Response
.
success
(
topic
);
}
catch
(
TopicServiceException
e
)
{
e
.
printStackTrace
();
...
...
@@ -98,9 +91,9 @@ public class TopicApi {
@ApiOperation
(
"关注话题"
)
@PostMapping
(
"/topic/{topicId}/follower"
)
public
Response
topicFollower
(
@PathVariable
(
"topicId"
)
String
topicId
,
@CurrentSubject
Subject
subject
)
{
public
Response
topicFollower
(
@PathVariable
(
"topicId"
)
String
topicId
,
@CurrentSubject
Subject
subject
)
{
try
{
iTopicService
.
topicFollower
((
String
)
subject
.
getId
(),
topicId
);
topicService
.
followTopic
((
String
)
subject
.
getId
(),
topicId
);
return
Response
.
success
();
}
catch
(
TopicServiceException
e
)
{
e
.
printStackTrace
();
...
...
@@ -112,25 +105,24 @@ public class TopicApi {
@ApiOperation
(
"话题关注者列表"
)
@GetMapping
(
"/topic/{topicId}/follower"
)
public
Response
topicsFollower
(
@PathVariable
(
"topicId"
)
@Valid
String
topicId
,
PageForm
pageForm
,
BindingResult
bindingResult
)
{
public
Response
<?>
topicsFollower
(
@PathVariable
(
"topicId"
)
String
topicId
,
@Valid
PageForm
pageForm
,
BindingResult
bindingResult
)
{
if
(
bindingResult
.
hasErrors
())
{
return
Response
.
fieldError
(
bindingResult
.
getFieldError
());
}
IPage
<
User
>
page
=
iTopicService
.
getTopicsFollower
(
pageForm
.
getPage
(),
pageForm
.
getSize
(),
topicId
);
return
Response
.
success
(
page
);
IPage
<
User
>
page
=
topicService
.
getTopicsFollower
(
pageForm
.
getPage
(),
pageForm
.
getSize
(),
topicId
);
PageVO
<
User
>
userPageVO
=
new
PageVO
<>(
page
);
return
Response
.
success
(
userPageVO
);
}
@ApiOperation
(
"我关注的话题"
)
@GetMapping
(
"/my/topic/followed"
)
public
Response
topicsMyFollowed
(
@Valid
PageForm
pageForm
,
@CurrentSubject
Subject
subject
,
BindingResult
bindingResul
t
)
{
public
Response
topicsMyFollowed
(
@Valid
PageForm
pageForm
,
BindingResult
bindingResult
,
@CurrentSubject
Subject
subjec
t
)
{
if
(
bindingResult
.
hasErrors
())
{
return
Response
.
fieldError
(
bindingResult
.
getFieldError
());
}
IPage
<
Topic
>
page
=
iTopicService
.
getTopicsMyFollowed
(
pageForm
.
getPage
(),
pageForm
.
getSize
(),
String
.
valueOf
(
subject
.
getId
()));
IPage
<
Topic
>
page
=
topicService
.
getTopicsMyFollowed
(
pageForm
.
getPage
(),
pageForm
.
getSize
(),
String
.
valueOf
(
subject
.
getId
()));
return
Response
.
success
(
page
);
}
...
...
src/main/java/cn/meteor/beyondclouds/modules/topic/service/ITopicService.java
View file @
80c24924
...
...
@@ -36,7 +36,7 @@ public interface ITopicService extends IService<Topic> {
* @param userId
* @param topicId
*/
void
topicFollower
(
String
userId
,
String
topicId
)
throws
TopicServiceException
;
void
followTopic
(
String
userId
,
String
topicId
)
throws
TopicServiceException
;
/**
* 话题详情
...
...
src/main/java/cn/meteor/beyondclouds/modules/topic/service/impl/TopicFollowServiceImpl.java
View file @
80c24924
package
cn
.
meteor
.
beyondclouds
.
modules
.
topic
.
service
.
impl
;
import
cn.meteor.beyondclouds.modules.topic.entity.Topic
;
import
cn.meteor.beyondclouds.modules.topic.entity.TopicFollow
;
import
cn.meteor.beyondclouds.modules.topic.mapper.TopicFollowMapper
;
import
cn.meteor.beyondclouds.modules.topic.service.ITopicFollowService
;
import
cn.meteor.beyondclouds.modules.topic.service.ITopicService
;
import
com.baomidou.mybatisplus.core.conditions.query.QueryWrapper
;
import
com.baomidou.mybatisplus.core.metadata.IPage
;
import
com.baomidou.mybatisplus.extension.plugins.pagination.Page
;
import
com.baomidou.mybatisplus.extension.service.impl.ServiceImpl
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.stereotype.Service
;
import
java.util.ArrayList
;
import
java.util.List
;
/**
* <p>
* 话题关注表,记录了用户和话题之间的关注关系 服务实现类
...
...
@@ -26,19 +17,4 @@ import java.util.List;
@Service
public
class
TopicFollowServiceImpl
extends
ServiceImpl
<
TopicFollowMapper
,
TopicFollow
>
implements
ITopicFollowService
{
private
ITopicFollowService
iTopicFollowService
;
private
ITopicService
iTopicService
;
@Autowired
public
void
setiTopicFollowService
(
ITopicFollowService
iTopicFollowService
)
{
this
.
iTopicFollowService
=
iTopicFollowService
;
}
@Autowired
public
void
setiTopicService
(
ITopicService
iTopicService
)
{
this
.
iTopicService
=
iTopicService
;
}
}
src/main/java/cn/meteor/beyondclouds/modules/topic/service/impl/TopicServiceImpl.java
View file @
80c24924
...
...
@@ -17,6 +17,7 @@ import org.springframework.beans.factory.annotation.Autowired;
import
org.springframework.stereotype.Service
;
import
java.util.List
;
import
java.util.stream.Collectors
;
/**
* <p>
...
...
@@ -29,60 +30,41 @@ import java.util.List;
@Service
public
class
TopicServiceImpl
extends
ServiceImpl
<
TopicMapper
,
Topic
>
implements
ITopicService
{
private
ITopicFollowService
topicFollowService
;
private
TopicMapper
topicMapper
;
private
ITopicService
iTopicService
;
private
ITopicFollowService
iTopicFollowService
;
private
IUserService
iUserService
;
@Autowired
public
void
setiUserService
(
IUserService
iUserService
)
{
this
.
iUserService
=
iUserService
;
}
private
IUserService
userService
;
@Autowired
public
void
setTopicMapper
(
TopicMapper
topicMapper
)
{
this
.
topicMapper
=
topicMapper
;
}
@Autowired
public
void
setiTopicService
(
ITopicService
iTopicService
)
{
this
.
iTopicService
=
iTopicService
;
}
@Autowired
public
void
setiTopicFollowService
(
ITopicFollowService
iTopicFollowService
)
{
this
.
iTopicFollowService
=
iTopicFollowService
;
public
TopicServiceImpl
(
ITopicFollowService
topicFollowService
,
IUserService
userService
)
{
this
.
topicFollowService
=
topicFollowService
;
this
.
userService
=
userService
;
}
@Override
public
void
createTopic
(
String
userId
,
String
topicName
)
{
//1. 创建话题
Topic
topic
=
new
Topic
();
Topic
topic
=
new
Topic
();
topic
.
setUserId
(
userId
);
topic
.
setTopicName
(
topicName
);
iTopicService
.
save
(
topic
);
save
(
topic
);
}
@Override
public
List
<
Topic
>
searchTopics
(
String
keywords
)
{
return
topicMapper
.
searchTopics
(
keywords
);
return
searchTopics
(
keywords
);
}
@Override
public
Topic
getTopic
(
String
topicId
)
throws
TopicServiceException
{
public
Topic
getTopic
(
String
topicId
)
throws
TopicServiceException
{
//1. 获取话题
Topic
topic
=
iTopicService
.
getById
(
topicId
);
Topic
topic
=
getById
(
topicId
);
//2. 找不到该话题,抛出业务异常
if
(
topic
==
null
)
{
if
(
topic
==
null
)
{
throw
new
TopicServiceException
(
TopicErrorCode
.
TOPIC_NOT_EXISTS
);
}
...
...
@@ -90,62 +72,93 @@ public class TopicServiceImpl extends ServiceImpl<TopicMapper, Topic> implements
}
@Override
public
void
topicFollower
(
String
userId
,
String
topicId
)
throws
TopicServiceException
{
public
void
followTopic
(
String
userId
,
String
topicId
)
throws
TopicServiceException
{
//1. 获取话题
Topic
topic
=
iTopicService
.
getById
(
topicId
);
Topic
topic
=
getById
(
topicId
);
//2. 找不到该话题,抛出业务异常
if
(
topic
==
null
)
{
if
(
topic
==
null
)
{
throw
new
TopicServiceException
(
TopicErrorCode
.
TOPIC_NOT_EXISTS
);
}
//3. 关注话题
TopicFollow
topicFollow
=
new
TopicFollow
();
TopicFollow
topicFollow
=
new
TopicFollow
();
topicFollow
.
setTopicId
(
topicId
);
topicFollow
.
setUserId
(
userId
);
iT
opicFollowService
.
save
(
topicFollow
);
t
opicFollowService
.
save
(
topicFollow
);
}
@Override
public
IPage
<
Topic
>
getTopicsMyFollowed
(
Integer
page
,
Integer
size
,
String
userId
)
{
//1. 通过用户id获取我关注的所有话题的id
IPage
<
TopicFollow
>
pages
=
new
Page
<>(
page
,
size
);
QueryWrapper
<
TopicFollow
>
queryWrapper
=
new
QueryWrapper
<>();
queryWrapper
.
eq
(
"user_id"
,
userId
);
IPage
<
TopicFollow
>
page1
=
iTopicFollowService
.
page
(
pages
,
queryWrapper
);
//2. 通过话题id获取话题详情
IPage
<
Topic
>
page2
=
new
Page
<>(
page
,
size
);
QueryWrapper
<
Topic
>
queryWrapper1
=
new
QueryWrapper
<>();
queryWrapper
.
eq
(
"topic_id"
,
page1
.
getRecords
());
//3. 分页返回
return
iTopicService
.
page
(
page2
,
queryWrapper1
);
public
IPage
<
Topic
>
getTopicsMyFollowed
(
Integer
pageNumber
,
Integer
pageSize
,
String
userId
)
{
// 1. 通过用户id获取该话题所有关注着
// 设置分页信息
IPage
<
TopicFollow
>
page
=
new
Page
<>(
pageNumber
,
pageSize
);
// 2.查询TopicFollow
QueryWrapper
<
TopicFollow
>
topicFollowQueryWrapper
=
new
QueryWrapper
<>();
topicFollowQueryWrapper
.
eq
(
"user_id"
,
userId
);
IPage
<
TopicFollow
>
topicFollowPage
=
topicFollowService
.
page
(
page
,
topicFollowQueryWrapper
);
// 获取查询到的topicId
List
<
String
>
topicIds
=
topicFollowPage
.
getRecords
().
stream
()
.
map
(
TopicFollow:
:
getTopicId
)
.
collect
(
Collectors
.
toList
());
// 3. 通过用户id批量查询用户
List
<
Topic
>
topics
=
listByIds
(
topicIds
);
// 5.构造分页结果
IPage
<
Topic
>
userPage
=
new
Page
<>();
userPage
.
setSize
(
topicFollowPage
.
getSize
());
userPage
.
setCurrent
(
topicFollowPage
.
getCurrent
());
userPage
.
setPages
(
topicFollowPage
.
getPages
());
userPage
.
setTotal
(
topicFollowPage
.
getTotal
());
userPage
.
setRecords
(
topics
);
return
userPage
;
}
@Override
public
IPage
<
User
>
getTopicsFollower
(
Integer
page
,
Integer
size
,
String
topicId
)
{
//1. 通过话题id获取该话题所有关注着
IPage
<
TopicFollow
>
pages
=
new
Page
<>(
page
,
size
);
QueryWrapper
<
TopicFollow
>
queryWrapper
=
new
QueryWrapper
<>();
queryWrapper
.
eq
(
"topic_id"
,
topicId
);
IPage
<
TopicFollow
>
page1
=
iTopicFollowService
.
page
(
pages
,
queryWrapper
);
//2. 通过用户id获取用户详情
IPage
<
User
>
page2
=
new
Page
<>(
page
,
size
);
QueryWrapper
<
User
>
queryWrapper1
=
new
QueryWrapper
<>();
queryWrapper
.
eq
(
"user_id"
,
page1
.
getRecords
());
//3. 分页返回
return
iUserService
.
page
(
page2
,
queryWrapper1
);
public
IPage
<
User
>
getTopicsFollower
(
Integer
pageNumber
,
Integer
pageSize
,
String
topicId
)
{
// 1. 通过话题id获取该话题所有关注着
// 设置分页信息
IPage
<
TopicFollow
>
page
=
new
Page
<>(
pageNumber
,
pageSize
);
// 2.查询TopicFollow
QueryWrapper
<
TopicFollow
>
topicFollowQueryWrapper
=
new
QueryWrapper
<>();
topicFollowQueryWrapper
.
eq
(
"topic_id"
,
topicId
);
IPage
<
TopicFollow
>
topicFollowPage
=
topicFollowService
.
page
(
page
,
topicFollowQueryWrapper
);
// 获取查询到的userId
List
<
String
>
followerIds
=
topicFollowPage
.
getRecords
().
stream
()
.
map
(
TopicFollow:
:
getUserId
)
.
collect
(
Collectors
.
toList
());
// 3. 通过用户id批量查询用户
List
<
User
>
followers
=
userService
.
listByIds
(
followerIds
);
// 4.去除敏感信息
followers
.
stream
()
.
forEach
(
user
->
{
user
.
setMobile
(
null
);
user
.
setWxNumber
(
null
);
user
.
setQqNumber
(
null
);
});
// 5.构造分页结果
IPage
<
User
>
userPage
=
new
Page
<>();
userPage
.
setSize
(
topicFollowPage
.
getSize
());
userPage
.
setCurrent
(
topicFollowPage
.
getCurrent
());
userPage
.
setPages
(
topicFollowPage
.
getPages
());
userPage
.
setTotal
(
topicFollowPage
.
getTotal
());
userPage
.
setRecords
(
followers
);
return
userPage
;
}
...
...
src/main/resources/application.yml
View file @
80c24924
...
...
@@ -3,7 +3,7 @@ spring:
driver-class-name
:
com.mysql.cj.jdbc.Driver
url
:
jdbc:mysql://127.0.0.1:3306/beyond_clouds?useUnicode=true&characterEncoding=UTF-8&useSSL=false&allowPublicKeyRetrieval=true
username
:
root
password
:
password
password
:
100Centa30821%mysql
swagger
:
enable
:
true
...
...
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