package com.mgm.mcrm.notification.services; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONObject; import com.mgm.mcrm.booking.models.Bookings; import com.mgm.mcrm.booking.models.BookingsView; import com.mgm.mcrm.common.dtos.EumnApprovalStatus; import com.mgm.mcrm.common.dtos.config.ApiGatewaySetting; import com.mgm.mcrm.common.dtos.http_util.HttpResponseResult; import com.mgm.mcrm.common.utils.DateTimeUtil; import com.mgm.mcrm.common.utils.HttpUtil; import com.mgm.mcrm.common.utils.LogUtil; import com.mgm.mcrm.notification.dtos.request.EmailProxyRequest; import com.mgm.mcrm.notification.models.CfgEmailTemplate; import com.mgm.mcrm.notification.models.Email; import jakarta.annotation.Resource; import jakarta.servlet.http.HttpServletRequest; import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.Strings; import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Service; import java.text.SimpleDateFormat; import java.util.Date; @Service public class SendEmailService { @Value("${notification.default-email-sender}") private String defaultEmailSender; @Value("${notification.default-email-receiver}") private String defaultEmailReceiver; @Resource private ApiGatewaySetting apiGatewaySetting; private static final String emailTemp = "
Submission Date & Time:{{ttime}}
"+ "
Submitted User:{{tuser}}
"+ "

" + "\r\n" + " \r\n" + " \r\n" + " \r\n" + " \r\n" + " \r\n" + " \r\n" + " \r\n" + " \r\n" + " \r\n" + " \r\n" + " \r\n" + " \r\n" + " \r\n" + " \r\n" + " \r\n" + " \r\n" + " {{tbody}}"+ " \r\n" + "
\r\n" + " Conf#\r\n" + " \r\n" + " Booking Status\r\n" + " \r\n" + " Member ID\r\n" + " \r\n" + " Member Name\r\n" + " \r\n" + " Tier\r\n" + " \r\n" + " Property\r\n" + " \r\n" + " Room Type\r\n" + " \r\n" + " Sharer\r\n" + " \r\n" + " Original C/I\r\n" + " \r\n" + " Original C/O\r\n" + " \r\n" + " Extending C/O\r\n" + "
"; private static final String emailApprovalTemp = "
Submission Date & Time:{{ttime}}
"+ "
Submitted and Approver:{{tuser}}
"+ "

" + "\r\n" + " \r\n" + " \r\n" + " \r\n" + " \r\n" + " \r\n" + " \r\n" + " \r\n" + " \r\n" + " \r\n" + " \r\n" + " \r\n" + " \r\n" + " \r\n" + " \r\n" + " \r\n" + " \r\n" + " \r\n" +" \r\n" + " \r\n" + " \r\n" + " \r\n" + " \r\n" + " \r\n" + " \r\n" + " \r\n" + " {{tbody}}"+ " \r\n" + "
\r\n" + " Booking Status\r\n" + " \r\n" + " Conf#\r\n" + " \r\n" + " Member ID\r\n" + " \r\n" + " Member Name\r\n" + " \r\n" + " Tier\r\n" + " \r\n" + " Property\r\n" + " \r\n" + " Room Type\r\n" + " \r\n" + " Sharer\r\n" + " \r\n" + " Type\r\n" + " \r\n" + " Requested C/I\r\n" + " \r\n" + " Requested C/O\r\n" + " \r\n" + " Approved Property\r\n" + " \r\n" + " Approved Room Type\r\n" + " \r\n" + " Approved C/I\r\n" + " \r\n" + " Approved C/O\r\n" + " \r\n" + " Booker Team\r\n" + " \r\n" + " Booker ID\r\n" + " \r\n" + " Booker Name\r\n" + " \r\n" + " Approval Remark\r\n" + " \r\n" + " Remark\r\n" + "
"; private static final String emailNewApprovalTemp = "
Submission Date & Time:{{ttime}}
"+ "
Submitted and Approver:{{tuser}}
"+ "

" + "{{content}}"+ "\r\n" + " \r\n" + " \r\n" + " \r\n" + " \r\n" + " \r\n" + " \r\n" + " \r\n" + " \r\n" + " \r\n" + " \r\n" + " \r\n" + " \r\n" + " \r\n" + " \r\n" + " \r\n" + " \r\n" + " \r\n" + " \r\n" + " \r\n" + " \r\n" + " {{tbody}}"+ " \r\n" + "
\r\n" + " Booking Status\r\n" + " \r\n" + " Member ID\r\n" + " \r\n" + " Member Name\r\n" + " \r\n" + " Tier\r\n" + " \r\n" + " Property\r\n" + " \r\n" + " Room Type\r\n" + " \r\n" + " Sharer\r\n" + " \r\n" + " Type\r\n" + " \r\n" + " Requested C/I\r\n" + " \r\n" + " Requested C/O\r\n" + " \r\n" + " Booker Team\r\n" + " \r\n" + " Booker ID\r\n" + " \r\n" + " Booker Name\r\n" + " \r\n" + " Approval Remark\r\n" + " \r\n" + " Remark\r\n" + "
"; private static final String cancelEmailTemp = "
Submission Date & Time:{{ttime}}
"+ "
Submitted User:{{tuser}}
"+ "

" + "{{content}}"+ "\r\n" + " \r\n" + " \r\n" + " \r\n" + " \r\n" + " \r\n" + " \r\n" + " \r\n" + " \r\n" + " \r\n" + " \r\n" + " \r\n" + " \r\n" + " \r\n" + " \r\n" + " \r\n" + " \r\n" + " \r\n" + " \r\n" + " {{tbody}}"+ " \r\n" + "
\r\n" + " Conf#\r\n" + " \r\n" + " Booking Status\r\n" + " \r\n" + " Member ID\r\n" + " \r\n" + " Member Name\r\n" + " \r\n" + " Tier\r\n" + " \r\n" + " Property\r\n" + " \r\n" + " Room Type\r\n" + " \r\n" + " Sharer\r\n" + " \r\n" + " Type\r\n" + " \r\n" + " Original C/I\r\n" + " \r\n" + " Original C/O\r\n" + " \r\n" + " Change C/I\r\n" + " \r\n" + " Change C/O\r\n" + "
"; public Email sendExtendEmail(Bookings book, BookingsView originBook, Email emailObj, String userId, String userName, String emailTo) { String content1 = emailTemp; try { EmailProxyRequest emailRequest = new EmailProxyRequest(); emailRequest.setTo(StringUtils.isNotBlank(emailTo)?emailTo: defaultEmailReceiver); emailRequest.setSender(defaultEmailSender); String subTitle = ""; emailRequest.setSubject("[Urgent] Extension Request from Mobile CRM APP"+subTitle); SimpleDateFormat sf = new SimpleDateFormat("dd-MMM-yyyy HH:mm"); SimpleDateFormat format = new SimpleDateFormat("dd-MM-yyyy"); String RequestDate = sf.format(new Date()); String content2 = ""; String tTime = RequestDate; userId = !StringUtils.isEmpty(userId)?userId:""; userName = !StringUtils.isEmpty(userName)?userName:""; String tUser = userId+" "+userName; String operaStatus = Strings.CS.replace(book.getLastOperaStatus(), "_", " "); content2 += ""+ "" +book.getConfirmationNo()+ " "+ "" +operaStatus+ " " + "" +book.getPlayerId()+ " " + "" +book.getMemberLastName()+ " " + "" +(originBook.getMemberTier()!=null?originBook.getMemberTier():"")+ " " + "" +(originBook.getPropertyName()!=null?originBook.getPropertyName():"")+ " " + "" +(originBook.getRoom()!=null?originBook.getRoom():"")+ " "+ "" +(originBook.getSharerName()!=null?originBook.getSharerName():"")+ " "+ "" +format.format(originBook.getCheckinDate())+ " " + "" +format.format(originBook.getCheckoutDate())+ " " + "" +format.format(book.getCheckoutDate())+ " " + " "; content1 = content1.replace("{{tbody}}", content2); content1 = content1.replace("{{ttime}}", tTime); content1 = content1.replace("{{tuser}}", tUser); emailRequest.setShowTemp(content1); emailRequest.setContent(content1); JSONObject emailJson = new JSONObject(); emailJson.put("conf", book.getConfirmationNo()); emailJson.put("memberId", book.getPlayerId()); emailJson.put("memberName", book.getMemberLastName()); emailJson.put("tier", originBook.getMemberTier()); emailJson.put("property", originBook.getPropertyName()); emailJson.put("roomType", originBook.getRoom()); emailJson.put("checkin", format.format(originBook.getCheckinDate())); emailJson.put("checkout", format.format(originBook.getCheckoutDate())); emailJson.put("extCheckout", format.format(book.getCheckoutDate())); emailObj.setSendObject(emailJson.toJSONString()); emailObj.setContent(content1); emailObj.setSendTo(emailRequest.getTo()); HttpResponseResult httpResult = HttpUtil.invokeGatewayEmailAPI((JSONObject) JSON.toJSON(emailRequest), "POST", null, apiGatewaySetting); String resultMsg = this.extractResultFromResponse(httpResult); if(StringUtils.isBlank(resultMsg)){ emailObj.setStatus(1); LogUtil.info(SendEmailService.class, "---mgmEmail.sendExtendEmail--OK!"); }else{ emailObj.setStatus(0); emailObj.setMessage("Send Email to ["+emailRequest.getTo()+"] Failed:"+resultMsg); LogUtil.error(SendEmailService.class, "---mgmEmail.sendExtendEmail--Failed!"+resultMsg); } } catch (Exception e) { LogUtil.error(SendEmailService.class,"---mgmEmail.sendExtenEmail--Exception-->>"+e.getMessage()); emailObj.setMessage(e.getMessage()); emailObj.setStatus(0); } return emailObj; } public Email sendApprovalNewEmail(Bookings book,BookingsView bookView,Email emailObj,String userId,String userName,boolean isOverBook,boolean isConnectRoom,String emailTo) { String content1 = emailNewApprovalTemp; try { EmailProxyRequest emailRequest = new EmailProxyRequest(); emailRequest.setTo(StringUtils.isNotBlank(emailTo)?emailTo: defaultEmailReceiver); emailRequest.setSender(defaultEmailSender); String mainTitle; if(isConnectRoom) { mainTitle = "[R2/Y2]"; }else if(isOverBook) { mainTitle = "[Overbook]"; }else { mainTitle = "[Urgent]"; } emailRequest.setSubject(mainTitle+"Waitlist Approval from Mobile CRM APP"); // 标题 SimpleDateFormat sf = new SimpleDateFormat("dd-MMM-yyyy HH:mm"); SimpleDateFormat format = new SimpleDateFormat("dd-MM-yyyy"); String RequestDate = sf.format(new Date()); String content2 = ""; String tTime = RequestDate; userId = !StringUtils.isEmpty(userId)?userId:""; userName = !StringUtils.isEmpty(userName)?userName:""; String tUser = userId+" "+userName; String approvalStatus = EumnApprovalStatus.getApprovalStatusByDBValue(book.getApproveStatus()); content2 += ""+ "" +approvalStatus+ " "+ "" +bookView.getPlayerId()+ " " + "" +bookView.getMemberLastName()+ " " + "" +(bookView.getMemberTier()!=null?bookView.getMemberTier():"")+ " " + "" +(bookView.getPropertyName()!=null?bookView.getPropertyName():"")+ " " + "" +(bookView.getRoom()!=null?bookView.getRoom():"")+ " "+ "" +(bookView.getSharerName()!=null?bookView.getSharerName():"")+ " " + "" +"New"+ " "+ "" +format.format(bookView.getCheckinDate())+ " " + "" +format.format(bookView.getCheckoutDate())+ " " + "" +(bookView.getSectionName()!=null?bookView.getSectionName():"")+ " " + "" +bookView.getCreatedBy()+ " " + "" +bookView.getCreatedByName()+ " " + "" +(bookView.getApprovalRemark()!=null?bookView.getApprovalRemark():"")+ " " + "" +(bookView.getRemark()!=null?bookView.getRemark():"")+ " " + " "; String mailContent = isConnectRoom?"Please create TT/YY booking for below approved booking

":""; content1 = content1.replace("{{tbody}}", content2); content1 = content1.replace("{{ttime}}", tTime); content1 = content1.replace("{{tuser}}", tUser); content1 = content1.replace("{{content}}", mailContent); emailRequest.setShowTemp(content1); emailRequest.setContent(content1); JSONObject emailJson = new JSONObject(); emailJson.put("approvalStatus", approvalStatus); emailJson.put("memberId", bookView.getPlayerId()); emailJson.put("memberName", bookView.getMemberLastName()); emailJson.put("tier", bookView.getMemberTier()); emailJson.put("property", bookView.getPropertyName()); emailJson.put("roomType", bookView.getRoom()); emailJson.put("type", "New"); emailJson.put("checkin", format.format(bookView.getCheckinDate())); emailJson.put("checkout", format.format(bookView.getCheckoutDate())); emailJson.put("bookerTeam", bookView.getBookerTeam()); emailJson.put("bookerId", bookView.getCreatedBy()); emailJson.put("bookerName", bookView.getCreatedByName()); emailJson.put("approvalRemark", bookView.getApprovalRemark()); emailJson.put("remark", bookView.getRemark()); emailObj.setSendObject(emailJson.toJSONString()); emailObj.setContent(content1); emailObj.setSendTo(emailRequest.getTo()); HttpResponseResult httpResult = HttpUtil.invokeGatewayEmailAPI((JSONObject) JSON.toJSON(emailRequest), "POST", null, apiGatewaySetting); String resultMsg = this.extractResultFromResponse(httpResult); if(StringUtils.isBlank(resultMsg)){ emailObj.setStatus(1); LogUtil.info(SendEmailService.class, "---mgmEmail.sendApprovalNewEmail--OK!"); }else{ emailObj.setStatus(0); emailObj.setMessage("Send Email to ["+emailRequest.getTo()+"] Failed:"+resultMsg); LogUtil.error(SendEmailService.class, "---mgmEmail.sendApprovalNewEmail--Failed!"+resultMsg); } } catch (Exception e) { LogUtil.error(SendEmailService.class,"---mgmEmail.sendApprovalNewEmail--Exception-->>"+e.getMessage()); emailObj.setMessage(e.getMessage()); emailObj.setStatus(0); } return emailObj; } public Email sendCreateR2Y2NewEmail(Bookings book,BookingsView bookView,Email emailObj,String userId,String userName,boolean isOverBook,boolean isConnectRoom,String emailTo) { String content1 = emailNewApprovalTemp; try { EmailProxyRequest emailRequest = new EmailProxyRequest(); emailRequest.setTo(StringUtils.isNotBlank(emailTo)?emailTo: defaultEmailReceiver); emailRequest.setSender(defaultEmailSender); String mainTitle; if(isConnectRoom) { mainTitle = "[R2/Y2]"; }else if(isOverBook) { mainTitle = "[Overbook]"; }else { mainTitle = "[Urgent]"; } emailRequest.setSubject(mainTitle+"Booking Creation from Mobile CRM APP"); // 标题 SimpleDateFormat sf = new SimpleDateFormat("dd-MMM-yyyy HH:mm"); SimpleDateFormat format = new SimpleDateFormat("dd-MM-yyyy"); String RequestDate = sf.format(new Date()); String content2 = ""; String tTime = RequestDate; userId = !StringUtils.isEmpty(userId)?userId:""; userName = !StringUtils.isEmpty(userName)?userName:""; String tUser = userId+" "+userName; String approvalStatus = EumnApprovalStatus.getApprovalStatusByDBValue(book.getApproveStatus()); content2 += ""+ "" +approvalStatus+ " "+ "" +bookView.getPlayerId()+ " " + "" +bookView.getMemberLastName()+ " " + "" +(bookView.getMemberTier()!=null?bookView.getMemberTier():"")+ " " + "" +(bookView.getPropertyName()!=null?bookView.getPropertyName():"")+ " " + "" +(bookView.getRoom()!=null?bookView.getRoom():"")+ " "+ "" +(bookView.getSharerName()!=null?bookView.getSharerName():"")+ " " + "" +"New"+ " "+ "" +format.format(bookView.getCheckinDate())+ " " + "" +format.format(bookView.getCheckoutDate())+ " " + "" +(bookView.getSectionName()!=null?bookView.getSectionName():"")+ " " + "" +bookView.getCreatedBy()+ " " + "" +bookView.getCreatedByName()+ " " + "" +(bookView.getApprovalRemark()!=null?bookView.getApprovalRemark():"")+ " " + "" +(bookView.getRemark()!=null?bookView.getRemark():"")+ " " + " "; String mailContent = isConnectRoom?"Please create TT/YY booking for below approved booking

":""; content1 = content1.replace("{{tbody}}", content2); content1 = content1.replace("{{ttime}}", tTime); content1 = content1.replace("{{tuser}}", tUser); content1 = content1.replace("{{content}}", mailContent); emailRequest.setShowTemp(content1); emailRequest.setContent(content1); JSONObject emailJson = new JSONObject(); emailJson.put("approvalStatus", approvalStatus); emailJson.put("memberId", bookView.getPlayerId()); emailJson.put("memberName", bookView.getMemberLastName()); emailJson.put("tier", bookView.getMemberTier()); emailJson.put("property", bookView.getPropertyName()); emailJson.put("roomType", bookView.getRoom()); emailJson.put("type", "New"); emailJson.put("checkin", format.format(bookView.getCheckinDate())); emailJson.put("checkout", format.format(bookView.getCheckoutDate())); emailJson.put("bookerTeam", bookView.getBookerTeam()); emailJson.put("bookerId", bookView.getCreatedBy()); emailJson.put("bookerName", bookView.getCreatedByName()); emailJson.put("approvalRemark", bookView.getApprovalRemark()); emailJson.put("remark", bookView.getRemark()); emailObj.setSendObject(emailJson.toJSONString()); emailObj.setContent(content1); emailObj.setSendTo(emailRequest.getTo()); HttpResponseResult httpResult = HttpUtil.invokeGatewayEmailAPI((JSONObject) JSON.toJSON(emailRequest), "POST", null, apiGatewaySetting); String resultMsg = this.extractResultFromResponse(httpResult); if(StringUtils.isBlank(resultMsg)){ emailObj.setStatus(1); LogUtil.info(SendEmailService.class, "---mgmEmail.sendApprovalNewEmail--OK!"); }else{ emailObj.setStatus(0); emailObj.setMessage("Send Email to ["+emailRequest.getTo()+"] Failed:"+resultMsg); LogUtil.error(SendEmailService.class, "---mgmEmail.sendApprovalNewEmail--Failed!"+resultMsg); } } catch (Exception e) { LogUtil.error(SendEmailService.class,"---mgmEmail.sendApprovalNewEmail--Exception-->>"+e.getMessage()); emailObj.setMessage(e.getMessage()); emailObj.setStatus(0); } return emailObj; } public Email sendApprovalExtendEmail(Bookings book, BookingsView originBook, Email emailObj, String userId, String userName, BookingsView viewBook, boolean isOverBook, String emailTo) { String content1 = emailApprovalTemp; try { EmailProxyRequest emailRequest = new EmailProxyRequest(); emailRequest.setTo(StringUtils.isNotBlank(emailTo)?emailTo: defaultEmailReceiver); emailRequest.setSender(defaultEmailSender); String subTitle = ""; String mainTitle = isOverBook?"[Overbook]":"[Urgent]"; emailRequest.setSubject(mainTitle+"Waitlist Approval from Mobile CRM APP"+subTitle); // 标题 SimpleDateFormat sf = new SimpleDateFormat("dd-MMM-yyyy HH:mm"); SimpleDateFormat format = new SimpleDateFormat("dd-MM-yyyy"); String RequestDate = sf.format(new Date()); String content2 = ""; String tTime = RequestDate; userId = !StringUtils.isEmpty(userId)?userId:""; userName = !StringUtils.isEmpty(userName)?userName:""; String tUser = userId+" "+userName; String approvalStatus = EumnApprovalStatus.getApprovalStatusByDBValue(book.getApproveStatus()); String changeProperty = ""; String changeRoom = ""; String changeCheckInDate = ""; if(!Strings.CS.equals(viewBook.getPropertyName(), originBook.getPropertyName()) || !Strings.CS.equals(viewBook.getRoom(), originBook.getRoom()) || viewBook.getCheckinDate().getTime()!=originBook.getCheckoutDate().getTime()) { changeProperty = viewBook.getPropertyName()!=null?viewBook.getPropertyName():""; changeRoom = viewBook.getRoom()!=null?viewBook.getRoom():""; changeCheckInDate = viewBook.getCheckinDate()!=null?format.format(viewBook.getCheckinDate()):""; } content2 += ""+ "" +approvalStatus+ " "+ "" +originBook.getConfirmationNo()+ " "+ "" +originBook.getPlayerId()+ " " + "" +originBook.getMemberLastName()+ " " + "" +(originBook.getMemberTier()!=null?originBook.getMemberTier():"")+ " " + "" +(originBook.getPropertyName()!=null?originBook.getPropertyName():"")+ " " + "" +(originBook.getRoom()!=null?originBook.getRoom():"")+ " "+ "" +(originBook.getSharerName()!=null?originBook.getSharerName():"")+ " "+ "" +"Extend"+ " "+ "" +format.format(originBook.getCheckinDate())+ " " + "" +format.format(originBook.getCheckoutDate())+ " " + "" +changeProperty+ " " + "" +changeRoom+ " " + "" +changeCheckInDate+ " " + "" +format.format(book.getCheckoutDate())+ " " + "" +(viewBook.getSectionName()!=null?viewBook.getSectionName():"")+ " " + "" +originBook.getCreatedBy()+ " " + "" +originBook.getCreatedByName()+ " " + "" +(book.getApprovalRemark()!=null?book.getApprovalRemark():"")+ " " + "" +(book.getRemark()!=null?book.getRemark():"")+ " " + " "; content1 = content1.replace("{{tbody}}", content2); content1 = content1.replace("{{ttime}}", tTime); content1 = content1.replace("{{tuser}}", tUser); emailRequest.setShowTemp(content1); emailRequest.setContent(content1); JSONObject emailJson = new JSONObject(); emailJson.put("approvalStatus", approvalStatus); emailJson.put("conf", book.getConfirmationNo()); emailJson.put("memberId", book.getPlayerId()); emailJson.put("memberName", book.getMemberLastName()); emailJson.put("tier", originBook.getMemberTier()); emailJson.put("property", originBook.getPropertyName()); emailJson.put("roomType", originBook.getRoom()); emailJson.put("type", "Extend"); emailJson.put("checkin", format.format(originBook.getCheckinDate())); emailJson.put("checkout", format.format(originBook.getCheckoutDate())); emailJson.put("changeProperty", changeProperty); emailJson.put("changeRoom", changeRoom); emailJson.put("changeCheckin", changeCheckInDate); emailJson.put("changeCheckout", format.format(book.getCheckoutDate())); emailJson.put("bookerTeam", viewBook.getBookerTeam()); emailJson.put("bookerId", originBook.getCreatedBy()); emailJson.put("bookerName", originBook.getCreatedByName()); emailJson.put("approvalRemark", book.getApprovalRemark()); emailJson.put("remark", book.getRemark()); emailObj.setSendObject(emailJson.toJSONString()); emailObj.setContent(content1); emailObj.setSendTo(emailRequest.getTo()); HttpResponseResult httpResult = HttpUtil.invokeGatewayEmailAPI((JSONObject) JSON.toJSON(emailRequest), "POST", null, apiGatewaySetting); String resultMsg = this.extractResultFromResponse(httpResult); if(StringUtils.isBlank(resultMsg)){ emailObj.setStatus(1); LogUtil.info(SendEmailService.class, "---mgmEmail.sendApprovalExtendEmail--OK!"); }else{ emailObj.setStatus(0); emailObj.setMessage("Send Email to ["+emailRequest.getTo()+"] Failed:"+resultMsg); LogUtil.error(SendEmailService.class, "---mgmEmail.sendApprovalExtendEmail--Failed!"+resultMsg); } } catch (Exception e) { LogUtil.error(SendEmailService.class,"---mgmEmail.sendApprovalExtendEmail--Exception-->>"+e.getMessage()); emailObj.setMessage(e.getMessage()); emailObj.setStatus(0); } return emailObj; } public Email sendCancelEmail(Bookings book,BookingsView bookingsView,Email emailObj,String userId,String userName,String emailTo) { String content1 = cancelEmailTemp; try { EmailProxyRequest emailRequest = new EmailProxyRequest(); emailRequest.setTo(StringUtils.isNotBlank(emailTo)?emailTo: defaultEmailReceiver); emailRequest.setSender(defaultEmailSender); String subTitle = ""; emailRequest.setSubject("[Urgent] Modify Request from Mobile CRM APP"+subTitle); // 标题 SimpleDateFormat sf = new SimpleDateFormat("yyyy-MM-dd HH:mm"); SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd"); String RequestDate = sf.format(new Date()); String tTime = RequestDate; userId = !StringUtils.isEmpty(userId)?userId:""; userName = !StringUtils.isEmpty(userName)?userName:""; String tUser = userId+" "+userName; String content2 = ""; userId = !StringUtils.isEmpty(userId)?userId:""; userName = !StringUtils.isEmpty(userName)?userName:""; String approvalStatus = EumnApprovalStatus.getApprovalStatusByDBValue(book.getApproveStatus()); content2 += ""+ "" +bookingsView.getConfirmationNo()+ " "+ "" +approvalStatus+ " "+ "" +bookingsView.getPlayerId()+ " " + "" +bookingsView.getMemberLastName()+ " " + "" +(bookingsView.getTier()!=null?bookingsView.getTier():"")+ " " + "" +(bookingsView.getPropertyName()!=null?bookingsView.getPropertyName():"")+ " " + "" +(bookingsView.getRoom()!=null?bookingsView.getRoom():"")+ " "+ "" +(bookingsView.getSharerName()!=null?bookingsView.getSharerName():"")+ " "+ "" +"Cancel"+ " "+ "" +format.format(bookingsView.getCheckinDate())+ " " + "" +format.format(bookingsView.getCheckoutDate())+ " " + "" +book.getChangeCheckinDate()+ " " + "" +book.getChangeCheckoutDate()+ " "; String content = "Please cancel Conf#"+book.getConfirmationNo()+" under "+book.getMemberLastName(); content1 = content1.replace("{{tbody}}", content2); content1 = content1.replace("{{ttime}}", tTime); content1 = content1.replace("{{tuser}}", tUser); content1 = content1.replace("{{content}}", content); emailRequest.setShowTemp(content1); emailRequest.setContent(content1); JSONObject emailJson = new JSONObject(); emailJson.put("conf", book.getConfirmationNo()); emailJson.put("memberId", book.getPlayerId()); emailJson.put("memberName", book.getMemberLastName()); emailObj.setSendObject(emailJson.toJSONString()); emailObj.setContent(content1); emailObj.setSendTo(emailRequest.getTo()); HttpResponseResult httpResult = HttpUtil.invokeGatewayEmailAPI((JSONObject) JSON.toJSON(emailRequest), "POST", null, apiGatewaySetting); String resultMsg = this.extractResultFromResponse(httpResult); if(StringUtils.isBlank(resultMsg)){ emailObj.setStatus(1); LogUtil.info(SendEmailService.class, "---mgmEmail.sendCancelEmail--OK!"); }else{ emailObj.setStatus(0); emailObj.setMessage("Send Email to ["+emailRequest.getTo()+"] Failed:"+resultMsg); LogUtil.error(SendEmailService.class, "---mgmEmail.sendCancelEmail--Failed!"+resultMsg); } } catch (Exception e) { LogUtil.error(SendEmailService.class,"---mgmEmail.sendCancelEmail--Exception-->>"+e.getMessage()); emailObj.setMessage(e.getMessage()); emailObj.setStatus(0); } return emailObj; } public boolean sendOtherBookingEmail(CfgEmailTemplate emailTemplate) { boolean status = false; try { EmailProxyRequest emailRequest = new EmailProxyRequest(); emailRequest.setTo(defaultEmailReceiver); emailRequest.setSender(emailTemplate.getSender()); String subject = emailTemplate.getSubject(); subject = Strings.CI.replace(subject, "[TODAY]", DateTimeUtil.getCurrentDate("dd MMM")); emailRequest.setSubject(subject); // 标题 emailRequest.setCc(emailTemplate.getCc()); emailRequest.setShowTemp(emailTemplate.getShowTemp()); emailRequest.setContent(emailTemplate.getShowTemp()); HttpResponseResult httpResult = HttpUtil.invokeGatewayEmailAPI((JSONObject) JSON.toJSON(emailRequest), "POST", null, apiGatewaySetting); String resultMsg = this.extractResultFromResponse(httpResult); if(StringUtils.isBlank(resultMsg)){ status=true; LogUtil.info(SendEmailService.class, "---mgmEmail.sendOtherBookingEmail--OK!"); }else{ status=false; LogUtil.error(SendEmailService.class, "send email failed:" + resultMsg); } } catch (Exception e) { LogUtil.error(SendEmailService.class,"---mgmEmail.sendOtherBookingEmail--Exception-->>"+e.getMessage()); status=false; } return status; } private String extractResultFromResponse(HttpResponseResult httpResult){ String result =""; try{ JSONObject obj = JSONObject.parseObject(httpResult.getResponseContent()); if(obj.getBooleanValue("success")) { result=""; }else { if(obj.getString("message")!=null&&obj.getString("message")!="") { result = obj.getString("message"); }else { result = "System Error"; } } }catch(Exception err){ result = err.getMessage(); } return result; } }