消息修改

This commit is contained in:
梁琦涛
2021-09-24 13:53:36 +08:00
parent 396e7079f1
commit 15081d4dbb
15 changed files with 332 additions and 25 deletions
@@ -8,6 +8,7 @@ import com.jero.common.system.vo.*;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Set;
/**
@@ -288,7 +289,7 @@ public interface ISysBaseAPI extends CommonAPI {
* @param templateCode 模板编码 必传
* @param map 模板替换参数 必传
*/
void sendEmailTemplateMsg(String email,String title,String templateCode,HashMap<String,String> map);
void sendEmailTemplateMsg(String email, String title, String templateCode, Map<String,String> map);
/**
* 41根据部门id查询部门所有的父级(不包含自己)
* @author 马志朝
@@ -323,4 +324,13 @@ public interface ISysBaseAPI extends CommonAPI {
* 发送短信验证码
*/
void sendVerificationCode(String phone, String codeType, String codeTime,String templateParas);
/**
* 发送短信
* @param phone 手机号
* @param codeType 发送类型
* @param codeTime 超时时间
* @param templateCode 模板编码
* @param map 参数集合
*/
void sendSMS(String phone, String codeType, String codeTime,String templateCode,HashMap<String,String> map);
}
@@ -94,4 +94,40 @@ public class ProjectCommon {
* 邮寄状态(0:未邮寄,1:已邮寄)
*/
public final static Integer POST_STATUS1 = 1;
/**
* 收入合同处新增标识 flag = 1
*/
public final static String FLAG = "1";
/**
* 项目提醒
*/
public final static String ALERT1 = "1";
/**
* 合同提醒
*/
public final static String ALERT2 = "2";
/**
* 会议提醒
*/
public final static String ALERT3 = "3";
/**
* 打包提醒
*/
public final static String ALERT4 = "4";
/**
* 企业提醒
*/
public final static String ALERT5 = "5";
/**
* 文件提醒
*/
public final static String ALERT6 = "6";
/**
* 邮寄提醒
*/
public final static String ALERT7 = "7";
/**
* 催款提醒
*/
public final static String ALERT8 = "8";
}
@@ -0,0 +1,9 @@
package com.jero.common.common;
public class RoleCommon {
/**
* 项目负责人
*/
public final static String XMFZR = "xmfzr";
}
@@ -0,0 +1,63 @@
package com.jero.common.dto;
import lombok.Data;
import java.io.Serializable;
import java.util.HashMap;
/**
* @Description 发送短信,消息,邮件
* @Author lqt
* @Date 2021/9/24
*/
@Data
public class SendMessageDTO implements Serializable {
/**
* 发送短信设置true
*/
private boolean sendSMS;
/**
* 发送消息设置true
*/
private boolean sendMessage;
/**
* 发送email设置true
*/
private boolean sendEmail;
/**
* 发送人(用户登录账户)
*/
private String fromUser;
/**
* 发送给(用户登录账户)
*/
private String toUser;
/**
* 手机号(发送短信必传)
*/
private String phone;
/**
* 邮箱地址(发送邮箱必传)
*/
private String email;
/**
* 消息主题
*/
private String title;
/**
* 业务类型
*/
private String busType;
/**
* 业务id
*/
private String busId;
/**
* 模板编码
*/
private String templateCode;
/**
* 模板参数
*/
private HashMap<String, String> templateParam;
}
@@ -0,0 +1,15 @@
package com.jero.common.service;
import com.jero.common.dto.SendMessageDTO;
public interface SendMessageService {
/**
* @Description 发送短信,消息,邮件
* @Author lqt
* @Date 2021/9/24
* @Param sendMessageDTO
* @Return
* @Exception
*/
void SendMessageService(SendMessageDTO sendMessageDTO);
}
@@ -0,0 +1,53 @@
package com.jero.common.service.impl;
import com.jero.common.api.dto.message.BusTemplateMessageDTO;
import com.jero.common.dto.SendMessageDTO;
import com.jero.common.enums.CompanyMessageEnums;
import com.jero.common.service.SendMessageService;
import com.jero.common.system.api.ISysBaseAPI;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.core.env.Environment;
import org.springframework.stereotype.Service;
import java.util.Objects;
@Service
public class SendMessageServiceImpl implements SendMessageService {
@Autowired
private ISysBaseAPI sysBaseAPI;
@Autowired
private Environment env;
/**
* 超时时间
*/
private String time = "60";
/**
* 短信类型
*/
private String type = "5";
@Override
public void SendMessageService(SendMessageDTO sendMessageDTO) {
// 发送邮件 true
if(sendMessageDTO.isSendEmail()){
sysBaseAPI.sendEmailTemplateMsg(sendMessageDTO.getEmail(), sendMessageDTO.getTitle(), sendMessageDTO.getTemplateCode(),sendMessageDTO.getTemplateParam());
}
// 发送消息
if(sendMessageDTO.isSendMessage()){
BusTemplateMessageDTO busTemplateMessageDTO = new BusTemplateMessageDTO();
busTemplateMessageDTO.setTitle(sendMessageDTO.getTitle());
busTemplateMessageDTO.setFromUser(sendMessageDTO.getFromUser());
busTemplateMessageDTO.setToUser(sendMessageDTO.getToUser());
busTemplateMessageDTO.setTemplateCode(sendMessageDTO.getTemplateCode());
busTemplateMessageDTO.setTemplateParam(sendMessageDTO.getTemplateParam());
busTemplateMessageDTO.setBusType(sendMessageDTO.getBusType());
busTemplateMessageDTO.setBusId(sendMessageDTO.getBusId());
// 发送消息
sysBaseAPI.sendBusTemplateAnnouncement(busTemplateMessageDTO);
}
// todo 发送短信 待完成
if(Objects.equals(env.getProperty("huaWeiSms.open"),true) && sendMessageDTO.isSendSMS()){
sysBaseAPI.sendSMS(sendMessageDTO.getPhone(),type,time,sendMessageDTO.getTemplateCode(),sendMessageDTO.getTemplateParam());
}
}
}
@@ -13,6 +13,7 @@ import com.alibaba.fastjson.JSONArray;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.jero.common.api.vo.Result;
import com.jero.common.common.ProjectCommon;
import com.jero.common.exception.JeroBootException;
import com.jero.common.service.ProjectDetailService;
import com.jero.common.system.api.ISysBaseAPI;
@@ -6,8 +6,11 @@ import javax.servlet.http.HttpServletRequest;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.jero.common.api.dto.message.BusTemplateMessageDTO;
import com.jero.common.api.vo.Result;
import com.jero.common.common.ProjectCommon;
import com.jero.common.dto.SendMessageDTO;
import com.jero.common.enums.CompanyMessageEnums;
import com.jero.common.service.ProjectDetailService;
import com.jero.common.service.SendMessageService;
import com.jero.common.system.api.ISysBaseAPI;
import com.jero.common.system.base.controller.JeroController;
import com.jero.common.system.vo.LoginUser;
@@ -53,6 +56,8 @@ public class PayWorkingGroupSubItemController extends JeroController<PayWorkingG
private IPayWorkingGroupService payWorkingGroupService;
@Autowired
private ISysBaseAPI sysBaseAPI;
@Autowired
private SendMessageService sendMessageService;
/**
* 分页列表查询
@@ -147,29 +152,32 @@ public class PayWorkingGroupSubItemController extends JeroController<PayWorkingG
if(CollectionUtils.isEmpty(listPayContactsManagementTemporary)){
return Result.error("联系人不存在!");
}
LoginUser sysUser = (LoginUser) SecurityUtils.getSubject().getPrincipal();
listPayWorkingGroupSubItem.forEach(p->{
List<PayContactsManagementTemporary> listContactsEmail = listPayContactsManagementTemporary.stream().filter(item->Objects.equals(p.getContactsTemporaryIdOne(),item.getId())).collect(Collectors.toList());
if(CollectionUtils.isEmpty(listContactsEmail)){
List<PayContactsManagementTemporary> listContactsInfo = listPayContactsManagementTemporary.stream().filter(item->Objects.equals(p.getContactsTemporaryIdOne(),item.getId())).collect(Collectors.toList());
if(CollectionUtils.isEmpty(listContactsInfo)){
return;
}
if(StringUtils.isBlank(listContactsEmail.get(0).getEmail())){
if(StringUtils.isBlank(listContactsInfo.get(0).getEmail()) || StringUtils.isBlank(listContactsInfo.get(0).getPhone())){
return;
}
HashMap<String,String> map = new HashMap<>();
map.put("projectName",payWorkingGroup.getWorkingGroupProject());
// 发送邮件
sysBaseAPI.sendEmailTemplateMsg(PasswordUtil.decrypt(listContactsEmail.get(0).getEmail()), CompanyMessageEnums.MSG11.getValue(), CompanyMessageEnums.MSG11.getCode(),map);
LoginUser sysUser = (LoginUser) SecurityUtils.getSubject().getPrincipal();
BusTemplateMessageDTO busTemplateMessageDTO = new BusTemplateMessageDTO();
busTemplateMessageDTO.setTitle(CompanyMessageEnums.MSG11.getValue());
busTemplateMessageDTO.setFromUser(sysUser.getId());
busTemplateMessageDTO.setToUser(sysUser.getUsername());
busTemplateMessageDTO.setTemplateCode(CompanyMessageEnums.MSG11.getCode());
busTemplateMessageDTO.setTemplateParam(map);
busTemplateMessageDTO.setBusType("email");
busTemplateMessageDTO.setBusId(p.getId());
// 发送消息
sysBaseAPI.sendBusTemplateAnnouncement(busTemplateMessageDTO);
SendMessageDTO sendMessageDTO = new SendMessageDTO();
sendMessageDTO.setSendEmail(true);
sendMessageDTO.setSendMessage(true);
sendMessageDTO.setSendSMS(true);
sendMessageDTO.setTitle(ProjectCommon.ALERT8);
sendMessageDTO.setFromUser(sysUser.getId());
sendMessageDTO.setToUser(sysUser.getUsername());// PasswordUtil.decrypt(listContactsInfo.get(0).getPhone())
sendMessageDTO.setPhone(PasswordUtil.decrypt(listContactsInfo.get(0).getPhone()));
sendMessageDTO.setEmail(PasswordUtil.decrypt(listContactsInfo.get(0).getEmail()));
sendMessageDTO.setTemplateCode(CompanyMessageEnums.MSG11.getCode());
sendMessageDTO.setTemplateParam(map);
sendMessageDTO.setBusType("email");
sendMessageDTO.setBusId(p.getId());
sendMessageService.SendMessageService(sendMessageDTO);
});
return Result.OK("添加成功!");
}
@@ -199,4 +199,10 @@ public class PayCommonProject implements Serializable {
@TableField(exist = false)
@ApiModelProperty(value = "联系人邮箱")
private String email;
/**
* 收入合同处新增标识 flag = 1
*/
@TableField(exist = false)
@ApiModelProperty(value = "收入合同处新增标识 flag = 1")
private String flag;
}
@@ -5,15 +5,25 @@ import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.jero.common.api.vo.Result;
import com.jero.common.common.ProjectCommon;
import com.jero.common.common.RoleCommon;
import com.jero.common.dto.SendMessageDTO;
import com.jero.common.enums.CompanyMessageEnums;
import com.jero.common.enums.ManagementMessageEnums;
import com.jero.common.exception.JeroBootException;
import com.jero.common.service.ProjectDetailService;
import com.jero.common.service.SendMessageService;
import com.jero.common.system.vo.LoginUser;
import com.jero.common.util.PasswordUtil;
import com.jero.common.vo.ProjectStatusVO;
import com.jero.contract.common.PayIncomeContractCommon;
import com.jero.contract.entity.PayIncomeContract;
import com.jero.contract.entity.PayIncomeContractAssociated;
import com.jero.contract.service.IPayIncomeContractAssociatedService;
import com.jero.contract.service.IPayIncomeContractService;
import com.jero.modules.system.entity.SysRole;
import com.jero.modules.system.entity.SysUser;
import com.jero.modules.system.service.ISysRoleService;
import com.jero.modules.system.service.ISysUserService;
import com.jero.pack.entity.PayPackCompany;
import com.jero.pack.entity.PayPackCompanyProject;
@@ -34,6 +44,7 @@ import com.jero.temporary.service.IPayContactsManagementTemporaryService;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections.CollectionUtils;
import org.apache.commons.lang3.StringUtils;
import org.apache.shiro.SecurityUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
@@ -43,10 +54,7 @@ import org.springframework.transaction.annotation.Transactional;
import javax.annotation.Resource;
import java.lang.reflect.Array;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;
import java.util.Objects;
import java.util.*;
/**
* @Description: pay_common_project
@@ -74,6 +82,9 @@ public class PayCommonProjectServiceImpl extends ServiceImpl<PayCommonProjectMap
private IPayPackCompanyProjectService payPackCompanyProjectService;
@Autowired
private ProjectDetailService projectDetailService;
@Autowired
private SendMessageService sendMessageService;
@Override
@@ -120,6 +131,37 @@ public class PayCommonProjectServiceImpl extends ServiceImpl<PayCommonProjectMap
}
}
}
LoginUser sysUser = (LoginUser) SecurityUtils.getSubject().getPrincipal();
if(Objects.equals(ProjectCommon.FLAG,payCommonProject.getFlag())){
// 获取项目负责人,发送消息
List<SysUser> list = sysUserService.getRolesUser(Arrays.asList(RoleCommon.XMFZR));
if(!CollectionUtils.isEmpty(list)){
list.forEach(p->{
if(StringUtils.isBlank(p.getEmail())){
return;
}
HashMap<String,String> map = new HashMap<>();
map.put("projectName",payCommonProject.getChargeProject());
// 发送消息
SendMessageDTO sendMessageDTO = new SendMessageDTO();
sendMessageDTO.setSendEmail(true);
sendMessageDTO.setSendMessage(true);
sendMessageDTO.setSendSMS(true);
sendMessageDTO.setTitle(ProjectCommon.ALERT1);
sendMessageDTO.setFromUser(sysUser.getId());
sendMessageDTO.setToUser(p.getUsername());
sendMessageDTO.setPhone(PasswordUtil.decrypt(p.getPhone()));
sendMessageDTO.setEmail(PasswordUtil.decrypt(p.getEmail()));
sendMessageDTO.setTemplateCode(CompanyMessageEnums.MSG11.getCode());
sendMessageDTO.setTemplateParam(map);
sendMessageDTO.setBusType("email");
sendMessageDTO.setBusId(p.getId());
sendMessageService.SendMessageService(sendMessageDTO);
});
}
}
}
@Override
@@ -32,6 +32,7 @@ public class SysAnnouncement implements Serializable {
* 标题
*/
@Excel(name = "标题", width = 15)
@Dict(dicCode = "message_type")
private java.lang.String titile;
/**
* 内容
@@ -2,6 +2,7 @@ package com.jero.modules.system.model;
import java.io.Serializable;
import com.jero.common.aspect.annotation.Dict;
import org.springframework.format.annotation.DateTimeFormat;
import com.baomidou.mybatisplus.annotation.IdType;
@@ -29,6 +30,7 @@ public class AnnouncementSendModel implements Serializable {
/**用户id*/
private java.lang.String userId;
/**标题*/
@Dict(dicCode = "message_type")
private java.lang.String titile;
/**内容*/
private java.lang.String msgContent;
@@ -243,4 +243,11 @@ public interface ISysUserService extends IService<SysUser> {
String resetPassword(String username);
void verificationChangePassword(SysLoginVO loginVO);
/**
* 通过角色编码,查询角色下用户
* @param roleCode 角色集合
* @return
*/
List<SysUser> getRolesUser(List<String> roleCode);
}
@@ -407,13 +407,13 @@ public class SysBaseApiImpl implements ISysBaseAPI {
}
SysMessageTemplate sysSmsTemplate = sysSmsTemplates.get(0);
//模板标题
title = title==null?sysSmsTemplate.getTemplateName():title;
// title = title==null?sysSmsTemplate.getTemplateName():title;
//模板内容
String content = sysSmsTemplate.getTemplateContent();
if(map!=null) {
for (Map.Entry<String, String> entry : map.entrySet()) {
String str = "${" + entry.getKey() + "}";
title = title.replace(str, entry.getValue());
// title = title.replace(str, entry.getValue());
content = content.replace(str, entry.getValue());
}
}
@@ -1015,7 +1015,7 @@ public class SysBaseApiImpl implements ISysBaseAPI {
}
@Override
public void sendEmailTemplateMsg(String email,String title,String templateCode,HashMap<String,String> map) {
public void sendEmailTemplateMsg(String email,String title,String templateCode,Map<String,String> map) {
if(StringUtils.isBlank(email)){
throw new JeroBootException("邮件接收人不能为空");
}
@@ -1028,13 +1028,13 @@ public class SysBaseApiImpl implements ISysBaseAPI {
}
SysMessageTemplate sysSmsTemplate = sysSmsTemplates.get(0);
//模板标题
title = Objects.isNull(title) ? sysSmsTemplate.getTemplateName() : title;
// title = Objects.isNull(title) ? sysSmsTemplate.getTemplateName() : title;
//模板内容
String content = sysSmsTemplate.getTemplateContent();
if(!Objects.isNull(map)) {
for (Map.Entry<String, String> entry : map.entrySet()) {
String str = "${" + entry.getKey() + "}";
title = title.replace(str, entry.getValue());
// title = title.replace(str, entry.getValue());
content = content.replace(str, entry.getValue());
}
}
@@ -1059,6 +1059,33 @@ public class SysBaseApiImpl implements ISysBaseAPI {
huaWeiSmsUtil.sendVerificationCode(phone, codeType, codeTime, templateParas);
}
@Override
public void sendSMS(String phone, String codeType, String codeTime,String templateCode,HashMap<String,String> map) {
if(StringUtils.isBlank(phone)){
throw new JeroBootException("手机号不能为空");
}
if(StringUtils.isBlank(templateCode)){
throw new JeroBootException("模板编码不能为空");
}
List<SysMessageTemplate> sysSmsTemplates = sysMessageTemplateService.selectByCode(templateCode);
if(CollectionUtils.isEmpty(sysSmsTemplates)){
throw new JeroBootException("消息模板不存在,模板编码:"+templateCode);
}
SysMessageTemplate sysSmsTemplate = sysSmsTemplates.get(0);
//模板标题
String title = sysSmsTemplate.getTemplateName();
//模板内容
String content = sysSmsTemplate.getTemplateContent();
if(!Objects.isNull(map)) {
for (Map.Entry<String, String> entry : map.entrySet()) {
String str = "${" + entry.getKey() + "}";
title = title.replace(str, entry.getValue());
content = content.replace(str, entry.getValue());
}
}
huaWeiSmsUtil.sendVerificationCode(phone, codeType, codeTime, content);
}
/**
* 根据部门id查询部门所有的父级(不包含自己)
* @author 马志朝
@@ -27,7 +27,9 @@ import org.springframework.beans.factory.annotation.Value;
import org.springframework.cache.annotation.CacheEvict;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.CollectionUtils;
import org.springframework.util.ObjectUtils;
import org.springframework.util.StringUtils;
import javax.annotation.Resource;
import java.util.*;
@@ -520,6 +522,31 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
//SysRole sysRole = sysRoleMapper.selectOne(new LambdaQueryWrapper<SysRole>().eq(SysRole::getRoleCode, roles.get(0)));
}
@Override
public List<SysUser> getRolesUser(List<String> roleCode) {
if(CollectionUtils.isEmpty(roleCode)){
throw new JeroBootException("角色编码为空!");
}
LambdaQueryWrapper<SysRole> queryRole = new LambdaQueryWrapper<>();
queryRole.in(SysRole::getRoleCode,roleCode);
List<SysRole> listSysRole = sysRoleMapper.selectList(queryRole);
if(CollectionUtils.isEmpty(listSysRole)){
throw new JeroBootException("角色不存在!");
}
List<String> listRoleId = listSysRole.stream().map(SysRole::getId).collect(Collectors.toList());
LambdaQueryWrapper<SysUserRole> querySysUserRole = new LambdaQueryWrapper<>();
querySysUserRole.in(SysUserRole::getRoleId,listRoleId);
List<SysUserRole> listSysUserRole = sysUserRoleMapper.selectList(querySysUserRole);
if(StringUtils.isEmpty(listSysUserRole)){
return null;
}
List<String> listUserId = listSysUserRole.stream().map(SysUserRole::getUserId).collect(Collectors.toList());
LambdaQueryWrapper<SysUser> querySysUser = new LambdaQueryWrapper<>();
querySysUser.in(SysUser::getId,listUserId);
List<SysUser> listSysUser = userMapper.selectList(querySysUser);
return listSysUser;
}
/**
* 忘记密码校验
* @param user