Skip to content
项目
群组
代码片段
帮助
当前项目
正在载入...
登录 / 注册
切换导航面板
C
clx-performance
项目
项目
详情
活动
周期分析
仓库
仓库
文件
提交
分支
标签
贡献者
图表
比较
统计图
议题
0
议题
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
CI / CD
CI / CD
流水线
作业
日程
统计图
Wiki
Wiki
代码片段
代码片段
成员
成员
折叠边栏
关闭边栏
活动
图像
聊天
创建新问题
作业
提交
问题看板
Open sidebar
姜武杰
clx-performance
Commits
496ec2a7
提交
496ec2a7
authored
11月 06, 2024
作者:
刘海泉
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
增加通用发送短信的功能
上级
6b3e5b96
隐藏空白字符变更
内嵌
并排
正在显示
8 个修改的文件
包含
256 行增加
和
1 行删除
+256
-1
RabbitBeanConfig.java
...ain/java/com/clx/performance/config/RabbitBeanConfig.java
+27
-0
RabbitKeyConstants.java
...java/com/clx/performance/constant/RabbitKeyConstants.java
+12
-0
SendSmsListener.java
...in/java/com/clx/performance/listener/SendSmsListener.java
+103
-0
SendSmsService.java
...main/java/com/clx/performance/service/SendSmsService.java
+4
-0
SendSmsServiceImpl.java
.../com/clx/performance/service/impl/SendSmsServiceImpl.java
+57
-0
SmsTemplateEnum.java
.../main/java/com/clx/performance/enums/SmsTemplateEnum.java
+23
-0
VehicleWarnConfigEnum.java
.../performance/enums/vehiclewarn/VehicleWarnConfigEnum.java
+1
-1
SendSmsNoticeParam.java
...java/com/clx/performance/param/mq/SendSmsNoticeParam.java
+29
-0
没有找到文件。
clx-performance-web/src/main/java/com/clx/performance/config/RabbitBeanConfig.java
浏览文件 @
496ec2a7
...
...
@@ -299,6 +299,33 @@ public class RabbitBeanConfig {
/**
*发送短信通知
*/
@Bean
public
Queue
sendSmsNoticeQueue
()
{
return
new
Queue
(
RabbitKeyConstants
.
NOTICE_SEND_SMS_QUEUE
,
true
,
false
,
false
);
}
/**
* 发送短信通知
**/
@Bean
public
DirectExchange
sendSmsNoticeExchange
()
{
return
new
DirectExchange
(
RabbitKeyConstants
.
NOTICE_SEND_SMS_QUEUE_EXCHANGE
);
}
/**
*发送短信通知
*/
@Bean
public
Binding
sendSmsNoticeBind
()
{
return
BindingBuilder
.
bind
(
sendSmsNoticeQueue
()).
to
(
sendSmsNoticeExchange
())
.
with
(
RabbitKeyConstants
.
NOTICE_SEND_SMS_QUEUE_ROUTING_KEY
);
}
}
clx-performance-web/src/main/java/com/clx/performance/constant/RabbitKeyConstants.java
浏览文件 @
496ec2a7
...
...
@@ -150,4 +150,16 @@ public class RabbitKeyConstants {
//保存货单调价记录routing_key
public
static
final
String
SAVE_ORDER_GOODS_ADJUSTMENT_PRICE_ROUTING_KEY
=
"clx_performance.save.order.goods.adjustment.price.routing.key"
;
//保存货单调价记录queue
public
static
final
String
NOTICE_SEND_SMS_QUEUE
=
"clx_performance.notice.send.sms.queue"
;
//保存货单调价记录exchange
public
static
final
String
NOTICE_SEND_SMS_QUEUE_EXCHANGE
=
"clx_performance.notice.send.sms.exchange"
;
//保存货单调价记录routing_key
public
static
final
String
NOTICE_SEND_SMS_QUEUE_ROUTING_KEY
=
"clx_performance.notice.send.sms.routing.key"
;
}
clx-performance-web/src/main/java/com/clx/performance/listener/SendSmsListener.java
0 → 100644
浏览文件 @
496ec2a7
package
com
.
clx
.
performance
.
listener
;
import
cn.hutool.core.lang.TypeReference
;
import
cn.hutool.json.JSONUtil
;
import
com.alibaba.fastjson.JSON
;
import
com.clx.open.sdk.callback.message.OrderInfoMessage
;
import
com.clx.order.enums.OrderEnum
;
import
com.clx.order.feign.OrderFeign
;
import
com.clx.order.vo.feign.FeignOrderVO
;
import
com.clx.performance.common.MqWrapper
;
import
com.clx.performance.config.ConfiguredOpenProperties
;
import
com.clx.performance.constant.RabbitKeyConstants
;
import
com.clx.performance.dao.vehiclewarn.VehicleWarnUserDao
;
import
com.clx.performance.model.vehiclewarn.VehicleWarnUser
;
import
com.clx.performance.param.mq.SendSmsNoticeParam
;
import
com.msl.common.open.ConfiguredOpenClient
;
import
com.msl.common.result.Result
;
import
com.msl.message.sdk.action.MessageAction
;
import
com.msl.message.sms.api.sms.SmsMessage
;
import
com.msl.message.sms.api.sms.content.SmsMessageContentImpl
;
import
com.msl.message.sms.api.sms.recipient.SmsMessageRecipientImpl
;
import
lombok.AllArgsConstructor
;
import
lombok.extern.slf4j.Slf4j
;
import
org.apache.commons.collections4.CollectionUtils
;
import
org.apache.commons.lang3.StringUtils
;
import
org.apache.commons.lang3.exception.ExceptionUtils
;
import
org.springframework.amqp.core.Message
;
import
org.springframework.amqp.rabbit.annotation.RabbitListener
;
import
org.springframework.stereotype.Component
;
import
java.util.HashMap
;
import
java.util.Map
;
import
java.util.Objects
;
import
java.util.stream.Collectors
;
import
static
com
.
clx
.
performance
.
enums
.
OrderEnum
.
Status
.*;
import
static
com
.
msl
.
message
.
sms
.
api
.
enums
.
RecipientTypeEnum
.
USER_MOBILE
;
@Slf4j
@Component
@AllArgsConstructor
public
class
SendSmsListener
{
private
final
ConfiguredOpenClient
configuredOpenClient
;
private
final
ConfiguredOpenProperties
properties
;
@RabbitListener
(
queues
=
RabbitKeyConstants
.
NOTICE_SEND_SMS_QUEUE
)
public
void
onMessage
(
Message
message
)
{
try
{
log
.
info
(
"监听到通用发送通知短信,消息内容{}"
,
new
String
(
message
.
getBody
()));
SendSmsNoticeParam
messageParam
=
JSONUtil
.
toBean
(
new
String
(
message
.
getBody
()),
new
TypeReference
<
MqWrapper
<
SendSmsNoticeParam
>>()
{
},
false
).
getData
();
log
.
info
(
"发送短信的手机号列表:{}"
,
messageParam
.
getMobileList
());
if
(
CollectionUtils
.
isEmpty
(
messageParam
.
getMobileList
())){
return
;
}
SmsMessage
smsMessage
=
new
SmsMessage
();
//设置消息内容
SmsMessageContentImpl
smsMessageContent
=
new
SmsMessageContentImpl
();
//模版code
smsMessageContent
.
setCode
(
messageParam
.
getCode
());
smsMessageContent
.
setParams
(
messageParam
.
getParams
());
//设置消息接收人
SmsMessageRecipientImpl
smsMessageRecipient
=
new
SmsMessageRecipientImpl
();
smsMessageRecipient
.
setUserType
(
USER_MOBILE
.
getCode
());
smsMessageRecipient
.
setTargets
(
String
.
join
(
","
,
messageParam
.
getMobileList
()));
smsMessage
.
setContent
(
smsMessageContent
);
smsMessage
.
setRecipient
(
smsMessageRecipient
);
//从消息中心注册获取的通道key
smsMessage
.
setAccessKey
(
properties
.
getAccessKey
());
//向消息中心发送消息
log
.
info
(
"开始发送消息中心短信,请求参数:{}"
,
JSON
.
toJSONString
(
smsMessage
));
Result
<
Object
>
result
=
configuredOpenClient
.
doAction
(
new
MessageAction
(
smsMessage
));
if
(
result
.
succeed
()){
log
.
info
(
"结束发送消息中心短信成功,响应结果:{}"
,
JSON
.
toJSONString
(
result
));
}
else
{
log
.
error
(
"结束发送消息中心短信失败,响应结果:{}"
,
JSON
.
toJSONString
(
result
));
}
}
catch
(
Exception
e
){
log
.
info
(
"监听发送通知短信发生异常,异常原因:{}"
,
ExceptionUtils
.
getStackTrace
(
e
));
}
}
}
clx-performance-web/src/main/java/com/clx/performance/service/SendSmsService.java
0 → 100644
浏览文件 @
496ec2a7
package
com
.
clx
.
performance
.
service
;
public
interface
SendSmsService
{
}
clx-performance-web/src/main/java/com/clx/performance/service/impl/SendSmsServiceImpl.java
0 → 100644
浏览文件 @
496ec2a7
package
com
.
clx
.
performance
.
service
.
impl
;
import
cn.hutool.json.JSONUtil
;
import
com.alibaba.fastjson.JSON
;
import
com.clx.order.enums.OrderEnum
;
import
com.clx.performance.common.MqWrapper
;
import
com.clx.performance.dao.vehiclewarn.VehicleWarnUserDao
;
import
com.clx.performance.model.vehiclewarn.VehicleWarnUser
;
import
com.clx.performance.param.mq.SendSmsNoticeParam
;
import
com.clx.performance.service.SendSmsService
;
import
lombok.AllArgsConstructor
;
import
lombok.extern.slf4j.Slf4j
;
import
org.springframework.amqp.core.Message
;
import
org.springframework.amqp.core.MessageBuilder
;
import
org.springframework.amqp.rabbit.core.RabbitTemplate
;
import
org.springframework.stereotype.Service
;
import
java.util.List
;
import
java.util.stream.Collectors
;
import
static
com
.
clx
.
performance
.
constant
.
RabbitKeyConstants
.
NOTICE_SEND_SMS_QUEUE_EXCHANGE
;
import
static
com
.
clx
.
performance
.
constant
.
RabbitKeyConstants
.
NOTICE_SEND_SMS_QUEUE_ROUTING_KEY
;
/**
* @ClassName SendSmsServiceImpl
* @Description
* @Author kavin
* @Date 2024/11/6 10:14
* @Version 1.0
*/
@Service
@Slf4j
@AllArgsConstructor
public
class
SendSmsServiceImpl
implements
SendSmsService
{
private
final
RabbitTemplate
rabbitTemplate
;
private
final
VehicleWarnUserDao
vehicleWarnUserDao
;
public
void
sendChildWarnConfigSmsNotice
(
Integer
warnTypeCode
,
String
smsTemplateCode
){
log
.
info
(
"开始运单预警通知配置短信消息,短信模版code:{}"
,
smsTemplateCode
);
List
<
String
>
targets
=
getTargets
(
warnTypeCode
);
SendSmsNoticeParam
param
=
new
SendSmsNoticeParam
();
param
.
setCode
(
smsTemplateCode
);
param
.
setMobileList
(
targets
);
Message
body
=
MessageBuilder
.
withBody
(
JSON
.
toJSONString
(
new
MqWrapper
<>(
param
)).
getBytes
()).
build
();
rabbitTemplate
.
send
(
NOTICE_SEND_SMS_QUEUE_EXCHANGE
,
NOTICE_SEND_SMS_QUEUE_ROUTING_KEY
,
body
);
log
.
info
(
"结束运单预警通知配置短信消息,短信模版code:{},"
,
smsTemplateCode
);
}
private
List
<
String
>
getTargets
(
int
code
){
return
vehicleWarnUserDao
.
listAllEnable
()
.
stream
()
.
filter
(
item
->
JSONUtil
.
toList
(
item
.
getWarnTypeJson
(),
Integer
.
class
).
contains
(
code
))
.
map
(
VehicleWarnUser:
:
getMobile
).
collect
(
Collectors
.
toList
());
}
}
performance-api/src/main/java/com/clx/performance/enums/SmsTemplateEnum.java
0 → 100644
浏览文件 @
496ec2a7
package
com
.
clx
.
performance
.
enums
;
import
lombok.AllArgsConstructor
;
import
lombok.Getter
;
@Getter
@AllArgsConstructor
public
enum
SmsTemplateEnum
{
;
@Getter
@AllArgsConstructor
public
enum
Type
{
EXCEPTION_REPORT_DEAL
(
"childExceptionReportDeal"
,
"异常上报处理"
,
"{childNo:}"
),
;
private
final
String
code
;
private
final
String
msg
;
private
final
String
param
;
}
}
performance-api/src/main/java/com/clx/performance/enums/vehiclewarn/VehicleWarnConfigEnum.java
浏览文件 @
496ec2a7
...
...
@@ -22,7 +22,7 @@ public enum VehicleWarnConfigEnum {
LOAD_TIMEOUT
(
7
,
"运单-装车超时"
),
UNLOAD_TIMEOUT
(
8
,
"运单-卸车超时"
),
DELAY
(
9
,
"运单-运单延误"
),
EXCEPTION_REPORT_DEAL
(
10
,
"异常上报处理"
),
;
private
final
Integer
code
;
...
...
performance-api/src/main/java/com/clx/performance/param/mq/SendSmsNoticeParam.java
0 → 100644
浏览文件 @
496ec2a7
package
com
.
clx
.
performance
.
param
.
mq
;
import
lombok.Getter
;
import
lombok.Setter
;
import
java.util.List
;
import
java.util.Map
;
/**
* @ClassName SendSmsNoticeParam
* @Description
* @Author kavin
* @Date 2024/11/6 10:21
* @Version 1.0
*/
@Setter
@Getter
public
class
SendSmsNoticeParam
{
//短信模版code码
private
String
code
;
//发送手机号列表
private
List
<
String
>
mobileList
;
//短信模版参数
private
Map
<
String
,
Object
>
params
;
}
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论