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
7ba3d39f
Commit
7ba3d39f
authored
Feb 06, 2020
by
段启岩
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
完善问题表单校验
parent
3f9889ae
Show whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
42 additions
and
22 deletions
+42
-22
src/main/java/cn/meteor/beyondclouds/modules/question/api/QuestionApi.java
+14
-8
src/main/java/cn/meteor/beyondclouds/modules/question/form/QuestionForm.java
+16
-6
src/main/java/cn/meteor/beyondclouds/modules/question/service/impl/QuestionReplyCommentServiceImpl.java
+1
-1
src/main/java/cn/meteor/beyondclouds/modules/question/service/impl/QuestionServiceImpl.java
+11
-7
No files found.
src/main/java/cn/meteor/beyondclouds/modules/question/api/QuestionApi.java
View file @
7ba3d39f
...
...
@@ -6,12 +6,13 @@ 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.bean.Subject
;
import
cn.meteor.beyondclouds.core.validation.groups.InsertGroup
;
import
cn.meteor.beyondclouds.core.validation.groups.UpdateGroup
;
import
cn.meteor.beyondclouds.modules.question.bean.QuestionDetails
;
import
cn.meteor.beyondclouds.modules.question.entity.Question
;
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.QuestionUpdateForm
;
import
cn.meteor.beyondclouds.modules.question.service.IQuestionService
;
import
cn.meteor.beyondclouds.modules.question.service.IQuestionTagService
;
import
cn.meteor.beyondclouds.modules.question.util.QuestionUtils
;
...
...
@@ -21,7 +22,9 @@ import io.swagger.annotations.Api;
import
io.swagger.annotations.ApiOperation
;
import
org.springframework.beans.BeanUtils
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.util.CollectionUtils
;
import
org.springframework.validation.BindingResult
;
import
org.springframework.validation.annotation.Validated
;
import
org.springframework.web.bind.annotation.*
;
import
javax.validation.Valid
;
...
...
@@ -56,7 +59,7 @@ public class QuestionApi {
*/
@ApiOperation
(
"发布问题"
)
@PostMapping
(
"/question"
)
public
Response
postQuestion
(
@RequestBody
@Valid
QuestionForm
questionForm
,
BindingResult
result
,
@CurrentSubject
Subject
subject
){
public
Response
postQuestion
(
@RequestBody
@Valid
ated
(
InsertGroup
.
class
)
QuestionForm
questionForm
,
BindingResult
result
,
@CurrentSubject
Subject
subject
){
if
(
result
.
hasErrors
())
{
return
Response
.
fieldError
(
result
.
getFieldError
());
}
...
...
@@ -113,7 +116,7 @@ public class QuestionApi {
*/
@ApiOperation
(
"修改问题"
)
@PutMapping
(
"/question/{questionId}"
)
public
Response
modifyQuestion
(
@PathVariable
(
"questionId"
)
String
questionId
,
@RequestBody
@Valid
QuestionUpdate
Form
questionForm
,
BindingResult
result
,
@CurrentSubject
Subject
subject
){
public
Response
modifyQuestion
(
@PathVariable
(
"questionId"
)
String
questionId
,
@RequestBody
@Valid
ated
(
UpdateGroup
.
class
)
Question
Form
questionForm
,
BindingResult
result
,
@CurrentSubject
Subject
subject
){
if
(
result
.
hasErrors
())
{
return
Response
.
fieldError
(
result
.
getFieldError
());
}
...
...
@@ -121,7 +124,6 @@ public class QuestionApi {
//将问题表单转换为问题对象
Question
question
=
new
Question
();
BeanUtils
.
copyProperties
(
questionForm
,
question
);
question
.
setCategoryId
(
Integer
.
valueOf
(
questionForm
.
getCategoryId
()));
//2.设置问题ID
question
.
setQuestionId
(
questionId
);
...
...
@@ -130,11 +132,15 @@ public class QuestionApi {
question
.
setUserId
((
String
)
subject
.
getId
());
//4.祛除重复标签
HashSet
<
String
>
tags
=
QuestionUtils
.
toHashSet
(
questionForm
.
getTagIds
());
HashSet
<
String
>
tags
=
null
;
if
(!
CollectionUtils
.
isEmpty
(
questionForm
.
getTagIds
()))
{
tags
=
QuestionUtils
.
toHashSet
(
questionForm
.
getTagIds
());
}
//5.祛除重复话题
HashSet
<
String
>
topicIds
=
QuestionUtils
.
toHashSet
(
questionForm
.
getTopicIds
());
HashSet
<
String
>
topicIds
=
null
;
if
(!
CollectionUtils
.
isEmpty
(
questionForm
.
getTopicIds
()))
{
topicIds
=
QuestionUtils
.
toHashSet
(
questionForm
.
getTopicIds
());
}
//6.修改问题
try
{
questionService
.
updateQuestion
(
question
,
questionForm
.
getQuestionDetail
(),
tags
,
topicIds
);
...
...
src/main/java/cn/meteor/beyondclouds/modules/question/form/QuestionForm.java
View file @
7ba3d39f
package
cn
.
meteor
.
beyondclouds
.
modules
.
question
.
form
;
import
cn.meteor.beyondclouds.core.validation.constraints.ElementNotBlank
;
import
cn.meteor.beyondclouds.core.validation.constraints.NullOrNotBlank
;
import
cn.meteor.beyondclouds.core.validation.groups.InsertGroup
;
import
cn.meteor.beyondclouds.core.validation.groups.UpdateGroup
;
import
io.swagger.annotations.ApiModel
;
import
io.swagger.annotations.ApiModelProperty
;
import
lombok.Data
;
...
...
@@ -20,13 +24,14 @@ public class QuestionForm {
private
static
final
long
serialVersionUID
=
1L
;
@ApiModelProperty
(
"类别ID"
)
@NotNull
(
message
=
"问题类别ID不能为空"
)
@NotNull
(
message
=
"问题类别ID不能为空"
,
groups
=
InsertGroup
.
class
)
private
Integer
categoryId
;
@ApiModelProperty
(
"标题"
)
@NotNull
(
message
=
"问题标题不能为空"
)
@NotEmpty
(
message
=
"问题标题不能为空"
)
@NotNull
(
message
=
"问题标题不能为空"
,
groups
=
InsertGroup
.
class
)
@NotEmpty
(
message
=
"问题标题不能为空"
,
groups
=
InsertGroup
.
class
)
@Size
(
max
=
256
,
message
=
"问题标题太长"
)
@NullOrNotBlank
(
message
=
"请传入有效的标题"
,
groups
=
UpdateGroup
.
class
)
private
String
questionTitle
;
@ApiModelProperty
(
"摘要"
)
...
...
@@ -34,12 +39,17 @@ public class QuestionForm {
private
String
questionAbstract
;
@ApiModelProperty
(
"标签"
)
@Size
(
max
=
12
,
message
=
"问题标签个数不能超过5个"
)
@Size
(
min
=
1
,
message
=
"请至少传一个tagId"
)
@Size
(
max
=
5
,
message
=
"问题标签个数不能超过5个"
)
@ElementNotBlank
(
message
=
"tag内容不能为空"
)
private
List
<
String
>
tagIds
;
@ApiModelProperty
(
"话题ID"
)
@Size
(
min
=
1
,
message
=
"请至少传一个topicId"
)
@ElementNotBlank
(
message
=
"topic内容不能为空"
)
private
List
<
String
>
topicIds
;
@ApiModelProperty
(
"详情"
)
private
String
questionDetail
;
@ApiModelProperty
(
"话题ID"
)
private
List
<
String
>
topicIds
;
}
src/main/java/cn/meteor/beyondclouds/modules/question/service/impl/QuestionReplyCommentServiceImpl.java
View file @
7ba3d39f
...
...
@@ -68,7 +68,7 @@ public class QuestionReplyCommentServiceImpl extends ServiceImpl<QuestionReplyCo
}
QuestionReplyComment
parentQuestionReplyComment
=
null
;
//2.判断
夫
评论是否存在
//2.判断
父
评论是否存在
if
(!
StringUtils
.
isEmpty
(
parentId
))
{
QueryWrapper
<
QuestionReplyComment
>
questionReplyCommentQueryWrapper
=
new
QueryWrapper
<>();
questionReplyCommentQueryWrapper
.
eq
(
"reply_id"
,
replyId
)
...
...
src/main/java/cn/meteor/beyondclouds/modules/question/service/impl/QuestionServiceImpl.java
View file @
7ba3d39f
...
...
@@ -121,6 +121,7 @@ public class QuestionServiceImpl extends ServiceImpl<QuestionMapper, Question> i
if
(!
CollectionUtils
.
isEmpty
(
topicIds
))
{
// 获取要引用的话题,不正确的话题ID会被自动过滤
List
<
String
>
existsTopicIds
=
topicService
.
listByIds
(
topicIds
).
stream
().
map
(
Topic:
:
getTopicId
).
collect
(
Collectors
.
toList
());
if
(!
CollectionUtils
.
isEmpty
(
existsTopicIds
))
{
List
<
TopicReference
>
topicReferenceList
=
new
ArrayList
<>();
for
(
String
topicId
:
existsTopicIds
)
{
...
...
@@ -141,7 +142,7 @@ public class QuestionServiceImpl extends ServiceImpl<QuestionMapper, Question> i
//5.判断是否引用标签
if
(!
CollectionUtils
.
isEmpty
(
tagIds
))
{
List
<
String
>
existsTagIds
=
tagService
.
listByIds
(
tagIds
).
stream
().
map
(
Tag:
:
getTagId
).
collect
(
Collectors
.
toList
());
List
<
String
>
existsTagIds
=
tagService
.
listByIds
(
tagIds
).
stream
().
filter
(
tag
->
tag
.
getTagType
()
==
2
).
map
(
Tag:
:
getTagId
).
collect
(
Collectors
.
toList
());
if
(!
CollectionUtils
.
isEmpty
(
existsTagIds
))
{
List
<
QuestionTag
>
questionTagList
=
new
ArrayList
<>();
for
(
String
tagId
:
existsTagIds
)
{
...
...
@@ -193,6 +194,7 @@ public class QuestionServiceImpl extends ServiceImpl<QuestionMapper, Question> i
}
@Transactional
(
rollbackFor
=
Exception
.
class
)
@Override
public
void
updateQuestion
(
Question
question
,
String
questionDetail
,
HashSet
<
String
>
tagIds
,
HashSet
<
String
>
topicIds
)
throws
QuestionServiceException
{
//1.判断自己是否发布过此问题
...
...
@@ -209,18 +211,19 @@ public class QuestionServiceImpl extends ServiceImpl<QuestionMapper, Question> i
if
(!
question
.
getQuestionTitle
().
endsWith
(
QUESTION_END_EN
)
&&
!
question
.
getQuestionTitle
().
endsWith
(
QUESTION_END_CN
)){
throw
new
QuestionServiceException
(
QuestionErrorCode
.
QUESTION_END_ERROR
);
}
}
//3.检查问题分类是否存在
if
(
null
!=
question
.
getCategoryId
())
{
QuestionCategory
questionCategory
=
questionCategoryService
.
getById
(
question
.
getCategoryId
());
if
(
null
==
questionCategory
)
{
throw
new
QuestionServiceException
(
QuestionErrorCode
.
INCORRECT_CATEGORY
);
}
question
.
setCategory
(
questionCategory
.
getCategory
());
}
//2.更新问题信息
question
.
setCategory
(
questionCategory
.
getCategory
());
update
(
question
,
QuestionUtils
.
getWrapper
(
"question_id"
,
question
.
getQuestionId
()));
updateById
(
question
);
//3.更新问题扩展信息
if
(!
StringUtils
.
isEmpty
(
questionDetail
))
{
...
...
@@ -263,7 +266,7 @@ public class QuestionServiceImpl extends ServiceImpl<QuestionMapper, Question> i
//5.判断是否引用标签
if
(!
CollectionUtils
.
isEmpty
(
tagIds
))
{
List
<
String
>
existsTagIds
=
tagService
.
listByIds
(
tagIds
).
stream
().
map
(
Tag:
:
getTagId
).
collect
(
Collectors
.
toList
());
List
<
String
>
existsTagIds
=
tagService
.
listByIds
(
tagIds
).
stream
().
filter
(
tag
->
2
==
tag
.
getTagType
()).
map
(
Tag:
:
getTagId
).
collect
(
Collectors
.
toList
());
if
(!
CollectionUtils
.
isEmpty
(
existsTagIds
))
{
// 删除旧标签
QueryWrapper
<
QuestionTag
>
questionTagQueryWrapper
=
new
QueryWrapper
<>();
...
...
@@ -309,6 +312,7 @@ public class QuestionServiceImpl extends ServiceImpl<QuestionMapper, Question> i
for
(
TopicReference
topicReference
:
references
)
{
topics
.
add
(
topicService
.
getById
(
topicReference
.
getTopicId
()));
}
if
(
CollectionUtils
.
isEmpty
(
topics
))
{
question
.
setTopics
(
List
.
of
());
}
else
{
...
...
@@ -335,8 +339,8 @@ public class QuestionServiceImpl extends ServiceImpl<QuestionMapper, Question> i
public
IPage
<
Question
>
getUserQuestionPage
(
Integer
pageNumber
,
Integer
pageSize
,
String
userId
)
{
IPage
<
Question
>
page
=
new
Page
<>(
pageNumber
,
pageSize
);
QueryWrapper
<
Question
>
questionQueryWrapper
=
new
QueryWrapper
<>();
questionQueryWrapper
.
eq
(
"q.user_id"
,
userId
)
;
questionQueryWrapper
.
orderByDesc
(
"q.create_time"
);
questionQueryWrapper
.
eq
(
"q.user_id"
,
userId
)
.
orderByDesc
(
"q.create_time"
);
return
questionMapper
.
selectPageWithTags
(
page
,
questionQueryWrapper
);
}
...
...
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