修改消息

This commit is contained in:
梁琦涛
2021-10-22 16:29:48 +08:00
parent 44eb6ba02e
commit 49b17658dc
5 changed files with 189 additions and 1 deletions
@@ -12,4 +12,13 @@ public interface SendMessageService {
* @Exception
*/
void SendMessageService(SendMessageDTO sendMessageDTO);
/**
* @Description 发送短信,消息,邮件(定时任务专用,不抛异常)
* @Author lqt
* @Date 2021/9/24
* @Param sendMessageDTO
* @Return
* @Exception
*/
void SendMessageJobService(SendMessageDTO sendMessageDTO);
}
@@ -400,4 +400,175 @@ public class SendMessageServiceImpl implements SendMessageService {
}
}
}
@Override
public void SendMessageJobService(SendMessageDTO sendMessageDTO) {
if(StringUtils.isEmpty(sendMessageDTO.getTemplateCode())){
throw new JeroBootException("模板编码不能为空!");
}
List<SysMessageTemplate> sysSmsTemplates = sysMessageTemplateService.selectByCode(sendMessageDTO.getTemplateCode());
if(CollectionUtils.isEmpty(sysSmsTemplates)){
throw new JeroBootException("消息模板不能为空!");
}
SysMessageTemplate sysSmsTemplate = sysSmsTemplates.get(0);
// 没有选项,不发送消息
String templateType = sysSmsTemplate.getTemplateType();
if(StringUtils.isBlank(templateType)){
return;
}
//模板标题
String title = sysBaseAPI.translateDict("notice_type",sysSmsTemplate.getTemplateName());
//模板内容
String content = sysSmsTemplate.getTemplateContent();
HashMap<String,String> map = sendMessageDTO.getTemplateParam();
if(!Objects.isNull(map)) {
for (Map.Entry<String, String> entry : map.entrySet()) {
String str = "${" + entry.getKey() + "}";
content = content.replace(str, entry.getValue());
}
}
// 1短信 2邮件 3系统
// 发送邮件 true
String fromUser = sendMessageDTO.getFromUser();
LoginUser loginUser = sysBaseAPI.getUserByName(fromUser);
if(templateType.contains(ProjectCommon.MESSAGE_TYPE2)){
if(StringUtils.isEmpty(sendMessageDTO.getEmail())){
throw new JeroBootException("发送邮件,邮箱地址不能为空!");
}
try {
String email = loginUser.getEmail();
String emailPassword = loginUser.getEmailPassword();
//如果发件人没有邮箱或邮箱密码则使用admin账户的邮箱密码
if (StringUtils.isBlank(email) || StringUtils.isBlank(emailPassword)) {
loginUser = sysBaseAPI.getUserByName("admin");
email = loginUser.getEmail();
emailPassword = loginUser.getEmailPassword();
}
email = PasswordUtil.decrypt(email);
emailPassword = PasswordUtil.decrypt(emailPassword);
EmailSendMsgHandle emailHandle = new EmailSendMsgHandle(email,emailPassword);
// 发送带附件邮箱
if(!CollectionUtils.isEmpty(sendMessageDTO.getListFile())){
emailHandle.SendMsgAndFile(sendMessageDTO.getEmail(), title, content,sendMessageDTO.getListFile());
}else{
//如果有通知内容就替换
if (StringUtils.isNotBlank(sendMessageDTO.getMeetingNotice())){
emailHandle.SendMsg(sendMessageDTO.getEmail(), title, sendMessageDTO.getMeetingNotice());
}else {
emailHandle.SendMsg(sendMessageDTO.getEmail(), title, content);
}
}
}catch (Exception e){
log.error("发送邮件异常",e);
}
}
// 发送消息
if(templateType.contains(ProjectCommon.MESSAGE_TYPE3)){
if(StringUtils.isEmpty(sendMessageDTO.getToUser())){
throw new JeroBootException("发送消息,账号不能为空!");
}
try {
String toUser = sendMessageDTO.getToUser();
String busId = sendMessageDTO.getBusId();
String busType = sendMessageDTO.getBusType();
SysAnnouncement announcement = new SysAnnouncement();
announcement.setTitile(sysSmsTemplate.getTemplateName());
announcement.setMsgContent(content);
announcement.setSender(fromUser);
announcement.setPriority(CommonConstant.PRIORITY_M);
announcement.setMsgType(CommonConstant.MSG_TYPE_UESR);
announcement.setSendStatus(CommonConstant.HAS_SEND);
announcement.setSendTime(new Date());
announcement.setMsgCategory(CommonConstant.MSG_CATEGORY_2);
announcement.setDelFlag(String.valueOf(CommonConstant.DEL_FLAG_0));
announcement.setBusId(busId);
announcement.setBusType(busType);
if(!StringUtils.isEmpty(busType)){
announcement.setOpenType(MessageUrlEnums.getByType(busType).getOpenType());
announcement.setOpenPage(MessageUrlEnums.getByType(busType).getOpenPage());
}
announcement.setTemplateCode(sendMessageDTO.getTemplateCode());
sysAnnouncementService.save(announcement);
// 2.插入用户通告阅读标记表记录
String[] userIds = toUser.split(",");
String anntId = announcement.getId();
for (String id : userIds) {
if (oConvertUtils.isNotEmpty(id)) {
LoginUser user = new LoginUser();
SysUser sysUser = sysUserService.getUserByName(id);
if (Objects.isNull(sysUser)) {
PayContactsManagement contactsManagement = sysUserService.getPayContactsManagementByPhone(PasswordUtil.encrypt(id));
if (contactsManagement == null) {
continue;
} else {
BeanUtils.copyProperties(contactsManagement, user);
}
} else {
BeanUtils.copyProperties(sysUser, user);
}
SysAnnouncementSend announcementSend = new SysAnnouncementSend();
announcementSend.setAnntId(anntId);
announcementSend.setUserId(user.getId());
announcementSend.setReadFlag(CommonConstant.NO_READ_FLAG);
sysAnnouncementSendService.save(announcementSend);
JSONObject obj = new JSONObject();
obj.put(WebsocketConst.MSG_CMD, WebsocketConst.CMD_USER);
obj.put(WebsocketConst.MSG_USER_ID, user.getId());
obj.put(WebsocketConst.MSG_ID, announcement.getId());
obj.put(WebsocketConst.MSG_TXT, title);
webSocket.sendMessage(user.getId(), obj.toJSONString());
}
}
}catch (Exception e){
log.error("发送消息异常",e);
}
}
// todo 发送短信 待完成
if(templateType.contains(ProjectCommon.MESSAGE_TYPE1)){
if(StringUtils.isEmpty(sendMessageDTO.getPhone())){
throw new JeroBootException("发送短信,手机号不能为空!");
}
try {
String sender = "";
String signature = "";
String templateId = "";
String codeType = sendMessageDTO.getTemplateCode();
switch (codeType) {
case "QY_11_CKTZ_PAY":
// 中汽中心标准所-企业端-催款通知-1
sender = "8821092414406";
signature = "中汽中心标准所";
templateId = "518b44718fb6403094f7d3e7b1fb6555";
break;
default:
throw new JeroBootException("codeType flase.");
}
String str = "";
// 企业端
if(Objects.equals(sendMessageDTO.getTemplateCode().substring(0,2),"QY")){
str = CompanyMessageEnums.getByCode(sendMessageDTO.getTemplateCode()).getField();
}
String templateParas = "";
if(!StringUtils.isEmpty(str)){
StringBuilder sb = new StringBuilder();
sb.append("[");
String[] s = str.split(",");
for (int i = 0; i < s.length; i++) {
if(map.containsKey(s[i])){
sb.append("\"" + map.get(s[i]) + "\"");
if(i < (s.length - 1)){
sb.append(",");
}
}
}
sb.append("]");
templateParas = sb.toString();
}
sysBaseAPI.sendMessage(sendMessageDTO.getPhone(),sender,templateId,signature,templateParas);
}catch (Exception e){
log.error("发送短信异常",e);
}
}
}
}
@@ -5,6 +5,7 @@ import java.util.*;
import java.util.stream.Collectors;
import cn.hutool.core.util.ObjectUtil;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
@@ -283,6 +284,9 @@ public class PayMailBillController extends JeroController<PayMailBill, IPayMailB
sendMessageDTO.setTemplateCode(CompanyMessageEnums.MSG9.getCode());
sendMessageDTO.setTemplateParam(map);
sendMessageDTO.setBusType("C_OPEN_TYPE9");
JSONObject jsonObject = new JSONObject();
jsonObject.put("id",payMailBill.getPostNo());
sendMessageDTO.setBusId(jsonObject.toJSONString());
sendMessageService.SendMessageService(sendMessageDTO);
}
return Result.OK("编辑成功!");
@@ -4,6 +4,7 @@ import java.util.*;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.StringUtils;
import com.jero.common.api.vo.Result;
@@ -138,6 +139,9 @@ public class PayMailContractController extends JeroController<PayMailContract, I
sendMessageDTO.setFromUser(sysUser.getUsername());
sendMessageDTO.setTemplateCode(CompanyMessageEnums.MSG10.getCode());
sendMessageDTO.setTemplateParam(map);
JSONObject jsonObject = new JSONObject();
jsonObject.put("id",payMailContract.getPostNo());
sendMessageDTO.setBusId(jsonObject.toJSONString());
sendMessageDTO.setBusType("C_OPEN_TYPE10");
sendMessageService.SendMessageService(sendMessageDTO);
}
@@ -55,7 +55,7 @@ public class RemindersAllJob implements Job {
JSONObject json = new JSONObject();
json.put("id",p.getId());
sendMessageDTO.setBusId(json.toJSONString());
sendMessageService.SendMessageService(sendMessageDTO);
sendMessageService.SendMessageJobService(sendMessageDTO);
});
}
}