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
0aa605e9
Commit
0aa605e9
authored
Feb 05, 2020
by
段启岩
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
对博客参数验证进行改造,添加自定义校验器和分组
parent
67f307f8
Hide whitespace changes
Inline
Side-by-side
Showing
7 changed files
with
111 additions
and
63 deletions
+111
-63
src/main/java/cn/meteor/beyondclouds/core/validation/constraints/NullOrNotBlank.java
+38
-0
src/main/java/cn/meteor/beyondclouds/core/validation/groups/InsertGroup.java
+8
-0
src/main/java/cn/meteor/beyondclouds/core/validation/groups/UpdateGroup.java
+8
-0
src/main/java/cn/meteor/beyondclouds/core/validation/validator/NullOrNotBlankValidator.java
+26
-0
src/main/java/cn/meteor/beyondclouds/modules/blog/api/BlogApi.java
+7
-5
src/main/java/cn/meteor/beyondclouds/modules/blog/form/BlogForm.java
+24
-7
src/main/java/cn/meteor/beyondclouds/modules/blog/form/PublishBlogForm.java
+0
-51
No files found.
src/main/java/cn/meteor/beyondclouds/core/validation/constraints/NullOrNotBlank.java
0 → 100644
View file @
0aa605e9
package
cn
.
meteor
.
beyondclouds
.
core
.
validation
.
constraints
;
import
cn.meteor.beyondclouds.core.validation.validator.NullOrNotBlankValidator
;
import
javax.validation.Constraint
;
import
javax.validation.Payload
;
import
javax.validation.constraints.AssertTrue
;
import
java.lang.annotation.*
;
import
static
java
.
lang
.
annotation
.
ElementType
.*;
import
static
java
.
lang
.
annotation
.
ElementType
.
TYPE_USE
;
import
static
java
.
lang
.
annotation
.
RetentionPolicy
.
RUNTIME
;
/**
* null or not blank
* 被验证的参数可以为空,但如果对其进行赋值则该参数必须有有效字符
* @author meteor
*/
@Retention
(
RetentionPolicy
.
RUNTIME
)
@Target
({
METHOD
,
FIELD
,
ANNOTATION_TYPE
,
CONSTRUCTOR
,
PARAMETER
,
TYPE_USE
})
@Documented
@Constraint
(
validatedBy
=
NullOrNotBlankValidator
.
class
)
public
@interface
NullOrNotBlank
{
String
message
()
default
"null or not blank"
;
Class
<?>[]
groups
()
default
{
};
Class
<?
extends
Payload
>[]
payload
()
default
{
};
@Target
({
METHOD
,
FIELD
,
ANNOTATION_TYPE
,
CONSTRUCTOR
,
PARAMETER
,
TYPE_USE
})
@Retention
(
RUNTIME
)
@Documented
@interface
List
{
AssertTrue
[]
value
();
}
}
src/main/java/cn/meteor/beyondclouds/core/validation/groups/InsertGroup.java
0 → 100644
View file @
0aa605e9
package
cn
.
meteor
.
beyondclouds
.
core
.
validation
.
groups
;
/**
* 参数验证分组-插入
* @author meteor
*/
public
interface
InsertGroup
{
}
src/main/java/cn/meteor/beyondclouds/core/validation/groups/UpdateGroup.java
0 → 100644
View file @
0aa605e9
package
cn
.
meteor
.
beyondclouds
.
core
.
validation
.
groups
;
/**
* 参数验证分组-更新
* @author meteor
*/
public
interface
UpdateGroup
{
}
src/main/java/cn/meteor/beyondclouds/core/validation/validator/NullOrNotBlankValidator.java
0 → 100644
View file @
0aa605e9
package
cn
.
meteor
.
beyondclouds
.
core
.
validation
.
validator
;
import
cn.meteor.beyondclouds.core.validation.constraints.NullOrNotBlank
;
import
org.springframework.util.StringUtils
;
import
javax.validation.ConstraintValidator
;
import
javax.validation.ConstraintValidatorContext
;
/**
* NullOrNotBlank参数校验器
* @author meteor
*/
public
class
NullOrNotBlankValidator
implements
ConstraintValidator
<
NullOrNotBlank
,
String
>
{
@Override
public
boolean
isValid
(
String
value
,
ConstraintValidatorContext
context
)
{
if
(
null
==
value
)
{
return
true
;
}
if
(!
StringUtils
.
isEmpty
(
value
.
trim
()))
{
return
true
;
}
return
false
;
}
}
src/main/java/cn/meteor/beyondclouds/modules/blog/api/BlogApi.java
View file @
0aa605e9
...
...
@@ -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.blog.bean.BlogDetail
;
import
cn.meteor.beyondclouds.modules.blog.entity.Blog
;
import
cn.meteor.beyondclouds.modules.blog.exception.BlogCategoryServiceException
;
import
cn.meteor.beyondclouds.modules.blog.exception.BlogServiceException
;
import
cn.meteor.beyondclouds.modules.blog.form.PublishBlogForm
;
import
cn.meteor.beyondclouds.modules.blog.form.UpdateBlogForm
;
import
cn.meteor.beyondclouds.modules.blog.form.BlogForm
;
import
cn.meteor.beyondclouds.modules.blog.service.IBlogService
;
import
com.baomidou.mybatisplus.core.metadata.IPage
;
import
io.swagger.annotations.Api
;
...
...
@@ -19,6 +20,7 @@ import io.swagger.annotations.ApiOperation;
import
org.springframework.beans.BeanUtils
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.validation.BindingResult
;
import
org.springframework.validation.annotation.Validated
;
import
org.springframework.web.bind.annotation.*
;
import
javax.validation.Valid
;
...
...
@@ -42,7 +44,7 @@ public class BlogApi {
@ApiOperation
(
"发布博客"
)
@PostMapping
(
"/blog"
)
public
Response
publishBlog
(
@RequestBody
@Valid
Publish
BlogForm
publishBlogForm
,
BindingResult
result
,
@CurrentSubject
Subject
subject
)
{
public
Response
publishBlog
(
@RequestBody
@Valid
ated
(
InsertGroup
.
class
)
BlogForm
publishBlogForm
,
BindingResult
result
,
@CurrentSubject
Subject
subject
)
{
if
(
result
.
hasErrors
())
{
return
Response
.
fieldError
(
result
.
getFieldError
());
}
...
...
@@ -52,7 +54,7 @@ public class BlogApi {
blog
.
setUserId
((
String
)
subject
.
getId
());
try
{
blogService
.
publishBlog
(
blog
,
publishBlogForm
.
get
Blog
Content
(),
blogService
.
publishBlog
(
blog
,
publishBlogForm
.
getContent
(),
publishBlogForm
.
getTopicIds
(),
publishBlogForm
.
getTagIds
());
return
Response
.
success
();
}
catch
(
BlogCategoryServiceException
e
)
{
...
...
@@ -130,7 +132,7 @@ public class BlogApi {
@ApiOperation
(
"修改博客"
)
@PutMapping
(
"/blog/{blogId}"
)
public
Response
updateBlog
(
@PathVariable
(
"blogId"
)
String
blogId
,
@RequestBody
@Valid
Update
BlogForm
updateBlogForm
,
public
Response
updateBlog
(
@PathVariable
(
"blogId"
)
String
blogId
,
@RequestBody
@Valid
ated
(
UpdateGroup
.
class
)
BlogForm
updateBlogForm
,
BindingResult
result
,
@CurrentSubject
Subject
subject
)
{
if
(
result
.
hasErrors
())
{
return
Response
.
fieldError
(
result
.
getFieldError
());
...
...
src/main/java/cn/meteor/beyondclouds/modules/blog/form/
Update
BlogForm.java
→
src/main/java/cn/meteor/beyondclouds/modules/blog/form/BlogForm.java
View file @
0aa605e9
package
cn
.
meteor
.
beyondclouds
.
modules
.
blog
.
form
;
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
lombok.Data
;
import
javax.validation.constraints.NotEmpty
;
import
javax.validation.constraints.NotNull
;
import
java.util.List
;
/**
* @author gaoTong
* @date 2020/
2/1 14:48
* @date 2020/
1/31 9:36
*/
@Data
public
class
Update
BlogForm
{
public
class
BlogForm
{
@NotEmpty
(
message
=
"标题不能为空"
)
@NotNull
(
message
=
"标题不能为空"
,
groups
=
InsertGroup
.
class
)
@NotEmpty
(
message
=
"标题不能为空"
,
groups
=
InsertGroup
.
class
)
@NullOrNotBlank
(
message
=
"请传入有效的标题"
,
groups
=
UpdateGroup
.
class
)
private
String
blogTitle
;
@NullOrNotBlank
(
message
=
"请传入有效的原文链接"
,
groups
=
{
InsertGroup
.
class
,
UpdateGroup
.
class
})
private
String
originLink
;
@NotEmpty
(
message
=
"摘要不能为空"
)
@NotNull
(
message
=
"摘要不能为空"
,
groups
=
InsertGroup
.
class
)
@NotEmpty
(
message
=
"摘要不能为空"
,
groups
=
InsertGroup
.
class
)
@NullOrNotBlank
(
message
=
"请传入有效的摘要"
,
groups
=
UpdateGroup
.
class
)
private
String
blogAbstract
;
@NotNull
(
message
=
"博客类型不能为空"
,
groups
=
InsertGroup
.
class
)
private
Integer
categoryId
;
@NotEmpty
(
message
=
"内容不能为空"
)
@NotNull
(
message
=
"内容不能为空"
,
groups
=
InsertGroup
.
class
)
@NotEmpty
(
message
=
"内容不能为空"
,
groups
=
InsertGroup
.
class
)
@NullOrNotBlank
(
message
=
"请传入有效的博客内容"
,
groups
=
UpdateGroup
.
class
)
private
String
content
;
private
List
<
String
>
topicIds
;
private
List
<
String
>
tagIds
;
@NotNull
(
message
=
"浏览权限不能为空"
,
groups
=
InsertGroup
.
class
)
private
Integer
viewPrivileges
;
@NotNull
(
message
=
"评论权限不能为空"
,
groups
=
InsertGroup
.
class
)
private
Boolean
allowComment
;
@NotNull
(
message
=
"转载权限不能为空"
,
groups
=
InsertGroup
.
class
)
private
Boolean
allowForward
;
@NotEmpty
(
message
=
"封面图不能为空"
)
@NotNull
(
message
=
"封面图不能为空"
,
groups
=
InsertGroup
.
class
)
@NotEmpty
(
message
=
"封面图不能为空"
,
groups
=
InsertGroup
.
class
)
@NullOrNotBlank
(
message
=
"请传入有效的封面图链接"
,
groups
=
UpdateGroup
.
class
)
private
String
cover
;
}
src/main/java/cn/meteor/beyondclouds/modules/blog/form/PublishBlogForm.java
deleted
100644 → 0
View file @
67f307f8
package
cn
.
meteor
.
beyondclouds
.
modules
.
blog
.
form
;
import
lombok.Data
;
import
javax.validation.constraints.NotEmpty
;
import
javax.validation.constraints.NotNull
;
import
java.util.List
;
/**
* @author gaoTong
* @date 2020/1/31 9:36
*/
@Data
public
class
PublishBlogForm
{
@NotNull
(
message
=
"标题不能为空"
)
@NotEmpty
(
message
=
"标题不能为空"
)
private
String
blogTitle
;
private
String
originLink
;
@NotNull
(
message
=
"摘要不能为空"
)
@NotEmpty
(
message
=
"摘要不能为空"
)
private
String
blogAbstract
;
@NotNull
(
message
=
"博客类型不能为空"
)
private
Integer
categoryId
;
@NotNull
(
message
=
"内容不能为空"
)
@NotEmpty
(
message
=
"内容不能为空"
)
private
String
blogContent
;
private
List
<
String
>
topicIds
;
private
List
<
String
>
tagIds
;
@NotNull
(
message
=
"浏览权限不能为空"
)
private
Integer
viewPrivileges
;
@NotNull
(
message
=
"评论权限不能为空"
)
private
Boolean
allowComment
;
@NotNull
(
message
=
"转载权限不能为空"
)
private
Boolean
allowForward
;
@NotNull
(
message
=
"封面图不能为空"
)
@NotEmpty
(
message
=
"封面图不能为空"
)
private
String
cover
;
}
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