Skip to content
Projects
Groups
Snippets
Help
Loading...
Sign in
Toggle navigation
O
online-edu-backend
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Redmine
Redmine
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
online-edu
online-edu-backend
Commits
0d358b27
Commit
0d358b27
authored
Apr 28, 2021
by
liuyang
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
添加验证码短信发送接口
parent
6ebb92ac
Show whitespace changes
Inline
Side-by-side
Showing
6 changed files
with
182 additions
and
0 deletions
+182
-0
SmsController.java
...ain/java/com/qkdata/biz/sms/controller/SmsController.java
+49
-0
SmsService.java
src/main/java/com/qkdata/biz/sms/service/SmsService.java
+38
-0
SendValCodeReq.java
src/main/java/com/qkdata/biz/sms/vo/SendValCodeReq.java
+14
-0
SmsRequest.java
src/main/java/com/qkdata/biz/sms/vo/SmsRequest.java
+16
-0
SmsResponse.java
src/main/java/com/qkdata/biz/sms/vo/SmsResponse.java
+27
-0
SmsV2Condition.java
src/main/java/com/qkdata/biz/sms/vo/SmsV2Condition.java
+38
-0
No files found.
src/main/java/com/qkdata/biz/sms/controller/SmsController.java
0 → 100644
View file @
0d358b27
package
com
.
qkdata
.
biz
.
sms
.
controller
;
import
com.google.common.collect.Maps
;
import
com.qkdata.biz.common.BizConstants
;
import
com.qkdata.biz.sms.service.SmsService
;
import
com.qkdata.biz.sms.vo.SendValCodeReq
;
import
com.qkdata.biz.sms.vo.SmsV2Condition
;
import
com.qkdata.common.annotation.SysLog
;
import
com.qkdata.common.base.model.Result
;
import
com.qkdata.common.util.RandomDigitGenerator
;
import
io.swagger.annotations.Api
;
import
io.swagger.annotations.ApiOperation
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.beans.factory.annotation.Qualifier
;
import
org.springframework.data.redis.core.StringRedisTemplate
;
import
org.springframework.validation.annotation.Validated
;
import
org.springframework.web.bind.annotation.GetMapping
;
import
org.springframework.web.bind.annotation.RequestBody
;
import
org.springframework.web.bind.annotation.RequestMapping
;
import
org.springframework.web.bind.annotation.RestController
;
import
java.util.Map
;
import
java.util.concurrent.TimeUnit
;
@Api
(
tags
=
"发送短信服务"
)
@RestController
@RequestMapping
(
"/api/sms"
)
public
class
SmsController
{
@Autowired
private
SmsService
smsService
;
@Autowired
@Qualifier
(
"stringRedisTemplate"
)
private
StringRedisTemplate
redisTemplate
;
@ApiOperation
(
"发送验证码"
)
@SysLog
(
"发送验证码"
)
@GetMapping
(
"/sendCode"
)
public
Result
<
String
>
sendCode
(
@RequestBody
@Validated
SendValCodeReq
req
){
Map
<
String
,
Object
>
param
=
Maps
.
newHashMap
();
String
captcha
=
RandomDigitGenerator
.
generate
(
6
);
param
.
put
(
"code"
,
captcha
);
SmsV2Condition
condition
=
new
SmsV2Condition
(
req
.
getMobile
(),
BizConstants
.
SMS_TEMPLATE_CODE
,
param
,
null
);
smsService
.
sendSmsV3
(
condition
);
//将captcha存入Redis,过期时间为5分钟
redisTemplate
.
opsForValue
().
set
(
BizConstants
.
MOBILE_CAPTCHA_PREFIX
+
req
.
getMobile
(),
captcha
,
60
*
5
,
TimeUnit
.
SECONDS
);
return
Result
.
succeed
(
"ok"
);
}
}
src/main/java/com/qkdata/biz/sms/service/SmsService.java
0 → 100644
View file @
0d358b27
package
com
.
qkdata
.
biz
.
sms
.
service
;
import
com.qkdata.biz.sms.vo.SmsRequest
;
import
com.qkdata.biz.sms.vo.SmsResponse
;
import
com.qkdata.biz.sms.vo.SmsV2Condition
;
import
com.qkdata.common.base.exception.BusinessException
;
import
lombok.extern.slf4j.Slf4j
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.beans.factory.annotation.Value
;
import
org.springframework.stereotype.Service
;
import
org.springframework.web.client.RestTemplate
;
import
java.util.Collections
;
@Slf4j
@Service
public
class
SmsService
{
@Value
(
"${sms.api.v3}"
)
private
String
api
;
@Autowired
private
RestTemplate
restTemplate
;
public
void
sendSmsV3
(
SmsV2Condition
condition
)
{
SmsRequest
smsRequest
=
new
SmsRequest
(
Collections
.
singletonList
(
condition
));
SmsResponse
smsResponse
=
restTemplate
.
postForObject
(
api
,
smsRequest
,
SmsResponse
.
class
);
if
(
smsResponse
==
null
||
smsResponse
.
hasError
())
{
log
.
error
(
"短信发送失败:{}"
,
smsResponse
,
toString
());
throw
new
BusinessException
(
"短信发送失败"
);
}
}
}
src/main/java/com/qkdata/biz/sms/vo/SendValCodeReq.java
0 → 100644
View file @
0d358b27
package
com
.
qkdata
.
biz
.
sms
.
vo
;
import
com.qkdata.common.constants.ValidatorPattern
;
import
lombok.Data
;
import
javax.validation.constraints.NotBlank
;
import
javax.validation.constraints.Pattern
;
@Data
public
class
SendValCodeReq
{
@NotBlank
(
message
=
"请填写手机号"
)
@Pattern
(
regexp
=
ValidatorPattern
.
MOBILE_PATTERN
,
message
=
"手机号格式不正确"
)
private
String
mobile
;
}
src/main/java/com/qkdata/biz/sms/vo/SmsRequest.java
0 → 100644
View file @
0d358b27
package
com
.
qkdata
.
biz
.
sms
.
vo
;
import
lombok.AllArgsConstructor
;
import
lombok.Data
;
import
lombok.NoArgsConstructor
;
import
java.util.List
;
@Data
@AllArgsConstructor
@NoArgsConstructor
public
class
SmsRequest
{
private
List
<
SmsV2Condition
>
conditions
;
}
src/main/java/com/qkdata/biz/sms/vo/SmsResponse.java
0 → 100644
View file @
0d358b27
package
com
.
qkdata
.
biz
.
sms
.
vo
;
import
com.fasterxml.jackson.annotation.JsonIgnoreProperties
;
import
lombok.AllArgsConstructor
;
import
lombok.Data
;
import
lombok.NoArgsConstructor
;
import
java.util.LinkedHashMap
;
import
java.util.List
;
import
java.util.Map
;
@Data
@AllArgsConstructor
@NoArgsConstructor
@JsonIgnoreProperties
(
ignoreUnknown
=
true
)
public
class
SmsResponse
{
private
Integer
code
;
private
String
message
;
private
Map
<
String
,
Object
>
data
=
new
LinkedHashMap
<>();
private
List
<
Object
>
errors
;
public
boolean
hasError
()
{
return
(
code
==
null
||
code
.
intValue
()
!=
0
);
}
}
src/main/java/com/qkdata/biz/sms/vo/SmsV2Condition.java
0 → 100644
View file @
0d358b27
package
com
.
qkdata
.
biz
.
sms
.
vo
;
import
lombok.AllArgsConstructor
;
import
lombok.Data
;
import
lombok.NoArgsConstructor
;
import
java.util.Map
;
@Data
@AllArgsConstructor
@NoArgsConstructor
public
class
SmsV2Condition
{
/**
* 要发送的手机号
*/
private
String
mobile
;
/**
* 模板编号
*/
private
String
code
;
/**
* 模板参数
*/
private
Map
<
String
,
Object
>
params
;
/**
* outId为提供给业务方扩展字段,最终在短信回执消息中将此值带回给调用者
*/
private
String
outId
;
private
String
notifyUrl
;
public
SmsV2Condition
(
String
mobile
,
String
code
,
Map
<
String
,
Object
>
params
,
String
outId
)
{
this
.
mobile
=
mobile
;
this
.
code
=
code
;
this
.
params
=
params
;
this
.
outId
=
outId
;
}
}
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