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
5c16d663
Commit
5c16d663
authored
Feb 01, 2020
by
胡学良
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
问答标签、列表展示、发布回复
parent
75356962
Hide whitespace changes
Inline
Side-by-side
Showing
13 changed files
with
416 additions
and
24 deletions
+416
-24
src/main/java/cn/meteor/beyondclouds/modules/question/api/QuestionApi.java
+100
-3
src/main/java/cn/meteor/beyondclouds/modules/question/api/QuestionReply.java
+50
-0
src/main/java/cn/meteor/beyondclouds/modules/question/enums/QuestionReplyErrorCode.java
+29
-0
src/main/java/cn/meteor/beyondclouds/modules/question/enums/QuestionTagErrorCode.java
+29
-0
src/main/java/cn/meteor/beyondclouds/modules/question/exception/QuestionReplyServiceException.java
+18
-0
src/main/java/cn/meteor/beyondclouds/modules/question/exception/QuestionTagServiceException.java
+18
-0
src/main/java/cn/meteor/beyondclouds/modules/question/service/IQuestionReplyService.java
+8
-0
src/main/java/cn/meteor/beyondclouds/modules/question/service/IQuestionService.java
+32
-2
src/main/java/cn/meteor/beyondclouds/modules/question/service/IQuestionTagService.java
+10
-0
src/main/java/cn/meteor/beyondclouds/modules/question/service/impl/QuestionReplyServiceImpl.java
+31
-0
src/main/java/cn/meteor/beyondclouds/modules/question/service/impl/QuestionServiceImpl.java
+34
-18
src/main/java/cn/meteor/beyondclouds/modules/question/service/impl/QuestionTagServiceImpl.java
+34
-1
src/main/java/cn/meteor/beyondclouds/modules/question/vo/PageVO.java
+23
-0
No files found.
src/main/java/cn/meteor/beyondclouds/modules/question/api/QuestionApi.java
View file @
5c16d663
package
cn
.
meteor
.
beyondclouds
.
modules
.
question
.
api
;
package
cn
.
meteor
.
beyondclouds
.
modules
.
question
.
api
;
import
cn.meteor.beyondclouds.common.form.PageForm
;
import
cn.meteor.beyondclouds.core.annotation.Anonymous
;
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.bean.Subject
;
import
cn.meteor.beyondclouds.core.bean.Subject
;
import
cn.meteor.beyondclouds.modules.question.bean.QuestionDetails
;
import
cn.meteor.beyondclouds.modules.question.bean.QuestionDetails
;
import
cn.meteor.beyondclouds.modules.question.entity.Question
;
import
cn.meteor.beyondclouds.modules.question.entity.Question
;
import
cn.meteor.beyondclouds.modules.question.entity.QuestionReply
;
import
cn.meteor.beyondclouds.modules.question.exception.QuestionServiceException
;
import
cn.meteor.beyondclouds.modules.question.exception.QuestionServiceException
;
import
cn.meteor.beyondclouds.modules.question.exception.QuestionTagServiceException
;
import
cn.meteor.beyondclouds.modules.question.form.QuestionForm
;
import
cn.meteor.beyondclouds.modules.question.form.QuestionForm
;
import
cn.meteor.beyondclouds.modules.question.service.IQuestionService
;
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.question.util.QuestionUtils
;
import
cn.meteor.beyondclouds.modules.question.vo.PageVO
;
import
com.baomidou.mybatisplus.core.metadata.IPage
;
import
com.baomidou.mybatisplus.extension.plugins.pagination.Page
;
import
io.swagger.annotations.Api
;
import
io.swagger.annotations.Api
;
import
io.swagger.annotations.ApiOperation
;
import
io.swagger.annotations.ApiOperation
;
import
org.springframework.beans.BeanUtils
;
import
org.springframework.beans.BeanUtils
;
...
@@ -31,9 +38,12 @@ public class QuestionApi {
...
@@ -31,9 +38,12 @@ public class QuestionApi {
private
IQuestionService
questionService
;
private
IQuestionService
questionService
;
private
IQuestionTagService
questionTagService
;
@Autowired
@Autowired
public
QuestionApi
(
IQuestionService
questionService
)
{
public
QuestionApi
(
IQuestionService
questionService
,
IQuestionTagService
questionTagService
)
{
this
.
questionService
=
questionService
;
this
.
questionService
=
questionService
;
this
.
questionTagService
=
questionTagService
;
}
}
/**
/**
...
@@ -136,16 +146,103 @@ public class QuestionApi {
...
@@ -136,16 +146,103 @@ public class QuestionApi {
@Anonymous
@Anonymous
@ApiOperation
(
"问题详情"
)
@ApiOperation
(
"问题详情"
)
@GetMapping
(
"/question/{questionId}"
)
@GetMapping
(
"/question/{questionId}"
)
public
Response
questionDetails
(
@PathVariable
(
"questionId"
)
String
questionId
){
public
Response
<
QuestionDetails
>
questionDetails
(
@PathVariable
(
"questionId"
)
String
questionId
){
QuestionDetails
questionDetails
=
null
;
QuestionDetails
questionDetails
=
null
;
try
{
try
{
questionDetails
=
questionService
.
questionDetails
(
questionId
);
questionDetails
=
questionService
.
questionDetails
(
questionId
);
return
Response
.
success
(
questionDetails
);
return
Response
.
success
(
questionDetails
);
}
catch
(
QuestionServiceException
e
)
{
}
catch
(
QuestionServiceException
|
QuestionTagServiceException
e
)
{
e
.
printStackTrace
();
return
Response
.
error
(
e
);
}
}
/**
* 得到问题引用标签
* @param questionId 问题ID
* @return 问题引用标签
*/
@Anonymous
@ApiOperation
((
"得到问题的引用标签"
))
@GetMapping
(
"/question/{questionId}/tags"
)
public
Response
<
String
>
questionTags
(
@PathVariable
(
"questionId"
)
String
questionId
)
{
try
{
String
tags
=
questionTagService
.
getQuestionTags
(
questionId
);
return
Response
.
success
(
tags
);
}
catch
(
QuestionTagServiceException
e
)
{
e
.
printStackTrace
();
e
.
printStackTrace
();
return
Response
.
error
(
e
);
return
Response
.
error
(
e
);
}
}
}
}
/**
* 问答列表
* @param pageForm 分页表单
* @return 问答列表
*/
@Anonymous
@ApiOperation
(
"问答列表"
)
@GetMapping
(
"/questions"
)
public
Response
<
PageVO
<
Question
>>
getQuestions
(
@Valid
PageForm
pageForm
)
{
//获取列表并返回
IPage
<
Question
>
questionPage
=
questionService
.
getQuestionPage
(
pageForm
.
getPage
(),
pageForm
.
getSize
());
PageVO
<
Question
>
questionPageVO
=
new
PageVO
<>();
questionPageVO
.
setTotalPage
(
questionPage
.
getPages
());
questionPageVO
.
setDataList
(
questionPage
.
getRecords
());
return
Response
.
success
(
questionPageVO
);
}
/**
* 我创建的问答列表
* @param pageForm 分页表单
* @param subject 访问者信息
* @return 我创建的问答列表
*/
@ApiOperation
(
"我创建的问答列表"
)
@GetMapping
(
"/my/questions"
)
public
Response
<
PageVO
<
Question
>>
getMyQuestions
(
@Valid
PageForm
pageForm
,
@CurrentSubject
Subject
subject
)
{
//获取我的列表并返回
IPage
<
Question
>
myQuestionPage
=
questionService
.
getUserQuestionPage
(
pageForm
.
getPage
(),
pageForm
.
getSize
(),
(
String
)
subject
.
getId
());
PageVO
<
Question
>
questionPageVO
=
new
PageVO
<>();
questionPageVO
.
setTotalPage
(
myQuestionPage
.
getTotal
());
questionPageVO
.
setDataList
(
myQuestionPage
.
getRecords
());
return
Response
.
success
(
questionPageVO
);
}
/**
* 我参与的问答列表
* @param pageForm 分页表单
* @param subject 访问者信息
* @return 我参与的问答列表
*/
@ApiOperation
(
"我参与的问答列表"
)
@GetMapping
(
"/my/question/participated"
)
public
Response
<
PageVO
<
QuestionReply
>>
getMyParticipateQuestions
(
@Valid
PageForm
pageForm
,
@CurrentSubject
Subject
subject
)
{
//获取我的列表并返回
IPage
<
QuestionReply
>
userParticipateQuestionReplyPage
=
questionService
.
getUserParticipateQuestionReplyPage
(
pageForm
.
getPage
(),
pageForm
.
getSize
(),
(
String
)
subject
.
getId
());
PageVO
<
QuestionReply
>
questionReplyPageVO
=
new
PageVO
<>();
questionReplyPageVO
.
setTotalPage
(
userParticipateQuestionReplyPage
.
getTotal
());
questionReplyPageVO
.
setDataList
(
userParticipateQuestionReplyPage
.
getRecords
());
return
Response
.
success
(
questionReplyPageVO
);
}
/**
* 用户创建的问答列表
* @param pageForm 分页表单
* @param userId 用户ID
* @return 用户创建的问答列表
*/
@Anonymous
@ApiOperation
(
"用户创建的问答列表"
)
@GetMapping
(
"/user/{userId}/questions"
)
public
Response
<
PageVO
<
Question
>>
getOthersQuestions
(
@Valid
PageForm
pageForm
,
@PathVariable
(
"userId"
)
String
userId
)
{
//获取别人的问答列表并返回
IPage
<
Question
>
questionPage
=
questionService
.
getUserQuestionPage
(
pageForm
.
getPage
(),
pageForm
.
getSize
(),
userId
);
PageVO
<
Question
>
questionPageVO
=
new
PageVO
<>();
questionPageVO
.
setTotalPage
(
questionPage
.
getTotal
());
questionPageVO
.
setDataList
(
questionPage
.
getRecords
());
return
Response
.
success
(
questionPageVO
);
}
}
}
src/main/java/cn/meteor/beyondclouds/modules/question/api/QuestionReply.java
0 → 100644
View file @
5c16d663
package
cn
.
meteor
.
beyondclouds
.
modules
.
question
.
api
;
import
cn.meteor.beyondclouds.core.annotation.CurrentSubject
;
import
cn.meteor.beyondclouds.core.api.Response
;
import
cn.meteor.beyondclouds.core.bean.Subject
;
import
cn.meteor.beyondclouds.modules.question.exception.QuestionReplyServiceException
;
import
cn.meteor.beyondclouds.modules.question.service.IQuestionReplyService
;
import
io.swagger.annotations.Api
;
import
io.swagger.annotations.ApiOperation
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.web.bind.annotation.PathVariable
;
import
org.springframework.web.bind.annotation.PostMapping
;
import
org.springframework.web.bind.annotation.RequestMapping
;
import
org.springframework.web.bind.annotation.RestController
;
/**
* @author 胡学良
* @since 2020/2/1
*/
@Api
(
tags
=
"问题回复Api"
)
@RestController
@RequestMapping
(
"/api"
)
public
class
QuestionReply
{
private
IQuestionReplyService
questionReplyService
;
@Autowired
public
QuestionReply
(
IQuestionReplyService
questionReplyService
)
{
this
.
questionReplyService
=
questionReplyService
;
}
/**
* 回复问题
* @param questionId 问题ID
* @param reply 回复内容
* @param subject 访问者信息
* @return default
*/
@ApiOperation
(
"发布回复"
)
@PostMapping
(
"/question/{questionId}/reply"
)
public
Response
replyQuestion
(
@PathVariable
(
"questionId"
)
String
questionId
,
String
reply
,
@CurrentSubject
Subject
subject
){
try
{
questionReplyService
.
replyQuestion
(
questionId
,
reply
,
(
String
)
subject
.
getId
());
return
Response
.
success
();
}
catch
(
QuestionReplyServiceException
e
)
{
e
.
printStackTrace
();
return
Response
.
error
(
e
);
}
}
}
src/main/java/cn/meteor/beyondclouds/modules/question/enums/QuestionReplyErrorCode.java
0 → 100644
View file @
5c16d663
package
cn
.
meteor
.
beyondclouds
.
modules
.
question
.
enums
;
import
cn.meteor.beyondclouds.core.IErrorCode
;
/**
* @author 胡学良
* @since 2020/2/1
*/
public
enum
QuestionReplyErrorCode
implements
IErrorCode
{
;
private
long
code
;
private
String
msg
;
QuestionReplyErrorCode
(
long
code
,
String
msg
)
{
this
.
code
=
code
;
this
.
msg
=
msg
;
}
@Override
public
long
code
()
{
return
0
;
}
@Override
public
String
msg
()
{
return
null
;
}
}
src/main/java/cn/meteor/beyondclouds/modules/question/enums/QuestionTagErrorCode.java
0 → 100644
View file @
5c16d663
package
cn
.
meteor
.
beyondclouds
.
modules
.
question
.
enums
;
import
cn.meteor.beyondclouds.core.IErrorCode
;
/**
* @author 胡学良
* @since 2020/2/1
*/
public
enum
QuestionTagErrorCode
implements
IErrorCode
{
;
private
long
code
;
private
String
msg
;
QuestionTagErrorCode
(
long
code
,
String
msg
)
{
this
.
code
=
code
;
this
.
msg
=
msg
;
}
@Override
public
long
code
()
{
return
0
;
}
@Override
public
String
msg
()
{
return
null
;
}
}
src/main/java/cn/meteor/beyondclouds/modules/question/exception/QuestionReplyServiceException.java
0 → 100644
View file @
5c16d663
package
cn
.
meteor
.
beyondclouds
.
modules
.
question
.
exception
;
import
cn.meteor.beyondclouds.core.IErrorCode
;
import
cn.meteor.beyondclouds.core.exception.ServiceException
;
/**
* @author 胡学良
* @since 2020/2/1
*/
public
class
QuestionReplyServiceException
extends
ServiceException
{
public
QuestionReplyServiceException
(
long
errorCode
,
String
errorMsg
)
{
super
(
errorCode
,
errorMsg
);
}
public
QuestionReplyServiceException
(
IErrorCode
errorCode
)
{
super
(
errorCode
);
}
}
src/main/java/cn/meteor/beyondclouds/modules/question/exception/QuestionTagServiceException.java
0 → 100644
View file @
5c16d663
package
cn
.
meteor
.
beyondclouds
.
modules
.
question
.
exception
;
import
cn.meteor.beyondclouds.core.IErrorCode
;
import
cn.meteor.beyondclouds.core.exception.ServiceException
;
/**
* @author 胡学良
* @since 2020/2/1
*/
public
class
QuestionTagServiceException
extends
ServiceException
{
public
QuestionTagServiceException
(
long
errorCode
,
String
errorMsg
)
{
super
(
errorCode
,
errorMsg
);
}
public
QuestionTagServiceException
(
IErrorCode
errorCode
)
{
super
(
errorCode
);
}
}
src/main/java/cn/meteor/beyondclouds/modules/question/service/IQuestionReplyService.java
View file @
5c16d663
package
cn
.
meteor
.
beyondclouds
.
modules
.
question
.
service
;
package
cn
.
meteor
.
beyondclouds
.
modules
.
question
.
service
;
import
cn.meteor.beyondclouds.modules.question.entity.QuestionReply
;
import
cn.meteor.beyondclouds.modules.question.entity.QuestionReply
;
import
cn.meteor.beyondclouds.modules.question.exception.QuestionReplyServiceException
;
import
com.baomidou.mybatisplus.extension.service.IService
;
import
com.baomidou.mybatisplus.extension.service.IService
;
/**
/**
...
@@ -13,4 +14,11 @@ import com.baomidou.mybatisplus.extension.service.IService;
...
@@ -13,4 +14,11 @@ import com.baomidou.mybatisplus.extension.service.IService;
*/
*/
public
interface
IQuestionReplyService
extends
IService
<
QuestionReply
>
{
public
interface
IQuestionReplyService
extends
IService
<
QuestionReply
>
{
/**
* 回复问题
* @param questionId 问题ID
* @param reply 回复内容
* @param userId 用户ID
*/
void
replyQuestion
(
String
questionId
,
String
reply
,
String
userId
)
throws
QuestionReplyServiceException
;
}
}
src/main/java/cn/meteor/beyondclouds/modules/question/service/IQuestionService.java
View file @
5c16d663
...
@@ -2,8 +2,11 @@ package cn.meteor.beyondclouds.modules.question.service;
...
@@ -2,8 +2,11 @@ package cn.meteor.beyondclouds.modules.question.service;
import
cn.meteor.beyondclouds.modules.question.bean.QuestionDetails
;
import
cn.meteor.beyondclouds.modules.question.bean.QuestionDetails
;
import
cn.meteor.beyondclouds.modules.question.entity.Question
;
import
cn.meteor.beyondclouds.modules.question.entity.Question
;
import
cn.meteor.beyondclouds.modules.question.entity.QuestionExt
;
import
cn.meteor.beyondclouds.modules.question.entity.QuestionReply
;
import
cn.meteor.beyondclouds.modules.question.exception.QuestionReplyServiceException
;
import
cn.meteor.beyondclouds.modules.question.exception.QuestionServiceException
;
import
cn.meteor.beyondclouds.modules.question.exception.QuestionServiceException
;
import
cn.meteor.beyondclouds.modules.question.exception.QuestionTagServiceException
;
import
com.baomidou.mybatisplus.core.metadata.IPage
;
import
com.baomidou.mybatisplus.extension.service.IService
;
import
com.baomidou.mybatisplus.extension.service.IService
;
import
java.util.HashSet
;
import
java.util.HashSet
;
...
@@ -51,7 +54,34 @@ public interface IQuestionService extends IService<Question> {
...
@@ -51,7 +54,34 @@ public interface IQuestionService extends IService<Question> {
* @param questionId 问题ID
* @param questionId 问题ID
* @return 问题详情
* @return 问题详情
* @throws QuestionServiceException 问题业务异常
* @throws QuestionServiceException 问题业务异常
* @throws QuestionTagServiceException 问题标签业务异常
*/
*/
QuestionDetails
questionDetails
(
String
questionId
)
throws
QuestionServiceException
;
QuestionDetails
questionDetails
(
String
questionId
)
throws
QuestionServiceException
,
QuestionTagServiceException
;
/**
* 获取问答列表
* @param pageNumber 页数
* @param pageSize 页面大小
* @return 分页对象
*/
IPage
<
Question
>
getQuestionPage
(
Integer
pageNumber
,
Integer
pageSize
);
/**
* 获取用户的问答列表
* @param pageNumber 页数
* @param pageSize 页面大小
* @param userId 用户ID
* @return 分页对象
*/
IPage
<
Question
>
getUserQuestionPage
(
Integer
pageNumber
,
Integer
pageSize
,
String
userId
);
/**
* 获取用户参与的问答列表
* @param pageNumber 页数
* @param pageSize 页面大小
* @param userId 用户ID
* @return 分页对象
*/
IPage
<
QuestionReply
>
getUserParticipateQuestionReplyPage
(
Integer
pageNumber
,
Integer
pageSize
,
String
userId
);
}
}
src/main/java/cn/meteor/beyondclouds/modules/question/service/IQuestionTagService.java
View file @
5c16d663
package
cn
.
meteor
.
beyondclouds
.
modules
.
question
.
service
;
package
cn
.
meteor
.
beyondclouds
.
modules
.
question
.
service
;
import
cn.meteor.beyondclouds.modules.question.entity.QuestionTag
;
import
cn.meteor.beyondclouds.modules.question.entity.QuestionTag
;
import
cn.meteor.beyondclouds.modules.question.exception.QuestionServiceException
;
import
cn.meteor.beyondclouds.modules.question.exception.QuestionTagServiceException
;
import
com.baomidou.mybatisplus.extension.service.IService
;
import
com.baomidou.mybatisplus.extension.service.IService
;
import
java.util.HashSet
;
import
java.util.HashSet
;
...
@@ -22,4 +24,12 @@ public interface IQuestionTagService extends IService<QuestionTag> {
...
@@ -22,4 +24,12 @@ public interface IQuestionTagService extends IService<QuestionTag> {
*/
*/
void
saveQuestionTag
(
HashSet
<
String
>
tags
,
String
questionId
);
void
saveQuestionTag
(
HashSet
<
String
>
tags
,
String
questionId
);
/**
* 得到问题引用标签
* @param questionId 问题ID
* @return 问题引用标签
* @throws QuestionTagServiceException 问题业务异常
*/
String
getQuestionTags
(
String
questionId
)
throws
QuestionTagServiceException
;
}
}
src/main/java/cn/meteor/beyondclouds/modules/question/service/impl/QuestionReplyServiceImpl.java
View file @
5c16d663
package
cn
.
meteor
.
beyondclouds
.
modules
.
question
.
service
.
impl
;
package
cn
.
meteor
.
beyondclouds
.
modules
.
question
.
service
.
impl
;
import
cn.meteor.beyondclouds.modules.question.entity.Question
;
import
cn.meteor.beyondclouds.modules.question.entity.QuestionReply
;
import
cn.meteor.beyondclouds.modules.question.entity.QuestionReply
;
import
cn.meteor.beyondclouds.modules.question.enums.QuestionErrorCode
;
import
cn.meteor.beyondclouds.modules.question.exception.QuestionReplyServiceException
;
import
cn.meteor.beyondclouds.modules.question.mapper.QuestionReplyMapper
;
import
cn.meteor.beyondclouds.modules.question.mapper.QuestionReplyMapper
;
import
cn.meteor.beyondclouds.modules.question.service.IQuestionReplyService
;
import
cn.meteor.beyondclouds.modules.question.service.IQuestionReplyService
;
import
cn.meteor.beyondclouds.modules.question.service.IQuestionService
;
import
com.baomidou.mybatisplus.extension.service.impl.ServiceImpl
;
import
com.baomidou.mybatisplus.extension.service.impl.ServiceImpl
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.stereotype.Service
;
import
org.springframework.stereotype.Service
;
/**
/**
...
@@ -17,4 +22,30 @@ import org.springframework.stereotype.Service;
...
@@ -17,4 +22,30 @@ import org.springframework.stereotype.Service;
@Service
@Service
public
class
QuestionReplyServiceImpl
extends
ServiceImpl
<
QuestionReplyMapper
,
QuestionReply
>
implements
IQuestionReplyService
{
public
class
QuestionReplyServiceImpl
extends
ServiceImpl
<
QuestionReplyMapper
,
QuestionReply
>
implements
IQuestionReplyService
{
private
IQuestionService
questionService
;
@Autowired
public
void
setQuestionService
(
IQuestionService
questionService
)
{
this
.
questionService
=
questionService
;
}
@Override
public
void
replyQuestion
(
String
questionId
,
String
reply
,
String
userId
)
throws
QuestionReplyServiceException
{
//1.判断问题是否存在
Question
question
=
questionService
.
getById
(
questionId
);
//如果问题不存在,则抛出异常
if
(
null
==
question
)
{
throw
new
QuestionReplyServiceException
(
QuestionErrorCode
.
QUESTION_NOT_FOUND
);
}
//2.保存回复信息
QuestionReply
questionReply
=
new
QuestionReply
();
questionReply
.
setQuestionId
(
questionId
);
questionReply
.
setReply
(
reply
);
questionReply
.
setUserId
(
userId
);
//默认该回复未被采纳
questionReply
.
setReplyStatus
(
0
);
save
(
questionReply
);
}
}
}
src/main/java/cn/meteor/beyondclouds/modules/question/service/impl/QuestionServiceImpl.java
View file @
5c16d663
...
@@ -4,13 +4,15 @@ import cn.meteor.beyondclouds.modules.question.bean.QuestionDetails;
...
@@ -4,13 +4,15 @@ import cn.meteor.beyondclouds.modules.question.bean.QuestionDetails;
import
cn.meteor.beyondclouds.modules.question.entity.*
;
import
cn.meteor.beyondclouds.modules.question.entity.*
;
import
cn.meteor.beyondclouds.modules.question.enums.QuestionErrorCode
;
import
cn.meteor.beyondclouds.modules.question.enums.QuestionErrorCode
;
import
cn.meteor.beyondclouds.modules.question.exception.QuestionServiceException
;
import
cn.meteor.beyondclouds.modules.question.exception.QuestionServiceException
;
import
cn.meteor.beyondclouds.modules.question.exception.QuestionTagServiceException
;
import
cn.meteor.beyondclouds.modules.question.mapper.QuestionMapper
;
import
cn.meteor.beyondclouds.modules.question.mapper.QuestionMapper
;
import
cn.meteor.beyondclouds.modules.question.service.*
;
import
cn.meteor.beyondclouds.modules.question.service.*
;
import
cn.meteor.beyondclouds.modules.question.util.QuestionUtils
;
import
cn.meteor.beyondclouds.modules.question.util.QuestionUtils
;
import
cn.meteor.beyondclouds.modules.tag.service.ITagService
;
import
cn.meteor.beyondclouds.modules.tag.service.ITagService
;
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.extension.conditions.update.LambdaUpdateChainWrapper
;
import
com.baomidou.mybatisplus.core.metadata.IPage
;
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.BeanUtils
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.beans.factory.annotation.Autowired
;
...
@@ -19,7 +21,6 @@ import org.springframework.transaction.annotation.Transactional;
...
@@ -19,7 +21,6 @@ import org.springframework.transaction.annotation.Transactional;
import
org.springframework.util.StringUtils
;
import
org.springframework.util.StringUtils
;
import
java.util.HashSet
;
import
java.util.HashSet
;
import
java.util.Iterator
;
import
java.util.List
;
import
java.util.List
;
/**
/**
...
@@ -45,20 +46,25 @@ public class QuestionServiceImpl extends ServiceImpl<QuestionMapper, Question> i
...
@@ -45,20 +46,25 @@ public class QuestionServiceImpl extends ServiceImpl<QuestionMapper, Question> i
private
IQuestionReplyCommentService
questionReplyCommentService
;
private
IQuestionReplyCommentService
questionReplyCommentService
;
private
ITagService
tagService
;
private
IQuestionCategoryService
questionCategoryService
;
private
IQuestionCategoryService
questionCategoryService
;
@Autowired
@Autowired
public
QuestionServiceImpl
(
IQuestionExtService
questionExtService
,
IQuestion
TagService
questionTagService
,
IQuestionReplyService
questionReplyService
,
IQuestionReplyCommentService
questionReplyCommentService
,
ITagService
tag
Service
,
IQuestionCategoryService
questionCategoryService
)
{
public
QuestionServiceImpl
(
IQuestionExtService
questionExtService
,
IQuestion
ReplyCommentService
questionReplyComment
Service
,
IQuestionCategoryService
questionCategoryService
)
{
this
.
questionExtService
=
questionExtService
;
this
.
questionExtService
=
questionExtService
;
this
.
questionTagService
=
questionTagService
;
this
.
questionReplyService
=
questionReplyService
;
this
.
questionReplyCommentService
=
questionReplyCommentService
;
this
.
questionReplyCommentService
=
questionReplyCommentService
;
this
.
tagService
=
tagService
;
this
.
questionCategoryService
=
questionCategoryService
;
this
.
questionCategoryService
=
questionCategoryService
;
}
}
@Autowired
public
void
setQuestionReplyService
(
IQuestionReplyService
questionReplyService
)
{
this
.
questionReplyService
=
questionReplyService
;
}
@Autowired
public
void
setQuestionTagService
(
IQuestionTagService
questionTagService
)
{
this
.
questionTagService
=
questionTagService
;
}
@Transactional
(
rollbackFor
=
Exception
.
class
)
@Transactional
(
rollbackFor
=
Exception
.
class
)
@Override
@Override
public
void
postQuestion
(
Question
question
,
String
questionDetail
,
HashSet
<
String
>
tags
)
throws
QuestionServiceException
{
public
void
postQuestion
(
Question
question
,
String
questionDetail
,
HashSet
<
String
>
tags
)
throws
QuestionServiceException
{
...
@@ -161,7 +167,7 @@ public class QuestionServiceImpl extends ServiceImpl<QuestionMapper, Question> i
...
@@ -161,7 +167,7 @@ public class QuestionServiceImpl extends ServiceImpl<QuestionMapper, Question> i
}
}
@Override
@Override
public
QuestionDetails
questionDetails
(
String
questionId
)
throws
QuestionServiceException
{
public
QuestionDetails
questionDetails
(
String
questionId
)
throws
QuestionServiceException
,
QuestionTagServiceException
{
//1.获取问题基本信息
//1.获取问题基本信息
Question
question
=
getById
(
questionId
);
Question
question
=
getById
(
questionId
);
...
@@ -174,15 +180,7 @@ public class QuestionServiceImpl extends ServiceImpl<QuestionMapper, Question> i
...
@@ -174,15 +180,7 @@ public class QuestionServiceImpl extends ServiceImpl<QuestionMapper, Question> i
QuestionExt
questionExt
=
questionExtService
.
getOne
(
QuestionUtils
.
getWrapper
(
"question_id"
,
questionId
));
QuestionExt
questionExt
=
questionExtService
.
getOne
(
QuestionUtils
.
getWrapper
(
"question_id"
,
questionId
));
//4.获取问题标签
//4.获取问题标签
List
<
QuestionTag
>
questionTags
=
questionTagService
.
list
(
QuestionUtils
.
getWrapper
(
"question_id"
,
questionId
));
String
tags
=
questionTagService
.
getQuestionTags
(
questionId
);
StringBuilder
stringBuilder
=
new
StringBuilder
();
stringBuilder
.
append
(
"["
);
for
(
QuestionTag
questionTag
:
questionTags
){
stringBuilder
.
append
(
tagService
.
getById
(
questionTag
.
getTagId
()).
getTagName
()+
","
);
}
stringBuilder
.
deleteCharAt
(
stringBuilder
.
length
()-
1
);
stringBuilder
.
append
(
"]"
);
String
tags
=
stringBuilder
.
toString
();
//5.生成问题详情对象
//5.生成问题详情对象
QuestionDetails
questionDetails
=
new
QuestionDetails
();
QuestionDetails
questionDetails
=
new
QuestionDetails
();
...
@@ -193,4 +191,22 @@ public class QuestionServiceImpl extends ServiceImpl<QuestionMapper, Question> i
...
@@ -193,4 +191,22 @@ public class QuestionServiceImpl extends ServiceImpl<QuestionMapper, Question> i
return
questionDetails
;
return
questionDetails
;
}
}
@Override
public
IPage
<
Question
>
getQuestionPage
(
Integer
pageNumber
,
Integer
pageSize
)
{
IPage
<
Question
>
page
=
new
Page
<>(
pageNumber
,
pageSize
);
return
page
(
page
);
}
@Override
public
IPage
<
Question
>
getUserQuestionPage
(
Integer
pageNumber
,
Integer
pageSize
,
String
userId
)
{
IPage
<
Question
>
page
=
new
Page
<>(
pageNumber
,
pageSize
);
return
page
(
page
,
QuestionUtils
.
getWrapper
(
"user_id"
,
userId
));
}
@Override
public
IPage
<
QuestionReply
>
getUserParticipateQuestionReplyPage
(
Integer
pageNumber
,
Integer
pageSize
,
String
userId
)
{
IPage
<
QuestionReply
>
page
=
new
Page
<>(
pageNumber
,
pageSize
);
return
questionReplyService
.
page
(
page
,
QuestionUtils
.
getWrapper
(
"user_id"
,
userId
));
}
}
}
src/main/java/cn/meteor/beyondclouds/modules/question/service/impl/QuestionTagServiceImpl.java
View file @
5c16d663
package
cn
.
meteor
.
beyondclouds
.
modules
.
question
.
service
.
impl
;
package
cn
.
meteor
.
beyondclouds
.
modules
.
question
.
service
.
impl
;
import
cn.meteor.beyondclouds.modules.question.entity.Question
;
import
cn.meteor.beyondclouds.modules.question.entity.QuestionTag
;
import
cn.meteor.beyondclouds.modules.question.entity.QuestionTag
;
import
cn.meteor.beyondclouds.modules.question.enums.QuestionErrorCode
;
import
cn.meteor.beyondclouds.modules.question.exception.QuestionServiceException
;
import
cn.meteor.beyondclouds.modules.question.exception.QuestionTagServiceException
;
import
cn.meteor.beyondclouds.modules.question.mapper.QuestionTagMapper
;
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.service.IQuestionTagService
;
import
cn.meteor.beyondclouds.modules.question.util.QuestionUtils
;
import
cn.meteor.beyondclouds.modules.tag.entity.Tag
;
import
cn.meteor.beyondclouds.modules.tag.entity.Tag
;
import
cn.meteor.beyondclouds.modules.tag.service.ITagService
;
import
cn.meteor.beyondclouds.modules.tag.service.ITagService
;
import
com.baomidou.mybatisplus.core.conditions.query.QueryWrapper
;
import
com.baomidou.mybatisplus.extension.service.impl.ServiceImpl
;
import
com.baomidou.mybatisplus.extension.service.impl.ServiceImpl
;
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
java.util.HashSet
;
import
java.util.HashSet
;
import
java.util.Iterator
;
import
java.util.Iterator
;
import
java.util.List
;
/**
/**
* <p>
* <p>
...
@@ -26,11 +32,18 @@ public class QuestionTagServiceImpl extends ServiceImpl<QuestionTagMapper, Quest
...
@@ -26,11 +32,18 @@ public class QuestionTagServiceImpl extends ServiceImpl<QuestionTagMapper, Quest
private
ITagService
tagService
;
private
ITagService
tagService
;
private
IQuestionService
questionService
;
@Autowired
@Autowired
public
QuestionTagServiceImpl
(
ITagService
tagService
)
{
public
QuestionTagServiceImpl
(
ITagService
tagService
)
{
this
.
tagService
=
tagService
;
this
.
tagService
=
tagService
;
}
}
@Autowired
public
void
setQuestionService
(
IQuestionService
questionService
)
{
this
.
questionService
=
questionService
;
}
@Override
@Override
public
void
saveQuestionTag
(
HashSet
<
String
>
tags
,
String
questionId
)
{
public
void
saveQuestionTag
(
HashSet
<
String
>
tags
,
String
questionId
)
{
Iterator
<
String
>
iterator
=
tags
.
iterator
();
Iterator
<
String
>
iterator
=
tags
.
iterator
();
...
@@ -47,5 +60,25 @@ public class QuestionTagServiceImpl extends ServiceImpl<QuestionTagMapper, Quest
...
@@ -47,5 +60,25 @@ public class QuestionTagServiceImpl extends ServiceImpl<QuestionTagMapper, Quest
}
}
}
}
@Override
public
String
getQuestionTags
(
String
questionId
)
throws
QuestionTagServiceException
{
//1.获取问题信息
Question
question
=
questionService
.
getById
(
questionId
);
//判断该问题是否存在
if
(
null
==
question
)
{
throw
new
QuestionTagServiceException
(
QuestionErrorCode
.
QUESTION_NOT_FOUND
);
}
//2.得到问题引用标签
List
<
QuestionTag
>
questionTags
=
list
(
QuestionUtils
.
getWrapper
(
"question_id"
,
questionId
));
StringBuilder
stringBuilder
=
new
StringBuilder
();
stringBuilder
.
append
(
"["
);
for
(
QuestionTag
questionTag
:
questionTags
){
stringBuilder
.
append
(
tagService
.
getById
(
questionTag
.
getTagId
()).
getTagName
()+
","
);
}
stringBuilder
.
deleteCharAt
(
stringBuilder
.
length
()-
1
);
stringBuilder
.
append
(
"]"
);
return
stringBuilder
.
toString
();
}
}
}
src/main/java/cn/meteor/beyondclouds/modules/question/vo/PageVO.java
0 → 100644
View file @
5c16d663
package
cn
.
meteor
.
beyondclouds
.
modules
.
question
.
vo
;
import
lombok.Data
;
import
java.util.List
;
/**
* @author 胡学良
* @since 2020/2/1
*/
@Data
public
class
PageVO
<
T
>
{
/**
* 总页数
*/
private
Long
totalPage
;
/**
* 数据
*/
private
List
<
T
>
dataList
;
}
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