ADD-招聘邮件指定邮箱发送

This commit is contained in:
dxfeng 2024-08-28 09:33:39 +08:00
parent 008c21b686
commit 6365b2f717
10 changed files with 170 additions and 30 deletions

View File

@ -143,7 +143,7 @@ public class InductionManageServiceImpl extends Service implements InductionMana
emailContent = yjnr.replace("{链接地址}", messageLink);
emailContent = RecruitModeUtil.getReplaceContent(emailContent, fieldMapList, mainDataMap);
// 发送邮件
RecruitMessageUtils.sendEmail(email, yjzt, emailContent);
RecruitMessageUtils.sendRecruitEmail(user, email, yjzt, emailContent);
// 发送短信
RecruitMessageUtils.sendSMS(mobile, smsContent);

View File

@ -3,8 +3,7 @@ package com.engine.recruit.util;
import weaver.common.MessageUtil;
import weaver.email.EmailWorkRunnable;
import weaver.general.Util;
import java.util.Map;
import weaver.hrm.User;
/**
* @author:dxfeng
@ -12,21 +11,12 @@ import java.util.Map;
* @version: 1.0
*/
public class RecruitMessageUtils {
public static boolean sendEmail(Map<String, Object> param) {
String sendTo = Util.null2String(param.get("sendTo"));
String emailTitle = Util.null2String(param.get("emailTitle"));
String emailContent = Util.null2String(param.get("emailContent"));
return sendEmail(sendTo, emailTitle, emailContent);
}
// TODO private String emailSubCompany = RecruitConstant.getRecruitPropValue("RECRUIT_EMAIL");
private static String emailSubCompany = "-163";
public static boolean sendSMS(Map<String, Object> param) {
String receiver = Util.null2String(param.get("receiver"));
String content = Util.null2String(param.get("content"));
return sendSMS(receiver, content);
}
public static boolean sendEmail(String sendTo, String emailTitle, String emailContent) {
return MessageUtil.sendEmail(sendTo, emailTitle, emailContent);
public static boolean sendRecruitEmail(User user, String sendTo, String emailTitle, String emailContent) {
EmailWorkRunnable emailWorkRunnable = new EmailWorkRunnable(sendTo, "","",Util.toHtmlMode(emailTitle), Util.toHtmlMode(emailContent),true,null,emailSubCompany);
return emailWorkRunnable.emailCommonRemind();
}
/**
@ -36,12 +26,29 @@ public class RecruitMessageUtils {
* @param imageFileIds 邮件附件imageFile表记录id多个时英文逗号分隔
* @return
*/
public static boolean sendEmailWithFile(String sendTo, String emailTitle, String emailContent, String imageFileIds) {
EmailWorkRunnable emailWorkRunnable = new EmailWorkRunnable(sendTo, Util.toHtmlMode(emailTitle), Util.toHtmlMode(emailContent));
public static boolean sendRecruitEmailWithFile(User user,String sendTo, String emailTitle, String emailContent, String imageFileIds) {
EmailWorkRunnable emailWorkRunnable = new EmailWorkRunnable(sendTo, "","",Util.toHtmlMode(emailTitle), Util.toHtmlMode(emailContent),true,null,emailSubCompany);
emailWorkRunnable.setImagefileids(imageFileIds);
return emailWorkRunnable.emailCommonRemind();
}
//public static boolean sendEmail(String sendTo, String emailTitle, String emailContent) {
// return MessageUtil.sendEmail(sendTo, emailTitle, emailContent);
//}
//
///**
// * @param sendTo 收件人
// * @param emailTitle 邮件标题
// * @param emailContent 邮件内容
// * @param imageFileIds 邮件附件imageFile表记录id多个时英文逗号分隔
// * @return
// */
//public static boolean sendEmailWithFile(String sendTo, String emailTitle, String emailContent, String imageFileIds) {
// EmailWorkRunnable emailWorkRunnable = new EmailWorkRunnable(sendTo, Util.toHtmlMode(emailTitle), Util.toHtmlMode(emailContent));
// emailWorkRunnable.setImagefileids(imageFileIds);
// return emailWorkRunnable.emailCommonRemind();
//}
public static boolean sendSMS(String receiver, String content) {
// 去除短信内容中的html样式
content = content.replaceAll("<[^>]*>|&nbsp;", "").replaceAll("\\n+", "\n");

View File

@ -114,9 +114,9 @@ public class BatchAddInterviewResultModeExpand extends AbstractModeExpandJavaCod
String emailContent = "<div style=\"border:3px solid silver;width:635px;height:55px;line-height:55px;font-family:'microsoft Yahei';font-size:18px;font-weight:bold;color:#333;padding-left:10px\">请您答复是否参加此次邀请? <a href=\"" + confirmUrl + "&status=0\" style=\"text-decoration:underline;color:#0000cc;margin-right:10px\">参加</a> <a href=\"" + confirmUrl + "&status=1\" style=\"text-decoration:underline;color:#0000cc;\">不参加</a></div>";
// 邮件内容拼接确认信息
emailContent = msgContent + emailContent;
RecruitMessageUtils.sendEmail(yx, emailTitle, emailContent);
RecruitMessageUtils.sendRecruitEmail(user, yx, emailTitle, emailContent);
} else {
RecruitMessageUtils.sendEmail(yx, emailTitle, msgContent);
RecruitMessageUtils.sendRecruitEmail(user, yx, emailTitle, msgContent);
}
}

View File

@ -70,7 +70,7 @@ public class CreateInterviewModeExpand extends AbstractModeExpandJavaCodeNew {
// 需要应聘者反馈
boolean needFeedback = "1".equals(Util.null2String(mainDataMap.get("sfxyfk")));
// 发送邮件短信
InterviewMsgUtil.sendEmailAndMsg(mainDataMap, billId, needFeedback);
InterviewMsgUtil.sendEmailAndMsg(user, mainDataMap, billId, needFeedback);
}
}

View File

@ -6,6 +6,7 @@ import com.weaver.formmodel.data.model.Formfield;
import weaver.conn.RecordSet;
import weaver.formmode.recruit.modeexpand.util.RecruitModeUtil;
import weaver.general.Util;
import weaver.hrm.User;
import java.util.Arrays;
import java.util.List;
@ -26,7 +27,7 @@ public class InterviewMsgUtil {
* @param billId
* @param needFeedback
*/
public static void sendEmailAndMsg(Map<String, Object> mainDataMap, int billId, boolean needFeedback) {
public static void sendEmailAndMsg(User user, Map<String, Object> mainDataMap, int billId, boolean needFeedback) {
String tzypz = Util.null2String(mainDataMap.get("tzypz"));
String yjnr = Util.null2String(mainDataMap.get("yjnr"));
String yjtzmb = Util.null2String(mainDataMap.get("yjtzmb"));
@ -53,11 +54,11 @@ public class InterviewMsgUtil {
String emailContent = "<div style=\"border:3px solid silver;width:635px;height:55px;line-height:55px;font-family:'microsoft Yahei';font-size:18px;font-weight:bold;color:#333;padding-left:10px\">请您答复是否参加此次邀请? <a href=\"" + confirmUrl + "&status=0\" style=\"text-decoration:underline;color:#0000cc;margin-right:10px\">参加</a> <a href=\"" + confirmUrl + "&status=1\" style=\"text-decoration:underline;color:#0000cc;\">不参加</a></div>";
// 邮件内容拼接确认信息
emailContent = msgContent + emailContent;
RecruitMessageUtils.sendEmail(yx, emailTitle, emailContent);
RecruitMessageUtils.sendRecruitEmail(user, yx, emailTitle, emailContent);
// 勾选了需要反馈则需要将是否参加置空且需要可以再次反馈
rs.executeUpdate("update uf_jcl_ms set sfcj = null,zt = null where id = ? ", billId);
} else {
RecruitMessageUtils.sendEmail(yx, emailTitle, msgContent);
RecruitMessageUtils.sendRecruitEmail(user, yx, emailTitle, msgContent);
}
}
if (sendSms) {

View File

@ -77,7 +77,7 @@ public class UpdateInterviewModeExpand extends AbstractModeExpandJavaCodeNew {
title = RecruitConstant.INTERVIEW_CANCEL_MESSAGE_TITLE;
cancelInterView(params, requestInfo, billId, mainDataMap);
// 发送邮件
InterviewMsgUtil.sendEmailAndMsg(mainDataMap, billId, false);
InterviewMsgUtil.sendEmailAndMsg(user, mainDataMap, billId, false);
break;
case ADJUSTMENT:
messageType = RecruitConstant.INTERVIEW_MESSAGE_TYPE;
@ -86,7 +86,7 @@ public class UpdateInterviewModeExpand extends AbstractModeExpandJavaCodeNew {
adjustmentInterView(requestInfo.getCreatorid(), mainDataMap);
boolean needFeedback = "1".equals(Util.null2String(mainDataMap.get("sfxyfk")));
// 发送邮件同安排面试
InterviewMsgUtil.sendEmailAndMsg(mainDataMap, billId, needFeedback);
InterviewMsgUtil.sendEmailAndMsg(user, mainDataMap, billId, needFeedback);
// 更新反馈状态为未反馈
break;
default:

View File

@ -63,7 +63,7 @@ public class CreateOfferModeExpand extends AbstractModeExpandJavaCodeNew {
if (sendEmail) {
String offerAttach = RecruitModeUtil.getImageFileIdsByDocIds(Util.null2String(mainDataMap.get("offerfj")));
RecruitMessageUtils.sendEmailWithFile(yx, emailTitle, msgContent, offerAttach);
RecruitMessageUtils.sendRecruitEmailWithFile(user, yx, emailTitle, msgContent, offerAttach);
}
if (sendSms) {
String name = Util.null2String(mainDataMap.get("xm"));

View File

@ -95,7 +95,7 @@ public class BatchAddWrittenResultModeExpand extends AbstractModeExpandJavaCodeN
String yx = Util.null2String(detailDataMap.get("yx"));
String sjh = Util.null2String(detailDataMap.get("sjh"));
if (sendEmail) {
RecruitMessageUtils.sendEmail(yx, emailTitle, msgContent);
RecruitMessageUtils.sendRecruitEmail(user, yx, emailTitle, msgContent);
}
if (sendSms) {

View File

@ -60,7 +60,7 @@ public class CreateWrittenModeExpand extends AbstractModeExpandJavaCodeNew {
String yx = Util.null2String(mainDataMap.get("yx"));
String sjh = Util.null2String(mainDataMap.get("sjh"));
if (sendEmail) {
RecruitMessageUtils.sendEmail(yx, emailTitle, msgContent);
RecruitMessageUtils.sendRecruitEmail(user, yx, emailTitle, msgContent);
}
if (sendSms) {

View File

@ -0,0 +1,132 @@
package weaver.formmode.yaq.modeexpand.email;
import com.engine.email.entity.EmailFlockSendAccountComInfo;
import com.engine.email.entity.EmailFlockSendSyncSetComInfo;
import com.engine.recruit.conn.RecruitDataMap;
import com.engine.recruit.exception.CustomizeRunTimeException;
import org.apache.commons.lang3.StringUtils;
import weaver.conn.RecordSet;
import weaver.email.EmailEncoder;
import weaver.formmode.customjavacode.AbstractModeExpandJavaCodeNew;
import weaver.general.BaseBean;
import weaver.general.Util;
import weaver.soa.workflow.request.MainTableInfo;
import weaver.soa.workflow.request.Property;
import weaver.soa.workflow.request.RequestInfo;
import java.util.HashMap;
import java.util.Map;
/**
* @author:dxfeng
* @createTime: 2024/08/26
* @version: 1.0
*/
public class EmailUpdateExpand extends AbstractModeExpandJavaCodeNew {
@Override
public Map<String, String> doModeExpand(Map<String, Object> param) {
Map<String, String> result = new HashMap<>();
try {
RequestInfo requestInfo = (RequestInfo) param.get("RequestInfo");
if (requestInfo != null) {
String billId = Util.null2String(param.get("billid"));
String src = Util.null2String(param.get("src"));
if (StringUtils.isBlank(billId)) {
throw new CustomizeRunTimeException("数据ID获取失败");
}
MainTableInfo mainTableInfo = requestInfo.getMainTableInfo();
Property[] properties = mainTableInfo.getProperty();
RecruitDataMap<String> mainDataMap = new RecruitDataMap<>();
for (Property property : properties) {
mainDataMap.put(property.getName(), property.getValue());
}
String qydqpz = mainDataMap.get("qydqpz");
// 如果是编辑操作且当前配置未启用不进行以下操作
if("save".equals(src) && "0".equals(qydqpz)){
return result;
}
String sendProtocol = mainDataMap.get("send_protocol");
String sendProtocolStr = "";
if (StringUtils.isNotBlank(sendProtocol)) {
switch (sendProtocol) {
case "0":
sendProtocolStr = "SMTP";
break;
case "1":
sendProtocolStr = "EXCHANGE";
break;
case "2":
sendProtocolStr = "Microsoft Graph";
break;
default:
break;
}
}
if (StringUtils.isBlank(sendProtocolStr)) {
throw new CustomizeRunTimeException("发送协议转换失败,请检查配置");
}
String smtpServer = mainDataMap.get("smtp_server");
String sendNeedssl = mainDataMap.get("send_needssl");
String smtpServerPort = mainDataMap.get("smtp_serverport");
String isstarttls = mainDataMap.get("isstarttls");
String needCheck = mainDataMap.get("needcheck");
String accountName = mainDataMap.get("accountname");
String accountMailAddress = mainDataMap.get("accountmailaddress");
String accountId = mainDataMap.get("accountid");
String accountPassword = mainDataMap.get("accountpassword");
// 密码加密转换
String accountPasswordStr = EmailEncoder.EncoderPassword(accountPassword);
if (StringUtils.isBlank(accountPasswordStr)) {
throw new CustomizeRunTimeException("邮箱密码设置失败");
}
String ewsServiceUrl = mainDataMap.get("ews_service_url");
String ewsDomain = mainDataMap.get("ews_domain");
String ewsVersion = mainDataMap.get("ews_version");
String subcompanyid = mainDataMap.get("subcompanyid");
RecordSet rs = new RecordSet();
// 更新email_flocksendaccount表指定subcompanyid的数据
//String sql = "insert into email_flocksendaccount (send_protocol, smtp_server, send_needssl, smtp_serverport, isstarttls, needcheck, accountname, accountmailaddress," +
// " accountid, accountpassword, ews_service_url, ews_domain, ews_version,subcompanyid) values (?,?,?,?,?,?,?,?,?,?,?,?,?,?)";
//boolean flag = rs.executeUpdate(sql, sendProtocol, smtpServer, sendNeedssl, smtpServerPort, isstarttls, needCheck, accountName, accountMailAddress, accountId, accountPasswordStr, ewsServiceUrl, ewsDomain, ewsVersion, subcompanyid);
boolean flag;
rs.executeQuery("select * from email_flocksendaccount where subcompanyid = ?", subcompanyid);
String sql = "";
if (rs.next()) {
sql = "update email_flocksendaccount set send_protocol = ?,smtp_server = ?,send_needssl = ? , smtp_serverport = ? , isstarttls = ?, needcheck = ?, accountname = ?, accountmailaddress = ?," +
" accountid = ? , accountpassword = ? , ews_service_url = ? , ews_domain = ? , ews_version = ? where subcompanyid = ?";
flag = rs.executeUpdate(sql, sendProtocolStr, smtpServer, sendNeedssl, smtpServerPort, isstarttls, needCheck, accountName, accountMailAddress, accountId, accountPasswordStr, ewsServiceUrl, ewsDomain, ewsVersion, subcompanyid);
} else {
sql = "insert into email_flocksendaccount (send_protocol, smtp_server, send_needssl, smtp_serverport, isstarttls, needcheck, accountname, accountmailaddress," +
" accountid, accountpassword, ews_service_url, ews_domain, ews_version,subcompanyid) values (?,?,?,?,?,?,?,?,?,?,?,?,?,?)";
flag = rs.executeUpdate(sql, sendProtocolStr, smtpServer, sendNeedssl, smtpServerPort, isstarttls, needCheck, accountName, accountMailAddress, accountId, accountPasswordStr, ewsServiceUrl, ewsDomain, ewsVersion, subcompanyid);
}
// 刷新缓存
EmailFlockSendAccountComInfo emailFlockSendAccountComInfo = new EmailFlockSendAccountComInfo();
emailFlockSendAccountComInfo.updateCache(subcompanyid);
EmailFlockSendSyncSetComInfo efsssci = new EmailFlockSendSyncSetComInfo();
efsssci.updateCache(subcompanyid);
if (flag) {
// 更新其他数据为不启用
rs.executeUpdate("update uf_recruit_email set qydqpz = 0 where id != ? ", billId);
rs.executeUpdate("update uf_recruit_email set qydqpz = 1 where id = ? ", billId);
}
}
return result;
} catch (Exception e) {
new BaseBean().writeLog("招聘邮箱设置异常", e);
result.put("errmsg", e.getMessage());
result.put("flag", "false");
return result;
}
}
}