Skip to content
项目
群组
代码片段
帮助
当前项目
正在载入...
登录 / 注册
切换导航面板
C
clx-performance
项目
项目
详情
活动
周期分析
仓库
仓库
文件
提交
分支
标签
贡献者
图表
比较
统计图
议题
0
议题
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
CI / CD
CI / CD
流水线
作业
日程
统计图
Wiki
Wiki
代码片段
代码片段
成员
成员
折叠边栏
关闭边栏
活动
图像
聊天
创建新问题
作业
提交
问题看板
Open sidebar
姜武杰
clx-performance
Commits
eacde75c
提交
eacde75c
authored
10月 30, 2024
作者:
刘海泉
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
提交站内信线路预警和运单预警代码
上级
9b8b402a
隐藏空白字符变更
内嵌
并排
正在显示
5 个修改的文件
包含
107 行增加
和
37 行删除
+107
-37
InternalMessageDTO.java
...main/java/com/clx/performance/dto/InternalMessageDTO.java
+12
-4
SendInternalMessageService.java
...m/clx/performance/service/SendInternalMessageService.java
+1
-1
SendInternalMessageServiceImpl.java
...formance/service/impl/SendInternalMessageServiceImpl.java
+79
-31
LineWarnMqHandlerServiceImpl.java
...e/service/impl/linewarn/LineWarnMqHandlerServiceImpl.java
+13
-0
VehicleWarnMqHandlerServiceImpl.java
...ice/impl/vehiclewarn/VehicleWarnMqHandlerServiceImpl.java
+2
-1
没有找到文件。
clx-performance-web/src/main/java/com/clx/performance/dto/InternalMessageDTO.java
浏览文件 @
eacde75c
...
...
@@ -3,6 +3,8 @@ package com.clx.performance.dto;
import
lombok.Getter
;
import
lombok.Setter
;
import
java.util.List
;
/**
* @ClassName InternalMessageDTO
* @Description
...
...
@@ -13,12 +15,18 @@ import lombok.Setter;
@Getter
@Setter
public
class
InternalMessageDTO
{
//站内信大类业务code
private
String
businessType
;
//站内信模版业务详情自定义Code (业务原始Code或自定义code)
private
Integer
typeCode
;
//内容参数
List
<
String
>
variableList
;
//站内信模版业务详情Code
private
String
businessTypeDetailCode
;
//站内信模版内容
private
String
content
;
//站内信点对点的用户
private
Long
userNo
;
private
String
productCode
;
}
clx-performance-web/src/main/java/com/clx/performance/service/SendInternalMessageService.java
浏览文件 @
eacde75c
...
...
@@ -7,7 +7,7 @@ import java.util.List;
public
interface
SendInternalMessageService
{
//发送站内信的业务Code
void
sendInternalMessageMq
(
String
businessType
,
Integer
typeCode
,
List
<
String
>
variableList
,
Long
userNo
);
void
sendInternalMessageMq
(
String
productCode
,
String
businessType
,
Integer
typeCode
,
List
<
String
>
variableList
,
Long
userNo
);
//发送承运站内信
void
sendCarrierInternalMessage
(
InternalMessageDTO
internalMessageDTO
);
...
...
clx-performance-web/src/main/java/com/clx/performance/service/impl/SendInternalMessageServiceImpl.java
浏览文件 @
eacde75c
package
com
.
clx
.
performance
.
service
.
impl
;
import
com.alibaba.fastjson.JSON
;
import
com.clx.performance.common.MqWrapper
;
import
com.clx.performance.config.ConfiguredOpenProperties
;
import
com.clx.performance.dto.InternalMessageDTO
;
import
com.clx.performance.enums.InternalMessageTemplateEnum
;
...
...
@@ -21,15 +22,19 @@ import com.msl.user.vo.user.external.PageProductUserVo;
import
lombok.AllArgsConstructor
;
import
lombok.extern.slf4j.Slf4j
;
import
org.apache.commons.collections4.CollectionUtils
;
import
org.apache.commons.collections4.MapUtils
;
import
org.apache.commons.lang3.StringUtils
;
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.ArrayList
;
import
java.util.HashMap
;
import
java.util.List
;
import
java.util.Optional
;
import
java.util.*
;
import
java.util.stream.Collectors
;
import
static
com
.
clx
.
performance
.
constant
.
RabbitKeyConstants
.
SEND_CARRIER_INTERNAL_MESSAGE_EXCHANGE
;
import
static
com
.
clx
.
performance
.
constant
.
RabbitKeyConstants
.
SEND_CARRIER_INTERNAL_MESSAGE_ROUTING_KEY
;
/**
* @ClassName SendInternalMessageServiceImpl
* @Description
...
...
@@ -55,33 +60,43 @@ public class SendInternalMessageServiceImpl implements SendInternalMessageServic
//发送站内信的业务Code
@Override
public
void
sendInternalMessageMq
(
String
businessType
,
Integer
typeCode
,
List
<
String
>
variableList
,
Long
userNo
){
/* InternalMessageDTO dto = new InternalMessageDTO();
dto.setBusinessTypeDetailCode(businessTypeDetailCode);
dto.setContent(content);
public
void
sendInternalMessageMq
(
String
productCode
,
String
businessType
,
Integer
typeCode
,
List
<
String
>
variableList
,
Long
userNo
){
InternalMessageDTO
dto
=
new
InternalMessageDTO
();
dto
.
setBusinessType
(
businessType
);
dto
.
setTypeCode
(
typeCode
);
dto
.
setVariableList
(
variableList
);
dto
.
setUserNo
(
userNo
);
log.info("发送站内信消息开始,站内信业务Code:{},消息内容:{}", businessTypeDetailCode,JSON.toJSONString(dto));
dto
.
setProductCode
(
productCode
);
log
.
info
(
"发送站内信消息开始,站内信业务类型{},实际业务Code:{},消息内容:{}"
,
businessType
,
typeCode
,
JSON
.
toJSONString
(
dto
));
Message
body
=
MessageBuilder
.
withBody
(
JSON
.
toJSONString
(
new
MqWrapper
<>(
dto
)).
getBytes
()).
build
();
rabbitTemplate
.
send
(
SEND_CARRIER_INTERNAL_MESSAGE_EXCHANGE
,
SEND_CARRIER_INTERNAL_MESSAGE_ROUTING_KEY
,
body
);
log.info("发送站内信消息结束,站内信业务
Code:{}", businessTypeDetailCode);*/
log
.
info
(
"发送站内信消息结束,站内信业务
类型{},实际业务Code:{},"
,
businessType
,
typeCode
);
}
public
InternalMessageDTO
buildMqData
(
String
businessType
,
Integer
typeCode
,
List
<
String
>
variableList
,
Long
userNo
){
return
null
;
}
public
static
void
main
(
String
[]
args
)
{
List
<
String
>
list
=
new
ArrayList
<>();
list
.
add
(
"爱情"
);
list
.
add
(
"在这里"
);
String
str
=
"你的%s在那里%s"
;
//查找字符在字符串出现的次数
public
static
int
countCharTimes
(
String
mainStr
,
String
subStr
){
// 声明一个要返回的变量
int
count
=
0
;
// 声明一个初始的下标,从初始位置开始查找
int
index
=
0
;
// 获取主数据的长度
int
mainStrLength
=
mainStr
.
length
();
// 获取要查找的数据长度
int
subStrLength
=
subStr
.
length
();
// 如果要查找的数据长度大于主数据的长度则返回0
if
(
subStrLength
>
mainStrLength
){
return
0
;
}
// 循环使用indexOf查找出现的下标,如果出现一次则count++
String
result
=
String
.
format
(
str
,
list
.
toArray
());
System
.
out
.
println
(
result
);
while
((
index
=
mainStr
.
indexOf
(
subStr
,
index
))
!=
-
1
)
{
count
++;
index
+=
subStrLength
;
}
return
count
;
}
...
...
@@ -96,12 +111,27 @@ public class SendInternalMessageServiceImpl implements SendInternalMessageServic
@Override
public
void
sendCarrierInternalMessage
(
InternalMessageDTO
internalMessageDTO
)
{
Map
<
Integer
,
String
>
businessRelationMap
=
InternalMessageTemplateEnum
.
businessTypeMap
.
get
(
internalMessageDTO
.
getBusinessType
());
if
(
MapUtils
.
isEmpty
(
businessRelationMap
)){
log
.
warn
(
"通过业务类型:{}, 在businessTypeMap 未找到对应的映射关系"
,
internalMessageDTO
.
getBusinessType
());
return
;
}
String
businessTypeDetailCode
=
businessRelationMap
.
get
(
internalMessageDTO
.
getTypeCode
());
if
(
StringUtils
.
isBlank
(
businessTypeDetailCode
)){
log
.
warn
(
"通过详细业务类型:{}, businessRelationMap 未找到对应的站内信详细业务类型关系"
,
internalMessageDTO
.
getTypeCode
());
return
;
}
Optional
<
InternalMessageTemplateEnum
.
TemplateType
>
templateTypeOptional
=
InternalMessageTemplateEnum
.
TemplateType
.
getByBusinessTypeDetailCode
(
internalMessageDTO
.
getBusinessTypeDetailCode
()
);
businessTypeDetailCode
);
if
(
templateTypeOptional
.
isEmpty
()){
log
.
error
(
"通过站内信业务详情Code未找到对应的枚举类型,code:{}"
,
internalMessageDTO
.
getBusinessTypeDetailCode
()
);
throw
new
ServiceSystemException
(
ResultEnum
.
PARAM_ERROR
,
"发送站内信失败"
)
;
log
.
error
(
"通过站内信业务详情Code未找到对应的枚举类型,code:{}"
,
businessTypeDetailCode
);
return
;
}
InternalMessageTemplateEnum
.
TemplateType
templateType
=
templateTypeOptional
.
get
();
...
...
@@ -117,14 +147,14 @@ public class SendInternalMessageServiceImpl implements SendInternalMessageServic
//发送站内信
DefaultMessageRoute
messageRoute
=
new
DefaultMessageRoute
();
//TODO 自己定义,提供给消息中心
messageRoute
.
put
(
"product-code"
,
InternalMessageTemplateEnum
.
PlatformType
.
CARRIER
.
ge
tCode
());
messageRoute
.
put
(
"product-code"
,
internalMessageDTO
.
getProduc
tCode
());
message
.
setMessageRoute
(
messageRoute
);
//直接指定内容
DefaultMessageContent
defaultMessageContent
=
new
DefaultMessageContent
();
defaultMessageContent
.
setTitle
(
templateType
.
getBusinessDetailType
().
getTitle
());
defaultMessageContent
.
setContext
(
internalMessageDTO
.
getContent
(
));
defaultMessageContent
.
setContext
(
replaceContent
(
templateType
.
getBusinessDetailType
().
getContent
(),
internalMessageDTO
.
getVariableList
()
));
HashMap
<
String
,
Object
>
data
=
new
HashMap
<>();
data
.
put
(
"businessDetailTypeCode"
,
templateType
.
getBusinessDetailType
().
getCode
());
...
...
@@ -137,9 +167,17 @@ public class SendInternalMessageServiceImpl implements SendInternalMessageServic
//组装发送人 指定接收人
SpecifiesRecipient
messageRecipient
=
new
SpecifiesRecipient
();
List
<
Long
>
list
=
getPlatformUser
();
List
<
Long
>
list
;
if
(
Objects
.
nonNull
(
internalMessageDTO
.
getUserNo
())){
list
=
new
ArrayList
<>();
list
.
add
(
internalMessageDTO
.
getUserNo
());
}
else
{
list
=
getPlatformUser
(
internalMessageDTO
.
getProductCode
());
}
if
(
CollectionUtils
.
isEmpty
(
list
)){
log
.
error
(
"查询承运平台下全部用户返回为空"
);
log
.
error
(
"=======================发送站内信的用户列表为空=========================="
);
return
;
}
messageRecipient
.
setUsers
(
list
);
message
.
setMessageRecipient
(
messageRecipient
);
...
...
@@ -153,9 +191,9 @@ public class SendInternalMessageServiceImpl implements SendInternalMessageServic
public
List
<
Long
>
getPlatformUser
(){
public
List
<
Long
>
getPlatformUser
(
String
productCode
){
PageProductUsersParam
param
=
new
PageProductUsersParam
();
param
.
setProductCode
(
InternalMessageTemplateEnum
.
PlatformType
.
CARRIER
.
getCode
()
);
param
.
setProductCode
(
productCode
);
param
.
setPage
(
1
);
param
.
setPageSize
(
10000
);
log
.
info
(
"开始查询承运平台下的所有用户信息"
);
...
...
@@ -171,6 +209,16 @@ public class SendInternalMessageServiceImpl implements SendInternalMessageServic
}
}
//构建站内信中的内容,替换变量
private
String
replaceContent
(
String
content
,
List
<
String
>
list
){
int
times
=
countCharTimes
(
content
,
"%s"
);
if
(
times
!=
list
.
size
()){
log
.
error
(
"替换的变量和字符串中需要的变量数量不一致"
);
return
null
;
}
return
String
.
format
(
content
,
list
.
toArray
());
}
}
clx-performance-web/src/main/java/com/clx/performance/service/impl/linewarn/LineWarnMqHandlerServiceImpl.java
浏览文件 @
eacde75c
...
...
@@ -14,6 +14,7 @@ import com.clx.performance.dao.linewarn.LineWarnInfoDao;
import
com.clx.performance.dao.linewarn.LineWarnOrderGoodsDao
;
import
com.clx.performance.dao.vehiclewarn.VehicleWarnUserDao
;
import
com.clx.performance.dto.linewarn.LineWarnCommonInfoDTO
;
import
com.clx.performance.enums.InternalMessageTemplateEnum
;
import
com.clx.performance.enums.OrderGoodsStatusEnum
;
import
com.clx.performance.enums.ResultEnum
;
import
com.clx.performance.enums.linewarn.LineWarnOrderGoodsEnum
;
...
...
@@ -26,6 +27,7 @@ import com.clx.performance.param.mq.linewarn.LineWarnLineWarnMqParam;
import
com.clx.performance.param.mq.linewarn.LineWarnNoticeMqParam
;
import
com.clx.performance.param.mq.linewarn.LineWarnOrderChildWarnMqParam
;
import
com.clx.performance.param.mq.linewarn.LineWarnOrderGoodsAddMqParam
;
import
com.clx.performance.service.SendInternalMessageService
;
import
com.clx.performance.service.linewarn.*
;
import
com.clx.performance.utils.LocalDateTimeUtils
;
import
com.clx.performance.utils.gd.GdUtils
;
...
...
@@ -37,6 +39,7 @@ import org.springframework.transaction.annotation.Transactional;
import
java.math.BigDecimal
;
import
java.time.LocalDateTime
;
import
java.util.ArrayList
;
import
java.util.Collections
;
import
java.util.List
;
import
java.util.Objects
;
...
...
@@ -83,6 +86,8 @@ public class LineWarnMqHandlerServiceImpl implements LineWarnMqHandlerService {
private
VehicleWarnUserDao
vehicleWarnUserDao
;
@Autowired
private
ClxMessageOpenapiFeign
clxMessageOpenapiFeign
;
@Autowired
SendInternalMessageService
sendInternalMessageService
;
@Transactional
(
rollbackFor
=
Exception
.
class
)
...
...
@@ -212,6 +217,14 @@ public class LineWarnMqHandlerServiceImpl implements LineWarnMqHandlerService {
}
}
//发送站内信mq
sendInternalMessageService
.
sendInternalMessageMq
(
InternalMessageTemplateEnum
.
PlatformType
.
CARRIER
.
getCode
(),
InternalMessageTemplateEnum
.
BusinessType
.
LINE_WARN
.
getCode
(),
vehicleWarnInfo
.
getWarnType
(),
Collections
.
singletonList
(
vehicleWarnInfo
.
getOrderGoodsNo
()),
null
);
if
(
mobileList
.
isEmpty
())
{
return
;}
log
.
info
(
"线路预警通知, id:{}, mobileList:{}"
,
vehicleWarnInfo
.
getId
(),
JSON
.
toJSONString
(
mobileList
));
...
...
clx-performance-web/src/main/java/com/clx/performance/service/impl/vehiclewarn/VehicleWarnMqHandlerServiceImpl.java
浏览文件 @
eacde75c
...
...
@@ -343,7 +343,8 @@ public class VehicleWarnMqHandlerServiceImpl implements VehicleWarnMqHandlerServ
//发送站内信mq
sendInternalMessageService
.
sendInternalMessageMq
(
InternalMessageTemplateEnum
.
BusinessType
.
CHILD_WARN
.
getCode
(),
sendInternalMessageService
.
sendInternalMessageMq
(
InternalMessageTemplateEnum
.
PlatformType
.
CARRIER
.
getCode
(),
InternalMessageTemplateEnum
.
BusinessType
.
CHILD_WARN
.
getCode
(),
vehicleWarnInfo
.
getWarnType
(),
Collections
.
singletonList
(
vehicleWarnInfo
.
getChildNo
()),
null
);
List
<
String
>
mobileList
=
new
ArrayList
<>();
...
...
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论