提交 ce01c4bc 编写于 作者: zhouweidong's avatar zhouweidong

钉钉、微信、阿里消息集成

上级 17e4038f
...@@ -3,6 +3,7 @@ package cn.ibizlab.core.extensions.domain; ...@@ -3,6 +3,7 @@ package cn.ibizlab.core.extensions.domain;
import lombok.Data; import lombok.Data;
import javax.validation.constraints.NotBlank; import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import java.util.Map; import java.util.Map;
@Data @Data
...@@ -14,8 +15,8 @@ public class Msg { ...@@ -14,8 +15,8 @@ public class Msg {
@NotBlank(message="模板标识不能为空") @NotBlank(message="模板标识不能为空")
private String templateid; private String templateid;
@NotBlank(message="模板类型不能为空") @NotNull(message="模板类型不能为空")
private String msgtypes; private int msgtypes;
@NotBlank(message="用户标识不能为空") @NotBlank(message="用户标识不能为空")
private String userids; private String userids;
......
...@@ -14,7 +14,6 @@ import com.alibaba.fastjson.JSONObject; ...@@ -14,7 +14,6 @@ import com.alibaba.fastjson.JSONObject;
import com.aliyuncs.CommonRequest; import com.aliyuncs.CommonRequest;
import com.aliyuncs.DefaultAcsClient; import com.aliyuncs.DefaultAcsClient;
import com.aliyuncs.IAcsClient; import com.aliyuncs.IAcsClient;
import com.aliyuncs.dm.model.v20151123.BatchSendMailRequest;
import com.aliyuncs.dm.model.v20151123.SingleSendMailRequest; import com.aliyuncs.dm.model.v20151123.SingleSendMailRequest;
import com.aliyuncs.http.MethodType; import com.aliyuncs.http.MethodType;
import com.aliyuncs.profile.DefaultProfile; import com.aliyuncs.profile.DefaultProfile;
...@@ -65,14 +64,6 @@ public class NotifyCoreService { ...@@ -65,14 +64,6 @@ public class NotifyCoreService {
* 阿里短信服务单处理行为 * 阿里短信服务单处理行为
*/ */
private final String aliSendSmsAction="SendSms"; private final String aliSendSmsAction="SendSms";
/**
* 阿里短信服批处理行为
*/
private final String aliSendBatchSmsAction="SendBatchSms";
/**
* 阿里邮件批处理行为
*/
private final String aliBatchSendMailAction="BatchSendMail";
/** /**
* 消息类型 * 消息类型
*/ */
...@@ -81,6 +72,15 @@ public class NotifyCoreService { ...@@ -81,6 +72,15 @@ public class NotifyCoreService {
aliyun, aliyun,
wechat, wechat,
} }
/**
* 平台消息类型代码表
*/
private static Map<Integer,String> msgTypes = new HashMap(){{
put(2,"email");
put(4,"sms");
put(32,"wechat");
put(64,"dingtalk");
}};
@Autowired @Autowired
@Lazy @Lazy
...@@ -170,24 +170,14 @@ public class NotifyCoreService { ...@@ -170,24 +170,14 @@ public class NotifyCoreService {
CommonRequest request = new CommonRequest(); CommonRequest request = new CommonRequest();
request.setSysMethod(MethodType.POST); request.setSysMethod(MethodType.POST);
request.setSysDomain(aliSmsDomain); request.setSysDomain(aliSmsDomain);
if(authUserId.contains(",")){
request.setSysAction(aliSendBatchSmsAction); request.setSysAction(aliSendSmsAction);
request.putQueryParameter("RegionId", region); request.putQueryParameter("RegionId", region);
request.putQueryParameter("PhoneNumbers", Arrays.asList(authUserId.split(",")).toString()); request.putQueryParameter("PhoneNumbers", authUserId);
request.putQueryParameter("SignName", Arrays.asList(template.getTemplateName().split(",")).toString()); request.putQueryParameter("SignName", template.getTemplateName());
request.putQueryParameter("TemplateCode", template.getTemplateId()); request.putQueryParameter("TemplateCode", template.getTemplateId());
request.putQueryParameter("TemplateParam", templParams.toString()); request.putQueryParameter("TemplateParam", templParams.toString());
client.getCommonResponse(request); client.getCommonResponse(request);
}
else{
request.setSysAction(aliSendSmsAction);
request.putQueryParameter("RegionId", region);
request.putQueryParameter("PhoneNumbers", authUserId);
request.putQueryParameter("SignName", template.getTemplateName());
request.putQueryParameter("TemplateCode", template.getTemplateId());
request.putQueryParameter("TemplateParam", templParams.toString());
client.getCommonResponse(request);
}
log.info(String.format("成功向用户[%s]发送一条短信",authUserId)); log.info(String.format("成功向用户[%s]发送一条短信",authUserId));
return true; return true;
} }
...@@ -209,24 +199,14 @@ public class NotifyCoreService { ...@@ -209,24 +199,14 @@ public class NotifyCoreService {
DefaultProfile profile = DefaultProfile.getProfile(StringUtils.isEmpty(region)?"cn-hangzhou":region, accessKey, accessSecret); DefaultProfile profile = DefaultProfile.getProfile(StringUtils.isEmpty(region)?"cn-hangzhou":region, accessKey, accessSecret);
IAcsClient client = new DefaultAcsClient(profile); IAcsClient client = new DefaultAcsClient(profile);
if(authUserId.contains(",")){ SingleSendMailRequest request = new SingleSendMailRequest();
BatchSendMailRequest request = new BatchSendMailRequest(); request.setAccountName(template.getTemplateId());
request.setTemplateName(template.getTemplateName()); request.setAddressType(1);
request.setAccountName(template.getTemplateId()); request.setReplyToAddress(false);
request.setReceiversName(authUserId); request.setToAddress(authUserId);
request.setAddressType(1); request.setSubject(template.getTemplateName());
request.setActionName(aliBatchSendMailAction); request.setHtmlBody(template.getContent());
} client.getAcsResponse(request);
else{
SingleSendMailRequest request = new SingleSendMailRequest();
request.setAccountName(template.getTemplateId());
request.setAddressType(1);
request.setReplyToAddress(false);
request.setToAddress(authUserId);
request.setSubject(template.getTemplateName());
request.setHtmlBody(template.getContent());
client.getAcsResponse(request);
}
log.info(String.format("成功向用户[%s]发送一条邮件",authUserId)); log.info(String.format("成功向用户[%s]发送一条邮件",authUserId));
return true; return true;
} }
...@@ -245,6 +225,10 @@ public class NotifyCoreService { ...@@ -245,6 +225,10 @@ public class NotifyCoreService {
paramMap.put("template_id",template.getTemplateId()); paramMap.put("template_id",template.getTemplateId());
paramMap.put("touser",authUserId); paramMap.put("touser",authUserId);
paramMap.put("data",templParams); paramMap.put("data",templParams);
JSONObject obj=new JSONObject();
obj.put("value","birdle test");
templParams.put("result",obj);
HttpEntity request = new HttpEntity(paramMap); HttpEntity request = new HttpEntity(paramMap);
ResponseEntity<String> result = restTemplate.postForEntity(String.format(weChatSendMsgApi,openAccess.getAccessToken()), request , String.class); ResponseEntity<String> result = restTemplate.postForEntity(String.format(weChatSendMsgApi,openAccess.getAccessToken()), request , String.class);
getResult(result.getBody()); getResult(result.getBody());
...@@ -372,20 +356,19 @@ public class NotifyCoreService { ...@@ -372,20 +356,19 @@ public class NotifyCoreService {
public boolean sendMsg(Msg msg){ public boolean sendMsg(Msg msg){
String system = msg.getSystem(); String system = msg.getSystem();
String templateId =msg.getTemplateid(); String templateId =msg.getTemplateid();
String msgTypes=msg.getMsgtypes();
String userIds=msg.getUserids(); String userIds=msg.getUserids();
Map templParams=msg.getTemplparams(); Map templParams=msg.getTemplparams();
for(String msgType:msgTypes.split(",")){ for(String msgType:getMsgType(msg.getMsgtypes())){
MsgTemplate msgTemplate=templateService.getById(system+templateId+msgType); MsgTemplate msgTemplate=templateService.getById(system+templateId+msgType);
if(msgTemplate==null){ if(msgTemplate==null){
throw new BadRequestAlertException(String.format("发送消息失败,无法获取到[%s]对应的rt模板",templateId),"",""); throw new BadRequestAlertException(String.format("发送消息失败,无法获取到[%s]对应的rt模板",templateId),"","");
} }
else{ else{
switch(msgType){ switch(msgType){
case "aliyun-sms": case "sms":
sendAliSms(msgTemplate.getTid(),userIds,templParams); sendAliSms(msgTemplate.getTid(),userIds,templParams);
break; break;
case "aliyun-email": case "email":
sendAliEMail(msgTemplate.getTid(),userIds); sendAliEMail(msgTemplate.getTid(),userIds);
break; break;
case "dingtalk": case "dingtalk":
...@@ -402,4 +385,19 @@ public class NotifyCoreService { ...@@ -402,4 +385,19 @@ public class NotifyCoreService {
return true; return true;
} }
/**
* 解析数值代码表获取消息类型
* @param msgType
* @return
*/
private List<String> getMsgType(int msgType){
List<String> useMsg=new ArrayList<>();
for (Map.Entry<Integer,String> msg : msgTypes.entrySet()){
if((msgType & msg.getKey()) == msg.getKey()){
useMsg.add(msg.getValue());
}
}
return useMsg;
}
} }
Markdown 格式
0% or
您添加了 0 到此讨论。请谨慎行事。
先完成此消息的编辑!
想要评论请 注册