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
fe724e60
Commit
fe724e60
authored
Feb 08, 2020
by
胡学良
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
相关回答
parent
3be4b2ff
Show whitespace changes
Inline
Side-by-side
Showing
6 changed files
with
80 additions
and
2 deletions
+80
-2
src/main/java/cn/meteor/beyondclouds/modules/question/api/QuestionApi.java
+13
-0
src/main/java/cn/meteor/beyondclouds/modules/question/service/IQuestionService.java
+11
-0
src/main/java/cn/meteor/beyondclouds/modules/question/service/IQuestionTagService.java
+9
-0
src/main/java/cn/meteor/beyondclouds/modules/question/service/impl/QuestionServiceImpl.java
+31
-0
src/main/java/cn/meteor/beyondclouds/modules/question/service/impl/QuestionTagServiceImpl.java
+15
-1
src/main/resources/application.yml
+1
-1
No files found.
src/main/java/cn/meteor/beyondclouds/modules/question/api/QuestionApi.java
View file @
fe724e60
...
...
@@ -255,5 +255,18 @@ public class QuestionApi {
return
Response
.
success
(
questionPageVO
);
}
@Anonymous
@ApiOperation
(
"相关问答"
)
@GetMapping
(
"/question/{questionId}/recommends"
)
public
Response
<
PageVO
<
Question
>>
questionRecommends
(
@Valid
PageForm
pageForm
,
@PathVariable
(
"questionId"
)
String
questionId
)
{
try
{
IPage
<
Question
>
questionPage
=
questionService
.
questionRecommends
(
pageForm
.
getPage
(),
pageForm
.
getSize
(),
questionId
);
PageVO
<
Question
>
questionPageVO
=
new
PageVO
<>(
questionPage
);
return
Response
.
success
(
questionPageVO
);
}
catch
(
QuestionServiceException
e
)
{
e
.
printStackTrace
();
return
Response
.
error
(
e
);
}
}
}
src/main/java/cn/meteor/beyondclouds/modules/question/service/IQuestionService.java
View file @
fe724e60
...
...
@@ -93,4 +93,15 @@ public interface IQuestionService extends IService<Question> {
*/
IPage
<
Question
>
getHotsQuestionsPage
(
Integer
pageNumber
,
Integer
pageSize
);
/**
* 相关问答
* @param pageNumber 页数
* @param pageSize 页面大小
* @param questionId 问题ID
* @throws QuestionServiceException 问题业务异常
* @return 相关问答
*/
IPage
<
Question
>
questionRecommends
(
Integer
pageNumber
,
Integer
pageSize
,
String
questionId
)
throws
QuestionServiceException
;
}
src/main/java/cn/meteor/beyondclouds/modules/question/service/IQuestionTagService.java
View file @
fe724e60
package
cn
.
meteor
.
beyondclouds
.
modules
.
question
.
service
;
import
cn.meteor.beyondclouds.modules.question.entity.Question
;
import
cn.meteor.beyondclouds.modules.question.entity.QuestionTag
;
import
cn.meteor.beyondclouds.modules.question.exception.QuestionTagServiceException
;
import
cn.meteor.beyondclouds.modules.tag.entity.Tag
;
import
com.baomidou.mybatisplus.core.metadata.IPage
;
import
com.baomidou.mybatisplus.extension.service.IService
;
import
java.util.HashSet
;
...
...
@@ -26,4 +28,11 @@ public interface IQuestionTagService extends IService<QuestionTag> {
* @throws QuestionTagServiceException 问题业务异常
*/
List
<
Tag
>
getQuestionTags
(
String
questionId
)
throws
QuestionTagServiceException
;
/**
* 根据标签ID集合查询相关问题
* @param tagIds 标签ID集合
* @return 相关问题ID
*/
List
<
String
>
getQuestionsByTagIds
(
List
<
String
>
tagIds
);
}
src/main/java/cn/meteor/beyondclouds/modules/question/service/impl/QuestionServiceImpl.java
View file @
fe724e60
...
...
@@ -32,6 +32,7 @@ import org.springframework.util.StringUtils;
import
java.util.ArrayList
;
import
java.util.List
;
import
java.util.stream.Collectors
;
import
java.util.stream.Stream
;
/**
* <p>
...
...
@@ -418,4 +419,34 @@ public class QuestionServiceImpl extends ServiceImpl<QuestionMapper, Question> i
questionTagService
.
remove
(
questionTagQueryWrapper
);
}
@Override
public
IPage
<
Question
>
questionRecommends
(
Integer
pageNumber
,
Integer
pageSize
,
String
questionId
)
throws
QuestionServiceException
{
//1.查询该问题是否存在
Question
question
=
getById
(
questionId
);
if
(
null
==
question
)
{
throw
new
QuestionServiceException
(
QuestionErrorCode
.
QUESTION_NOT_FOUND
);
}
IPage
<
Question
>
page
=
new
Page
<>(
pageNumber
,
pageSize
);
//2.得到问题对应的tagIds
List
<
String
>
tagIds
=
questionTagService
.
list
(
QuestionUtils
.
getWrapper
(
"question_id"
,
question
.
getQuestionId
()))
.
stream
().
map
(
QuestionTag:
:
getTagId
).
collect
(
Collectors
.
toList
());
//如果问题引用标签不为空,则通过tagIds得到相关问答,否则,直接返回page
if
(!
CollectionUtils
.
isEmpty
(
tagIds
))
{
//得到相关问答的问题ID
List
<
String
>
questionIds
=
questionTagService
.
getQuestionsByTagIds
(
tagIds
);
//通过问题ID得到问题的具体信息
QueryWrapper
<
Question
>
questionQueryWrapper
=
new
QueryWrapper
<>();
questionQueryWrapper
.
in
(
"q.question_id"
,
questionIds
)
.
orderByDesc
(
"q.create_time"
);
return
questionMapper
.
selectPageWithTags
(
page
,
questionQueryWrapper
);
}
else
{
return
page
;
}
}
}
src/main/java/cn/meteor/beyondclouds/modules/question/service/impl/QuestionTagServiceImpl.java
View file @
fe724e60
...
...
@@ -4,12 +4,16 @@ import cn.meteor.beyondclouds.modules.question.entity.Question;
import
cn.meteor.beyondclouds.modules.question.entity.QuestionTag
;
import
cn.meteor.beyondclouds.modules.question.enums.QuestionErrorCode
;
import
cn.meteor.beyondclouds.modules.question.exception.QuestionTagServiceException
;
import
cn.meteor.beyondclouds.modules.question.mapper.QuestionMapper
;
import
cn.meteor.beyondclouds.modules.question.mapper.QuestionTagMapper
;
import
cn.meteor.beyondclouds.modules.question.service.IQuestionService
;
import
cn.meteor.beyondclouds.modules.question.service.IQuestionTagService
;
import
cn.meteor.beyondclouds.modules.question.util.QuestionUtils
;
import
cn.meteor.beyondclouds.modules.tag.entity.Tag
;
import
cn.meteor.beyondclouds.modules.tag.service.ITagService
;
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
;
...
...
@@ -35,9 +39,12 @@ public class QuestionTagServiceImpl extends ServiceImpl<QuestionTagMapper, Quest
private
IQuestionService
questionService
;
private
QuestionMapper
questionMapper
;
@Autowired
public
QuestionTagServiceImpl
(
ITagService
tagService
)
{
public
QuestionTagServiceImpl
(
ITagService
tagService
,
QuestionMapper
questionMapper
)
{
this
.
tagService
=
tagService
;
this
.
questionMapper
=
questionMapper
;
}
@Autowired
...
...
@@ -69,4 +76,11 @@ public class QuestionTagServiceImpl extends ServiceImpl<QuestionTagMapper, Quest
return
tagService
.
listByIds
(
tagIds
);
}
}
@Override
public
List
<
String
>
getQuestionsByTagIds
(
List
<
String
>
tagIds
)
{
QueryWrapper
<
QuestionTag
>
questionTagQueryWrapper
=
new
QueryWrapper
<>();
questionTagQueryWrapper
.
in
(
"tag_id"
,
tagIds
);
return
list
(
questionTagQueryWrapper
).
stream
().
map
(
QuestionTag:
:
getQuestionId
).
collect
(
Collectors
.
toList
());
}
}
src/main/resources/application.yml
View file @
fe724e60
...
...
@@ -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
:
1
00Centa30821%mysql
password
:
1
97442
mail
:
host
:
smtp.163.com
username
:
13546386889@163.com
...
...
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