Skip to content
项目
群组
代码片段
帮助
正在加载...
帮助
提交反馈
为 GitLab 提交贡献
登录
切换导航
I
ibznotify
项目
项目
详情
动态
版本
周期分析
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
统计图
议题
0
议题
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
CI / CD
CI / CD
流水线
作业
计划
统计图
Wiki
Wiki
代码片段
代码片段
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
统计图
创建新议题
作业
提交
议题看板
打开侧边栏
ibiz4jteam
ibznotify
提交
b8f5ace2
提交
b8f5ace2
编写于
8月 19, 2020
作者:
zhouweidong
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
消息版本检查
上级
e81fd98e
变更
2
显示空白字符变更
内嵌
并排
正在显示
2 个修改的文件
包含
99 行增加
和
35 行删除
+99
-35
Template.java
...main/java/cn/ibizlab/core/extensions/domain/Template.java
+0
-8
NotifyCoreService.java
...cn/ibizlab/core/extensions/service/NotifyCoreService.java
+99
-27
未找到文件。
ibznotify-core/src/main/java/cn/ibizlab/core/extensions/domain/Template.java
浏览文件 @
b8f5ace2
...
@@ -2,19 +2,11 @@ package cn.ibizlab.core.extensions.domain;
...
@@ -2,19 +2,11 @@ package cn.ibizlab.core.extensions.domain;
import
com.alibaba.fastjson.JSONArray
;
import
com.alibaba.fastjson.JSONArray
;
import
lombok.Data
;
import
lombok.Data
;
import
javax.validation.constraints.NotBlank
;
import
javax.validation.constraints.NotNull
;
import
javax.validation.constraints.NotNull
;
@Data
@Data
public
class
Template
{
public
class
Template
{
@NotBlank
(
message
=
"系统标识不能为空"
)
private
String
system
;
@NotNull
(
message
=
"模板不能为空"
)
@NotNull
(
message
=
"模板不能为空"
)
private
JSONArray
template
;
private
JSONArray
template
;
@NotNull
(
message
=
"模板类型不能为空"
)
private
int
templtypes
;
}
}
ibznotify-core/src/main/java/cn/ibizlab/core/extensions/service/NotifyCoreService.java
浏览文件 @
b8f5ace2
...
@@ -9,6 +9,7 @@ import cn.ibizlab.core.notify.service.IMsgOpenAccessService;
...
@@ -9,6 +9,7 @@ import cn.ibizlab.core.notify.service.IMsgOpenAccessService;
import
cn.ibizlab.core.notify.service.IMsgTemplateService
;
import
cn.ibizlab.core.notify.service.IMsgTemplateService
;
import
cn.ibizlab.core.notify.service.IMsgUserAccountService
;
import
cn.ibizlab.core.notify.service.IMsgUserAccountService
;
import
cn.ibizlab.util.errors.BadRequestAlertException
;
import
cn.ibizlab.util.errors.BadRequestAlertException
;
import
com.alibaba.fastjson.JSON
;
import
com.alibaba.fastjson.JSONArray
;
import
com.alibaba.fastjson.JSONArray
;
import
com.alibaba.fastjson.JSONObject
;
import
com.alibaba.fastjson.JSONObject
;
import
com.aliyuncs.CommonRequest
;
import
com.aliyuncs.CommonRequest
;
...
@@ -31,6 +32,7 @@ import org.springframework.context.annotation.Lazy;
...
@@ -31,6 +32,7 @@ import org.springframework.context.annotation.Lazy;
import
org.springframework.http.HttpEntity
;
import
org.springframework.http.HttpEntity
;
import
org.springframework.http.ResponseEntity
;
import
org.springframework.http.ResponseEntity
;
import
org.springframework.stereotype.Service
;
import
org.springframework.stereotype.Service
;
import
org.springframework.util.ObjectUtils
;
import
org.springframework.util.StringUtils
;
import
org.springframework.util.StringUtils
;
import
org.springframework.web.client.RestTemplate
;
import
org.springframework.web.client.RestTemplate
;
import
java.sql.Timestamp
;
import
java.sql.Timestamp
;
...
@@ -72,10 +74,11 @@ public class NotifyCoreService {
...
@@ -72,10 +74,11 @@ public class NotifyCoreService {
aliyun
,
aliyun
,
wechat
,
wechat
,
}
}
/**
/**
* 平台消息类型代码表
* 平台消息类型代码表
*/
*/
private
static
Map
<
Integer
,
String
>
msgTypes
=
new
HashMap
(){{
private
static
Map
<
Integer
,
String
>
templateType
=
new
HashMap
(){{
put
(
2
,
"aliyun-email"
);
put
(
2
,
"aliyun-email"
);
put
(
4
,
"aliyun-sms"
);
put
(
4
,
"aliyun-sms"
);
put
(
32
,
"wechat-msg"
);
put
(
32
,
"wechat-msg"
);
...
@@ -314,39 +317,89 @@ public class NotifyCoreService {
...
@@ -314,39 +317,89 @@ public class NotifyCoreService {
* @return
* @return
*/
*/
public
boolean
createMsgTemplate
(
Template
template
){
public
boolean
createMsgTemplate
(
Template
template
){
String
system
=
template
.
getSystem
().
toLowerCase
();
JSONArray
templates
=
template
.
getTemplate
();
JSONArray
templates
=
template
.
getTemplate
();
for
(
int
a
=
0
;
a
<
templates
.
size
();
a
++){
for
(
int
a
=
0
;
a
<
templates
.
size
();
a
++){
List
<
MsgOpenAccess
>
openAccesses
=
new
ArrayList
<>();
List
<
MsgOpenAccess
>
openAccesses
=
new
ArrayList
<>();
List
<
MsgTemplate
>
msgTemplates
=
new
ArrayList
<>();
List
<
MsgTemplate
>
msgTemplates
=
new
ArrayList
<>();
for
(
String
templateType
:
getMsgType
(
template
.
getTempltypes
())){
MsgTemplate
msgTempl
=
JSONObject
.
toJavaObject
(
templates
.
getJSONObject
(
a
),
MsgTemplate
.
class
);
//创建消息平台
boolean
isExist
=
checkMsgTemplate
(
msgTempl
);
MsgOpenAccess
openAccess
=
openAccessService
.
getById
(
system
+
templateType
);
if
(!
isExist
){
//rt预置消息类型
Collection
<
String
>
templTypes
=
templateType
.
values
();
//创建开放平台
for
(
String
openAccessType:
getOpenAccessType
(
templTypes
)){
String
openAccessId
=
String
.
format
(
"%s-%s"
,
msgTempl
.
getTid
(),
openAccessType
);
MsgOpenAccess
openAccess
=
openAccessService
.
getById
(
openAccessId
);
if
(
openAccess
==
null
)
if
(
openAccess
==
null
)
{
{
openAccess
=
new
MsgOpenAccess
();
openAccess
=
new
MsgOpenAccess
();
openAccess
.
setId
(
system
+
"-"
+
templateType
);
openAccess
.
setId
(
openAccessId
);
openAccess
.
setName
(
system
+
"-"
+
template
Type
);
openAccess
.
setName
(
openAccess
Type
);
openAccess
.
setDisabled
(
0
);
openAccess
.
setDisabled
(
0
);
openAccess
.
setOpenType
(
templateType
.
contains
(
"-"
)?
templateType
.
substring
(
0
,
templateType
.
indexOf
(
"-"
)):
template
Type
);
openAccess
.
setOpenType
(
openAccess
Type
);
openAccesses
.
add
(
openAccess
);
openAccesses
.
add
(
openAccess
);
}
}
}
//创建消息模板
//创建消息模板
MsgTemplate
msgTemplate
=
JSONObject
.
toJavaObject
(
templates
.
getJSONObject
(
a
),
MsgTemplate
.
class
);
for
(
String
templateType
:
templTypes
){
msgTemplate
.
setAccessId
(
openAccess
.
getId
());
MsgTemplate
msgTemplate
=
new
MsgTemplate
();
msgTemplate
.
setOpenType
(
templateType
.
contains
(
"-"
)?
templateType
.
substring
(
0
,
templateType
.
indexOf
(
"-"
)):
templateType
);
String
openAccessType
=
templateType
.
contains
(
"-"
)?
templateType
.
substring
(
0
,
templateType
.
indexOf
(
"-"
)):
templateType
;
msgTemplate
.
setAccessId
(
String
.
format
(
"%s-%s"
,
msgTempl
.
getTid
(),
openAccessType
));
msgTemplate
.
setOpenType
(
openAccessType
);
msgTemplate
.
setTemplateType
(
templateType
);
msgTemplate
.
setTemplateType
(
templateType
);
msgTemplate
.
setTid
(
msgTemplate
.
getTid
()+
"-"
+
templateType
);
msgTemplate
.
setTid
(
String
.
format
(
"%s-%s"
,
msgTempl
.
getTid
(),
templateType
));
msgTemplate
.
setTemplateName
(
msgTempl
.
getTemplateName
());
msgTemplate
.
setContent
(
msgTempl
.
getContent
());
msgTemplates
.
add
(
msgTemplate
);
msgTemplates
.
add
(
msgTemplate
);
}
}
if
(
openAccesses
.
size
()>
0
)
if
(
openAccesses
.
size
()>
0
)
openAccessService
.
saveOrUpd
ateBatch
(
openAccesses
);
openAccessService
.
cre
ateBatch
(
openAccesses
);
if
(
msgTemplates
.
size
()>
0
)
if
(
msgTemplates
.
size
()>
0
)
templateService
.
saveOrUpdateBatch
(
msgTemplates
);
templateService
.
createBatch
(
msgTemplates
);
}
}
}
return
true
;
return
true
;
}
}
/**
* 检查模板是否存在
* @param msgTemplate
* @return
*/
private
boolean
checkMsgTemplate
(
MsgTemplate
msgTemplate
)
{
boolean
isExist
=
false
;
if
(!
ObjectUtils
.
isEmpty
(
msgTemplate
.
getTid
())){
QueryWrapper
<
MsgOpenAccess
>
qw
=
new
QueryWrapper
();
qw
.
likeRight
(
"accessid"
,
msgTemplate
.
getTid
());
if
(
openAccessService
.
count
(
qw
)>
0
){
isExist
=
true
;
log
.
info
(
String
.
format
(
"消息模板[%s]已存在,忽略发布!"
,
msgTemplate
.
getTemplateName
()));
}
}
return
isExist
;
}
/**
* 获取开放平台
* @param templTypes
* @return
*/
private
List
<
String
>
getOpenAccessType
(
Collection
<
String
>
templTypes
){
List
openAccess
=
new
ArrayList
();
if
(
templTypes
.
size
()==
0
)
return
openAccess
;
for
(
String
template:
templTypes
){
if
(
template
.
contains
(
"-"
)){
String
openAccessType
=
template
.
substring
(
0
,
template
.
indexOf
(
"-"
));
if
(!
openAccess
.
contains
(
openAccessType
)){
openAccess
.
add
(
openAccessType
);
}
}
}
return
openAccess
;
}
/**
/**
* 发送消息
* 发送消息
* @param msg
* @param msg
...
@@ -364,7 +417,7 @@ public class NotifyCoreService {
...
@@ -364,7 +417,7 @@ public class NotifyCoreService {
else
{
else
{
switch
(
msgType
){
switch
(
msgType
){
case
"aliyun-sms"
:
case
"aliyun-sms"
:
sendAliSms
(
msgTemplate
.
getTid
(),
userIds
,
templParams
);
sendAliSms
(
msgTemplate
.
getTid
(),
userIds
,
templParams
==
null
?
null
:
JSONObject
.
parseObject
(
JSON
.
toJSONString
(
templParams
))
);
break
;
break
;
case
"aliyun-email"
:
case
"aliyun-email"
:
sendAliEMail
(
msgTemplate
.
getTid
(),
userIds
);
sendAliEMail
(
msgTemplate
.
getTid
(),
userIds
);
...
@@ -373,7 +426,7 @@ public class NotifyCoreService {
...
@@ -373,7 +426,7 @@ public class NotifyCoreService {
sendDingTalkMsg
(
msgTemplate
.
getTid
(),
userIds
);
sendDingTalkMsg
(
msgTemplate
.
getTid
(),
userIds
);
break
;
break
;
case
"wechat-msg"
:
case
"wechat-msg"
:
sendWeChatMsg
(
msgTemplate
.
getTid
(),
userIds
,
templParams
);
sendWeChatMsg
(
msgTemplate
.
getTid
(),
userIds
,
getWechatMsgTemplParams
(
templParams
)
);
break
;
break
;
default
:
default
:
throw
new
BadRequestAlertException
(
String
.
format
(
"发送消息失败,尚未提供[%s]类型对应的消息服务"
,
msgType
),
""
,
""
);
throw
new
BadRequestAlertException
(
String
.
format
(
"发送消息失败,尚未提供[%s]类型对应的消息服务"
,
msgType
),
""
,
""
);
...
@@ -383,6 +436,25 @@ public class NotifyCoreService {
...
@@ -383,6 +436,25 @@ public class NotifyCoreService {
return
true
;
return
true
;
}
}
/**
* 获取微信消息模板参数
* @param templParams
* @return
*/
private
JSONObject
getWechatMsgTemplParams
(
Map
<
String
,
Object
>
templParams
){
if
(
templParams
==
null
)
return
null
;
JSONObject
params
=
new
JSONObject
();
for
(
Map
.
Entry
<
String
,
Object
>
entry
:
templParams
.
entrySet
())
{
JSONObject
param
=
new
JSONObject
();
param
.
put
(
"value"
,
entry
.
getValue
());
params
.
put
(
entry
.
getKey
(),
param
);
}
return
params
;
}
/**
/**
* 解析数值代码表获取消息类型
* 解析数值代码表获取消息类型
* @param msgType
* @param msgType
...
@@ -390,7 +462,7 @@ public class NotifyCoreService {
...
@@ -390,7 +462,7 @@ public class NotifyCoreService {
*/
*/
private
List
<
String
>
getMsgType
(
int
msgType
){
private
List
<
String
>
getMsgType
(
int
msgType
){
List
<
String
>
useMsg
=
new
ArrayList
<>();
List
<
String
>
useMsg
=
new
ArrayList
<>();
for
(
Map
.
Entry
<
Integer
,
String
>
msg
:
msgTypes
.
entrySet
()){
for
(
Map
.
Entry
<
Integer
,
String
>
msg
:
templateType
.
entrySet
()){
if
((
msgType
&
msg
.
getKey
())
==
msg
.
getKey
()){
if
((
msgType
&
msg
.
getKey
())
==
msg
.
getKey
()){
useMsg
.
add
(
msg
.
getValue
());
useMsg
.
add
(
msg
.
getValue
());
}
}
...
...
编辑
预览
Markdown
格式
0%
请重试
or
添加新附件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
先完成此消息的编辑!
取消
想要评论请
注册
或
登录