diff --git a/jero-boot-incoming-payment/src/main/java/com/jero/common/service/SendMessageService.java b/jero-boot-incoming-payment/src/main/java/com/jero/common/service/SendMessageService.java index 831afc97..3a9b44a9 100644 --- a/jero-boot-incoming-payment/src/main/java/com/jero/common/service/SendMessageService.java +++ b/jero-boot-incoming-payment/src/main/java/com/jero/common/service/SendMessageService.java @@ -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); } diff --git a/jero-boot-incoming-payment/src/main/java/com/jero/common/service/impl/SendMessageServiceImpl.java b/jero-boot-incoming-payment/src/main/java/com/jero/common/service/impl/SendMessageServiceImpl.java index e064118d..482c4ce1 100644 --- a/jero-boot-incoming-payment/src/main/java/com/jero/common/service/impl/SendMessageServiceImpl.java +++ b/jero-boot-incoming-payment/src/main/java/com/jero/common/service/impl/SendMessageServiceImpl.java @@ -400,4 +400,175 @@ public class SendMessageServiceImpl implements SendMessageService { } } } + + @Override + public void SendMessageJobService(SendMessageDTO sendMessageDTO) { + if(StringUtils.isEmpty(sendMessageDTO.getTemplateCode())){ + throw new JeroBootException("模板编码不能为空!"); + } + List 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 map = sendMessageDTO.getTemplateParam(); + if(!Objects.isNull(map)) { + for (Map.Entry 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); + } + } + } } diff --git a/jero-boot-incoming-payment/src/main/java/com/jero/mail/controller/PayMailBillController.java b/jero-boot-incoming-payment/src/main/java/com/jero/mail/controller/PayMailBillController.java index 87fd213f..1845bb24 100644 --- a/jero-boot-incoming-payment/src/main/java/com/jero/mail/controller/PayMailBillController.java +++ b/jero-boot-incoming-payment/src/main/java/com/jero/mail/controller/PayMailBillController.java @@ -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