Skip to content
项目
群组
代码片段
帮助
当前项目
正在载入...
登录 / 注册
切换导航面板
S
scsm
Project
Project
详情
活动
周期分析
仓库
仓库
文件
提交
分支
标签
贡献者
Graph
比较
统计图
议题
0
议题
0
列表
看板
标记
Milestones
合并请求
0
合并请求
0
CI / CD
CI / CD
流水线
作业
日程
统计图
注册表
注册表
Wiki
Wiki
代码片段
代码片段
成员
成员
折叠边栏
关闭边栏
活动
图像
聊天
创建新问题
作业
提交
问题看板
Open sidebar
svn
scsm
Commits
1d264c8d
提交
1d264c8d
authored
12月 30, 2020
作者:
renjiancai
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
--no commit message
上级
7a388f0d
显示空白字符变更
内嵌
并排
正在显示
14 个修改的文件
包含
407 行增加
和
6 行删除
+407
-6
AliConfig.java
...java/com/zrqx/third/message/commons/config/AliConfig.java
+47
-0
MessageConstant.java
.../zrqx/third/message/commons/constant/MessageConstant.java
+15
-0
PhoneLog.java
...n/java/com/zrqx/third/message/commons/model/PhoneLog.java
+11
-0
MessageController.java
.../com/zrqx/third/message/controller/MessageController.java
+37
-0
PhoneController.java
...va/com/zrqx/third/message/controller/PhoneController.java
+49
-0
MessageService.java
...n/java/com/zrqx/third/message/service/MessageService.java
+16
-0
AliPhoneServiceImpl.java
...zrqx/third/message/service/phone/AliPhoneServiceImpl.java
+83
-0
BasePhoneServiceImpl.java
...rqx/third/message/service/phone/BasePhoneServiceImpl.java
+62
-0
HuaweiPhoneServiceImpl.java
...x/third/message/service/phone/HuaweiPhoneServiceImpl.java
+26
-0
ManDaoPhoneServiceImpl.java
...x/third/message/service/phone/ManDaoPhoneServiceImpl.java
+25
-0
PhoneService.java
...va/com/zrqx/third/message/service/phone/PhoneService.java
+19
-0
SmsController.java
...third/src/main/java/com/zrqx/third/sms/SmsController.java
+3
-2
SmsConfig.java
...rd/src/main/java/com/zrqx/third/sms/config/SmsConfig.java
+1
-1
SmsEnum.java
...hird/src/main/java/com/zrqx/third/sms/config/SmsEnum.java
+13
-3
没有找到文件。
com.zrqx.third/src/main/java/com/zrqx/third/message/commons/config/AliConfig.java
0 → 100644
浏览文件 @
1d264c8d
package
com
.
zrqx
.
third
.
message
.
commons
.
config
;
import
java.util.HashMap
;
import
java.util.Map
;
import
com.zrqx.core.enums.message.MessageBusinessTypeEnum
;
import
com.zrqx.core.exception.BaseException
;
/**
* 阿里云短信配置
* TODO 放到数据字典中维护
* @author lpf
* @date 2020-06-22
*/
public
class
AliConfig
{
/** 产品名称:云通信短信API产品,开发者无需替换 */
public
static
String
product
=
"Dysmsapi"
;
/** 产品域名,开发者无需替换 */
public
static
String
domain
=
"dysmsapi.aliyuncs.com"
;
/** 此处需要替换成开发者自己的AK(在阿里云访问控制台寻找) */
public
static
String
accessKeyId
=
"LTAIEvKzhAFYvN8T"
;
public
static
String
accessKeySecret
=
"lE7dkXvPEBDMyoar2uX2zrzOD6QUuR"
;
/** 必填:短信签名-可在短信控制台中找到 */
public
static
String
signName
=
"北京中软启信技术有限公司"
;
/** 业务类型对应模板id */
public
static
Map
<
String
,
String
>
TEMPLATE_CODE_MAP
=
new
HashMap
<>();
static
{
TEMPLATE_CODE_MAP
.
put
(
MessageBusinessTypeEnum
.
REGISTER_CAPTCHA
.
getCode
(),
"SMS_145480878"
);
TEMPLATE_CODE_MAP
.
put
(
MessageBusinessTypeEnum
.
LOGIN_CAPTCHA
.
getCode
(),
"SMS_145480880"
);
TEMPLATE_CODE_MAP
.
put
(
MessageBusinessTypeEnum
.
RESET_PASSWORD_CAPTCHA
.
getCode
(),
"SMS_145480877"
);
// 后续扩展模板
}
/**
* 根据业务类型 查找对应的模板id
* @param key
* @return
*/
public
static
String
getTemplateCode
(
String
key
)
{
String
value
=
TEMPLATE_CODE_MAP
.
get
(
key
);
if
(
value
==
null
)
{
throw
new
BaseException
(
"根据业务类型key:"
+
key
+
"找不到短信模板"
);
}
return
value
;
}
}
com.zrqx.third/src/main/java/com/zrqx/third/message/commons/constant/MessageConstant.java
0 → 100644
浏览文件 @
1d264c8d
package
com
.
zrqx
.
third
.
message
.
commons
.
constant
;
import
com.zrqx.core.enums.captcha.CaptchaBusinessTypeEnum
;
import
java.util.HashMap
;
import
java.util.Map
;
/**
* message 常量类
* @author lpf
* @date 2020-06-19
*/
public
class
MessageConstant
{
}
com.zrqx.third/src/main/java/com/zrqx/third/message/commons/model/PhoneLog.java
0 → 100644
浏览文件 @
1d264c8d
package
com
.
zrqx
.
third
.
message
.
commons
.
model
;
import
lombok.Data
;
/**
* @author lpf
* @date 2020-06-19
*/
@Data
public
class
PhoneLog
{
}
com.zrqx.third/src/main/java/com/zrqx/third/message/controller/MessageController.java
0 → 100644
浏览文件 @
1d264c8d
package
com
.
zrqx
.
third
.
message
.
controller
;
import
java.util.List
;
import
java.util.stream.Collectors
;
import
org.slf4j.Logger
;
import
org.slf4j.LoggerFactory
;
import
org.springframework.web.bind.annotation.GetMapping
;
import
org.springframework.web.bind.annotation.RestController
;
import
com.zrqx.core.enums.message.MessageBusinessTypeEnum
;
import
io.swagger.annotations.Api
;
import
io.swagger.annotations.ApiOperation
;
/**
* @author lpf
* @date 2020-06-19
*/
@RestController
@Api
(
description
=
"消息服务公用接口"
)
public
class
MessageController
{
private
static
final
Logger
log
=
LoggerFactory
.
getLogger
(
MessageController
.
class
);
@ApiOperation
(
"获取消息发送业务方式"
)
@GetMapping
(
"/business-type"
)
public
List
<
MessageBusinessTypeEnum
>
getMessageType
()
{
return
MessageBusinessTypeEnum
.
stream
().
collect
(
Collectors
.
toList
());
}
}
com.zrqx.third/src/main/java/com/zrqx/third/message/controller/PhoneController.java
0 → 100644
浏览文件 @
1d264c8d
package
com
.
zrqx
.
third
.
message
.
controller
;
import
org.slf4j.Logger
;
import
org.slf4j.LoggerFactory
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.web.bind.annotation.GetMapping
;
import
org.springframework.web.bind.annotation.PostMapping
;
import
org.springframework.web.bind.annotation.RequestBody
;
import
org.springframework.web.bind.annotation.RequestMapping
;
import
org.springframework.web.bind.annotation.RestController
;
import
com.zrqx.core.components.message.form.PhoneMessageForm
;
import
com.zrqx.core.util.response.CallBack
;
import
com.zrqx.third.message.service.phone.PhoneService
;
import
io.swagger.annotations.Api
;
/**
* @author lpf
* @date 2020-06-22
*/
@RestController
@Api
(
description
=
"手机短信接口"
)
@RequestMapping
(
"/phone"
)
public
class
PhoneController
{
private
static
final
Logger
log
=
LoggerFactory
.
getLogger
(
PhoneController
.
class
);
@Autowired
private
PhoneService
phoneService
;
@PostMapping
(
"/send-captcha"
)
public
CallBack
<
String
>
sendPhoneCaptcha
(
@RequestBody
PhoneMessageForm
form
)
{
log
.
info
(
"手机发送短信验证码start"
);
String
value
=
phoneService
.
sendPhoneCaptcha
(
form
);
log
.
info
(
"手机发送短信验证码end,{}"
,
value
);
return
CallBack
.
success
(
value
);
}
/* @ApiOperation("手机发送短信,value即发送内容")
@GetMapping("/send")
public CallBack<?> sendPhone(PhoneMessageForm form) {
log.info("手机发送短信start");
phoneService.send(form);
log.info("手机发送短信end,{}");
return CallBack.success();
}*/
}
com.zrqx.third/src/main/java/com/zrqx/third/message/service/MessageService.java
0 → 100644
浏览文件 @
1d264c8d
package
com
.
zrqx
.
third
.
message
.
service
;
import
com.zrqx.core.components.message.form.MessageForm
;
/**
* 消息发送接口
* @author lpf
* @date 2020-06-19
*/
public
interface
MessageService
<
T
extends
MessageForm
>
{
/**
* 消息发送
* @param form
*/
void
send
(
T
form
);
}
com.zrqx.third/src/main/java/com/zrqx/third/message/service/phone/AliPhoneServiceImpl.java
0 → 100644
浏览文件 @
1d264c8d
package
com
.
zrqx
.
third
.
message
.
service
.
phone
;
import
org.slf4j.Logger
;
import
org.slf4j.LoggerFactory
;
import
org.springframework.stereotype.Component
;
import
com.aliyuncs.DefaultAcsClient
;
import
com.aliyuncs.IAcsClient
;
import
com.aliyuncs.dysmsapi.model.v20170525.SendSmsRequest
;
import
com.aliyuncs.dysmsapi.model.v20170525.SendSmsResponse
;
import
com.aliyuncs.exceptions.ClientException
;
import
com.aliyuncs.profile.DefaultProfile
;
import
com.aliyuncs.profile.IClientProfile
;
import
com.zrqx.core.components.message.form.PhoneMessageForm
;
import
com.zrqx.core.exception.BaseException
;
import
com.zrqx.core.util.datatype.StringUtils
;
import
com.zrqx.third.message.commons.config.AliConfig
;
import
com.zrqx.third.message.commons.model.PhoneLog
;
/**
* 阿里短信服务
* @author lpf
* @date 2020-06-19
*/
@Component
public
class
AliPhoneServiceImpl
extends
BasePhoneServiceImpl
{
private
static
final
Logger
log
=
LoggerFactory
.
getLogger
(
AliPhoneServiceImpl
.
class
);
/** 连接超时时间 */
private
String
defaultConnectTimeout
=
"10000"
;
/** 读取超时时间 */
private
String
defaultReadTimeout
=
"10000"
;
@Override
protected
void
send
(
PhoneMessageForm
form
,
PhoneLog
phoneLog
)
{
// 可自助调整超时时间
System
.
setProperty
(
"sun.net.client.defaultConnectTimeout"
,
defaultConnectTimeout
);
System
.
setProperty
(
"sun.net.client.defaultReadTimeout"
,
defaultReadTimeout
);
//初始化acsClient,暂不支持region化
IClientProfile
profile
=
DefaultProfile
.
getProfile
(
"cn-hangzhou"
,
AliConfig
.
accessKeyId
,
AliConfig
.
accessKeySecret
);
try
{
DefaultProfile
.
addEndpoint
(
"cn-hangzhou"
,
"cn-hangzhou"
,
AliConfig
.
product
,
AliConfig
.
domain
);
}
catch
(
ClientException
e
)
{
log
.
error
(
"创建阿里短信client失败"
,
e
);
throw
new
BaseException
(
"创建阿里短信client失败"
,
e
);
}
IAcsClient
acsClient
=
new
DefaultAcsClient
(
profile
);
//组装请求对象-具体描述见控制台-文档部分内容
SendSmsRequest
request
=
new
SendSmsRequest
();
//必填:待发送手机号
request
.
setPhoneNumbers
(
form
.
getTarget
());
//必填:短信签名-可在短信控制台中找到
request
.
setSignName
(
AliConfig
.
signName
);
//必填:短信模板-可在短信控制台中找到
request
.
setTemplateCode
(
AliConfig
.
getTemplateCode
(
form
.
getBusinessType
()));
// 可选:模板中的变量替换JSON串,如模板内容为"亲爱的${name},您的验证码为${code}"时,此处的值为
request
.
setTemplateParam
(
form
.
getValue
());
SendSmsResponse
sendSmsResponse
=
null
;
try
{
sendSmsResponse
=
acsClient
.
getAcsResponse
(
request
);
log
.
info
(
"发送短信成功request:{},response:{}"
,
request
,
sendSmsResponse
);
}
catch
(
ClientException
e
)
{
log
.
error
(
"发送短信失败request:"
+
request
,
e
);
}
// TODO 发送结果处理
}
@Override
public
String
sendPhoneCaptcha
(
PhoneMessageForm
form
)
{
String
code
=
super
.
random
(
4
);
if
(
StringUtils
.
isEmpty
(
form
.
getValue
()))
{
form
.
setValue
(
"{'code':'"
+
code
+
"'}"
);
}
log
.
info
(
"发送短信验证码form:{}"
,
form
);
this
.
send
(
form
);
return
code
;
}
}
com.zrqx.third/src/main/java/com/zrqx/third/message/service/phone/BasePhoneServiceImpl.java
0 → 100644
浏览文件 @
1d264c8d
package
com
.
zrqx
.
third
.
message
.
service
.
phone
;
import
java.util.Random
;
import
org.slf4j.Logger
;
import
org.slf4j.LoggerFactory
;
import
com.zrqx.core.components.message.form.PhoneMessageForm
;
import
com.zrqx.core.exception.ValidateException
;
import
com.zrqx.core.util.datatype.StringUtils
;
import
com.zrqx.third.message.commons.model.PhoneLog
;
/**
* @author lpf
* @date 2020-06-19
*/
public
abstract
class
BasePhoneServiceImpl
implements
PhoneService
{
private
static
final
Logger
log
=
LoggerFactory
.
getLogger
(
BasePhoneServiceImpl
.
class
);
/**
* 发送短信并保存日志
* @param form
*/
@Override
public
void
send
(
PhoneMessageForm
form
)
{
log
.
info
(
"发送短信form:{}"
,
form
);
if
(
StringUtils
.
isEmpty
(
form
.
getTarget
()))
{
throw
new
ValidateException
(
"form.target不能为空"
);
}
if
(
StringUtils
.
isEmpty
(
form
.
getValue
()))
{
throw
new
ValidateException
(
"form.value不能为空"
);
}
PhoneLog
phoneLog
=
new
PhoneLog
();
// TODO 日志未实现
log
.
info
(
"短信保存日志{}"
,
phoneLog
);
log
.
info
(
"发送短信start"
);
this
.
send
(
form
,
phoneLog
);
}
/**
* 发送短信并更新日志
* @param form
* @param phoneLog
*/
protected
abstract
void
send
(
PhoneMessageForm
form
,
PhoneLog
phoneLog
);
/**
* 生成num位随机数
* @param num
* @return
*/
protected
String
random
(
int
num
)
{
char
[]
str
=
"0123456789"
.
toCharArray
();
Random
rd
=
new
Random
();
String
suiji
=
""
;
int
temp
=
0
;
for
(
int
i
=
0
;
i
<
num
;
i
++)
{
temp
=
rd
.
nextInt
(
10
);
suiji
+=
str
[
temp
];
}
return
suiji
;
}
}
com.zrqx.third/src/main/java/com/zrqx/third/message/service/phone/HuaweiPhoneServiceImpl.java
0 → 100644
浏览文件 @
1d264c8d
package
com
.
zrqx
.
third
.
message
.
service
.
phone
;
import
org.slf4j.Logger
;
import
org.slf4j.LoggerFactory
;
import
com.zrqx.core.components.message.form.PhoneMessageForm
;
import
com.zrqx.third.message.commons.model.PhoneLog
;
/**
* 华为云短信服务
* @author lpf
* @date 2020-06-19
*/
public
class
HuaweiPhoneServiceImpl
extends
BasePhoneServiceImpl
{
private
static
final
Logger
log
=
LoggerFactory
.
getLogger
(
HuaweiPhoneServiceImpl
.
class
);
@Override
protected
void
send
(
PhoneMessageForm
form
,
PhoneLog
phoneLog
)
{
// TODO 华为短信服务
}
@Override
public
String
sendPhoneCaptcha
(
PhoneMessageForm
form
)
{
return
null
;
}
}
com.zrqx.third/src/main/java/com/zrqx/third/message/service/phone/ManDaoPhoneServiceImpl.java
0 → 100644
浏览文件 @
1d264c8d
package
com
.
zrqx
.
third
.
message
.
service
.
phone
;
import
org.slf4j.Logger
;
import
org.slf4j.LoggerFactory
;
import
com.zrqx.core.components.message.form.PhoneMessageForm
;
import
com.zrqx.third.message.commons.model.PhoneLog
;
/**
* 漫道科技短信服务
* @author lpf
* @date 2020-06-19
*/
public
class
ManDaoPhoneServiceImpl
extends
BasePhoneServiceImpl
{
private
static
final
Logger
log
=
LoggerFactory
.
getLogger
(
ManDaoPhoneServiceImpl
.
class
);
@Override
protected
void
send
(
PhoneMessageForm
form
,
PhoneLog
phoneLog
)
{
// TODO 漫道科技短信服务
}
@Override
public
String
sendPhoneCaptcha
(
PhoneMessageForm
form
)
{
return
null
;
}
}
com.zrqx.third/src/main/java/com/zrqx/third/message/service/phone/PhoneService.java
0 → 100644
浏览文件 @
1d264c8d
package
com
.
zrqx
.
third
.
message
.
service
.
phone
;
import
com.zrqx.core.components.message.form.PhoneMessageForm
;
import
com.zrqx.third.message.service.MessageService
;
/**
* @author lpf
* @date 2020-06-19
*/
public
interface
PhoneService
extends
MessageService
<
PhoneMessageForm
>{
/**
* 发送手机短信验证码
* @param form
* @return
*/
String
sendPhoneCaptcha
(
PhoneMessageForm
form
);
}
com.zrqx.third/src/main/java/com/zrqx/third/sms/SmsController.java
浏览文件 @
1d264c8d
...
...
@@ -55,13 +55,14 @@ public class SmsController {
request
.
setTemplateCode
(
SmsEnum
.
getName
(
smsForm
.
getType
()));
//可选:模板中的变量替换JSON串,如模板内容为"亲爱的${name},您的验证码为${code}"时,此处的值为
request
.
setTemplateParam
(
"{'name':'"
+
smsForm
.
getName
()+
"', 'code':'"
+
smsForm
.
getCode
()+
"'}"
);
//
request.setTemplateParam("{'name':'"+smsForm.getName()+"', 'code':'"+smsForm.getCode()+"'}");
request
.
setTemplateParam
(
"{'code':'"
+
smsForm
.
getCode
()+
"'}"
);
//可选:outId为提供给业务方扩展字段,最终在短信回执消息中将此值带回给调用者
request
.
setOutId
(
smsForm
.
getOutId
());
//hint 此处可能会抛出异常,注意catch
SendSmsResponse
sendSmsResponse
=
acsClient
.
getAcsResponse
(
request
);
sendSmsResponse
.
setCode
(
smsForm
.
getCode
());
return
sendSmsResponse
;
}
...
...
com.zrqx.third/src/main/java/com/zrqx/third/sms/config/SmsConfig.java
浏览文件 @
1d264c8d
...
...
@@ -11,6 +11,6 @@ public class SmsConfig {
public
static
String
accessKeyId
=
"LTAIEvKzhAFYvN8T"
;
public
static
String
accessKeySecret
=
"lE7dkXvPEBDMyoar2uX2zrzOD6QUuR"
;
//必填:短信签名-可在短信控制台中找到
public
static
String
signName
=
"
中软启信
"
;
public
static
String
signName
=
"
北京中软启信技术有限公司
"
;
}
com.zrqx.third/src/main/java/com/zrqx/third/sms/config/SmsEnum.java
浏览文件 @
1d264c8d
...
...
@@ -2,10 +2,20 @@ package com.zrqx.third.sms.config;
public
enum
SmsEnum
{
//用户注册code
REGIST
(
0
,
"SMS_76606370"
),
//更换手机号验证验证码code
CHANGE_PHONE
(
1
,
"SMS_184220912"
),
// 身份验证验证码
VERIFICATION
(
2
,
"SMS_145180881"
),
// 登录确认验证码
LOGIN
(
3
,
"SMS_145480880"
),
// 登录异常验证码
LOGIN_EXCEPTION
(
4
,
"SMS_145480879"
),
// 用户注册验证码
REGISTER
(
5
,
"SMS_145480878"
),
//修改密码code
PASSWORD
(
1
,
"SMS_76606369"
);
UPDATE_PASSWORD
(
6
,
"SMS_145480877"
),
// 信息变更验证码
INFORMATION_CHANGE
(
7
,
"SMS_145480876"
);
private
final
Integer
code
;
private
final
String
name
;
...
...
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论