Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
S
springboot-mybatis
Overview
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
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
wzy
springboot-mybatis
Commits
f1e39703
Commit
f1e39703
authored
Jun 28, 2021
by
wzy
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
GlobalExceptionHandler
parent
3bc0bbba
Hide whitespace changes
Inline
Side-by-side
Showing
11 changed files
with
108 additions
and
22 deletions
+108
-22
pom.xml
+5
-0
src/main/java/cn/drive/controller/UserController.java
+39
-2
src/main/java/cn/drive/entity/User.java
+7
-0
src/main/java/cn/drive/enums/OperationEnum.java
+14
-0
src/main/java/cn/drive/exception/ConstraintViolationHandler.java
+0
-1
src/main/java/cn/drive/exception/GlobalExceptionHandler.java
+4
-6
src/main/java/cn/drive/exception/InvalidRequestExceptionHandler.java
+25
-0
src/main/java/cn/drive/service/EmailService.java
+3
-7
src/main/java/cn/drive/service/UserService.java
+1
-1
src/main/java/cn/drive/service/impl/UserServiceImpl.java
+3
-3
src/main/resources/application.yml
+7
-2
No files found.
pom.xml
View file @
f1e39703
...
...
@@ -60,6 +60,11 @@
<artifactId>
spring-boot-starter-mail
</artifactId>
</dependency>
<dependency>
<groupId>
org.springframework.boot
</groupId>
<artifactId>
spring-boot-starter-data-redis
</artifactId>
</dependency>
</dependencies>
<build>
...
...
src/main/java/cn/drive/controller/UserController.java
View file @
f1e39703
package
cn
.
drive
.
controller
;
import
cn.drive.entity.User
;
import
cn.drive.enums.OperationEnum
;
import
cn.drive.service.UserService
;
import
cn.drive.vo.ResponseVO
;
import
org.springframework.data.redis.core.BoundHashOperations
;
import
org.springframework.data.redis.core.RedisTemplate
;
import
org.springframework.http.HttpStatus
;
import
org.springframework.http.ResponseEntity
;
import
org.springframework.validation.annotation.Validated
;
import
org.springframework.web.bind.annotation.GetMapping
;
import
org.springframework.web.bind.annotation.PostMapping
;
import
org.springframework.web.bind.annotation.RequestMapping
;
import
javax.annotation.Resource
;
import
javax.validation.Valid
;
...
...
@@ -13,6 +18,11 @@ import javax.validation.constraints.Email;
import
javax.validation.constraints.NotBlank
;
import
org.springframework.web.bind.annotation.RestController
;
import
java.util.Map
;
import
java.util.Objects
;
import
java.util.Random
;
import
java.util.concurrent.TimeUnit
;
@Validated
@RequestMapping
(
"/user"
)
@RestController
...
...
@@ -20,9 +30,35 @@ public class UserController {
@Resource
UserService
userService
;
@Resource
RedisTemplate
<
String
,
Map
<
OperationEnum
,
Integer
>>
redisTemplate
;
@GetMapping
()
public
ResponseEntity
<?>
sendVerificationCode
(
@Valid
@Email
@NotBlank
String
email
)
{
userService
.
sendVerificationCode
(
email
);
public
ResponseEntity
<?>
sendVerificationCode
(
@Valid
@Email
@NotBlank
String
email
,
OperationEnum
operation
)
{
int
verificationCode
=
new
Random
().
nextInt
(
899999
)
+
100000
;
userService
.
sendVerificationCode
(
email
,
verificationCode
);
BoundHashOperations
<
String
,
Object
,
Object
>
verificationCodeOperation
=
redisTemplate
.
boundHashOps
(
email
);
verificationCodeOperation
.
put
(
operation
,
verificationCode
);
verificationCodeOperation
.
expire
(
5
,
TimeUnit
.
MINUTES
);
return
new
ResponseEntity
<>(
ResponseVO
.
success
(
"已将验证码发送到 "
+
email
),
HttpStatus
.
OK
);
}
@PostMapping
()
public
ResponseEntity
<?>
signUp
(
@Valid
SignUpParam
signUpParam
)
throws
Exception
{
if
(!
Objects
.
equals
(
redisTemplate
.
boundHashOps
(
signUpParam
.
user
.
getEmail
()).
get
(
OperationEnum
.
SIGN_UP
),
signUpParam
.
verificationCode
)){
throw
new
Exception
(
"验证码错误或已失效"
);
}
return
new
ResponseEntity
<>(
ResponseVO
.
success
(
"注册成功"
),
HttpStatus
.
OK
);
}
}
class
SignUpParam
{
User
user
;
@NotBlank
String
verificationCode
;
}
\ No newline at end of file
src/main/java/cn/drive/entity/User.java
View file @
f1e39703
...
...
@@ -3,9 +3,16 @@ package cn.drive.entity;
import
lombok.Data
;
import
javax.validation.constraints.Email
;
import
javax.validation.constraints.NotBlank
;
@Data
public
class
User
{
@NotBlank
private
String
id
;
@Email
(
message
=
"邮箱格式不正确"
)
private
String
email
;
@NotBlank
private
String
password
;
}
src/main/java/cn/drive/enums/OperationEnum.java
0 → 100644
View file @
f1e39703
package
cn
.
drive
.
enums
;
public
enum
OperationEnum
{
SIGN_UP
(
"注册"
);
private
final
String
operation
;
OperationEnum
(
String
operation
)
{
this
.
operation
=
operation
;
}
public
String
getOperation
()
{
return
operation
;
}
}
src/main/java/cn/drive/exception/ConstraintViolationHandler.java
View file @
f1e39703
...
...
@@ -11,7 +11,6 @@ import static org.springframework.http.HttpStatus.UNPROCESSABLE_ENTITY;
public
class
ConstraintViolationHandler
{
@ExceptionHandler
(
ConstraintViolationException
.
class
)
public
ResponseEntity
<?>
handleMethodArgumentNotValid
(
ConstraintViolationException
e
)
{
System
.
out
.
println
();
return
new
ResponseEntity
<>(
ResponseVO
.
failure
(
e
.
getLocalizedMessage
()),
UNPROCESSABLE_ENTITY
);
}
}
src/main/java/cn/drive/exception/GlobalExceptionHandler.java
View file @
f1e39703
...
...
@@ -8,17 +8,15 @@ import org.springframework.web.bind.annotation.ExceptionHandler;
import
org.springframework.web.bind.annotation.RestControllerAdvice
;
import
org.springframework.web.context.request.WebRequest
;
import
org.springframework.web.servlet.mvc.method.annotation.ResponseEntityExceptionHandler
;
import
static
org
.
springframework
.
http
.
HttpStatus
.
UNPROCESSABLE_ENTITY
;
import
static
org
.
springframework
.
http
.
HttpStatus
.
INTERNAL_SERVER_ERROR
;
@RestControllerAdvice
public
class
GlobalExceptionHandler
extends
ResponseEntityExceptionHandler
{
@ExceptionHandler
({
InvalidRequestException
.
class
})
public
ResponseEntity
<
Object
>
handleInvalidRequest
(
RuntimeException
e
,
WebRequest
request
)
{
InvalidRequestException
ire
=
(
InvalidRequestException
)
e
;
@ExceptionHandler
({
Exception
.
class
})
public
ResponseEntity
<
Object
>
handleException
(
RuntimeException
e
,
WebRequest
request
)
{
HttpHeaders
headers
=
new
HttpHeaders
();
headers
.
setContentType
(
MediaType
.
APPLICATION_JSON
);
return
handleExceptionInternal
(
e
,
ResponseVO
.
failure
(
ire
.
getSysException
()),
headers
,
UNPROCESSABLE_ENTITY
,
request
);
return
handleExceptionInternal
(
e
,
ResponseVO
.
failure
(
e
.
getLocalizedMessage
()),
headers
,
INTERNAL_SERVER_ERROR
,
request
);
}
}
src/main/java/cn/drive/exception/InvalidRequestExceptionHandler.java
0 → 100644
View file @
f1e39703
package
cn
.
drive
.
exception
;
import
cn.drive.vo.ResponseVO
;
import
org.springframework.http.HttpHeaders
;
import
org.springframework.http.MediaType
;
import
org.springframework.http.ResponseEntity
;
import
org.springframework.web.bind.annotation.ExceptionHandler
;
import
org.springframework.web.bind.annotation.RestControllerAdvice
;
import
org.springframework.web.context.request.WebRequest
;
import
org.springframework.web.servlet.mvc.method.annotation.ResponseEntityExceptionHandler
;
import
static
org
.
springframework
.
http
.
HttpStatus
.
UNPROCESSABLE_ENTITY
;
@RestControllerAdvice
public
class
InvalidRequestExceptionHandler
extends
ResponseEntityExceptionHandler
{
@ExceptionHandler
({
InvalidRequestException
.
class
})
public
ResponseEntity
<
Object
>
handleInvalidRequest
(
RuntimeException
e
,
WebRequest
request
)
{
InvalidRequestException
ire
=
(
InvalidRequestException
)
e
;
HttpHeaders
headers
=
new
HttpHeaders
();
headers
.
setContentType
(
MediaType
.
APPLICATION_JSON
);
return
handleExceptionInternal
(
e
,
ResponseVO
.
failure
(
ire
.
getSysException
()),
headers
,
UNPROCESSABLE_ENTITY
,
request
);
}
}
src/main/java/cn/drive/service/EmailService.java
View file @
f1e39703
...
...
@@ -6,6 +6,7 @@ import org.springframework.mail.MailException;
import
org.springframework.mail.SimpleMailMessage
;
import
org.springframework.mail.javamail.JavaMailSender
;
import
org.springframework.stereotype.Service
;
import
javax.annotation.Resource
;
@Slf4j
...
...
@@ -17,19 +18,14 @@ public class EmailService {
@Resource
private
JavaMailSender
javaMailSender
;
public
void
sendVerificationCode
(
String
receiver
,
String
subject
,
String
content
)
{
public
void
sendVerificationCode
(
String
receiver
,
String
subject
,
String
content
)
throws
MailException
{
SimpleMailMessage
simpleMailMessage
=
new
SimpleMailMessage
();
simpleMailMessage
.
setTo
(
receiver
);
simpleMailMessage
.
setFrom
(
sender
);
simpleMailMessage
.
setSubject
(
subject
);
simpleMailMessage
.
setText
(
content
);
try
{
javaMailSender
.
send
(
simpleMailMessage
);
}
catch
(
MailException
mailException
)
{
throw
}
javaMailSender
.
send
(
simpleMailMessage
);
log
.
info
(
"邮件发送成功: from[{}], to[{}], subject[{}], content[{}]"
,
sender
,
receiver
,
subject
,
content
);
}
}
src/main/java/cn/drive/service/UserService.java
View file @
f1e39703
...
...
@@ -4,5 +4,5 @@ import cn.drive.entity.User;
import
com.baomidou.mybatisplus.extension.service.IService
;
public
interface
UserService
extends
IService
<
User
>
{
void
sendVerificationCode
(
String
email
);
void
sendVerificationCode
(
String
email
,
int
verificationCode
);
}
src/main/java/cn/drive/service/impl/UserServiceImpl.java
View file @
f1e39703
...
...
@@ -11,7 +11,6 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import
com.baomidou.mybatisplus.extension.service.impl.ServiceImpl
;
import
org.springframework.beans.factory.annotation.Value
;
import
org.springframework.stereotype.Service
;
import
javax.annotation.Resource
;
import
java.util.Random
;
...
...
@@ -27,13 +26,14 @@ public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements Us
EmailService
emailService
;
@Override
public
void
sendVerificationCode
(
String
email
)
{
public
void
sendVerificationCode
(
String
email
,
int
verificationCode
)
{
QueryWrapper
<
User
>
queryWrapper
=
new
QueryWrapper
<>();
queryWrapper
.
eq
(
"email"
,
email
);
if
(
userService
.
getOne
(
queryWrapper
)
!=
null
)
{
throw
new
InvalidRequestException
(
new
SysException
(
SysErrorEnum
.
EMAIL_ALREADY_TAKEN
));
}
int
verificationCode
=
new
Random
().
nextInt
(
899999
)
+
100000
;
emailService
.
sendVerificationCode
(
email
,
signUpSubject
,
String
.
valueOf
(
verificationCode
));
}
}
src/main/resources/application.yml
View file @
f1e39703
...
...
@@ -5,10 +5,14 @@ spring:
username
:
root
password
:
123
mail
:
username
:
im_fine_thanku
@163.com
username
:
core_2021
@163.com
sign-up-subject
:
注册
host
:
smtp.163.com
password
:
wzy12345
password
:
OWCVISPNQZIJTISX
default-encoding
:
utf-8
redis
:
host
:
localhost
port
:
6379
database
:
0
mybatis-plus
:
mapper-locations
:
classpath*:/mapper/**Mapper.xml
\ No newline at end of file
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