();
+ requestHeader.put("Origin", "MGM_CRM_CMS");
+ requestHeader.put("application-id", apiGatewaySetting.getNotificationAppId());
+ requestHeader.put("authorization", apiGatewaySetting.getNotificationAppSecret());
+ requestHeader.put("Content-type", "application/json;charset=utf-8");
+
+ requestDef.setRequestUrl(requestUrl);
+ requestDef.setRequestMethod(requestMethod);
+ requestDef.setTimeout(timeoutTime);
+ requestDef.setHeaders(requestHeader);
+ if(files!=null) {
+ requestDef.setUpload(true);
+ requestDef.setUploadFile(files[0]);
+ requestDef.setFileParaName(files[0].getName());
+ }
+
+ if(requestContent!=null) {
+ requestDef.setEntityContent(requestContent.toString());
+ }else {
+ requestDef.setEntityContent("");
+ }
+ // --
+ LogUtil.info(HttpUtil.class, "[invoke Proxy Email API] start request:" + requestDef.getRequestUrl());
+ HttpResponseResult httpResult =HttpUtil.processHttpRequest(requestDef);
+ httpResult.setRequestContent(requestDef.getEntityContent());
+ Gson gson = new Gson();
+ LogUtil.info(HttpUtil.class, "[invoke Proxy Email API]getRequestUrl:"+gson.toJson(requestDef.getRequestUrl()));
+ LogUtil.info(HttpUtil.class, "[invoke Proxy Email API]getHeaders:"+gson.toJson(requestDef.getHeaders()));
+ LogUtil.info(HttpUtil.class, "[invoke Proxy Email API]getRequestMethod:"+gson.toJson(requestDef.getRequestMethod()));
+ LogUtil.info(HttpUtil.class, "[invoke Proxy Email API]getEntityContent:"+gson.toJson(requestContent));
+ LogUtil.info(HttpUtil.class, "[invoke Proxy Email API]getStatusCode:"+gson.toJson(httpResult.getStatusCode()));
+ LogUtil.info(HttpUtil.class, "[invoke Proxy Email API]getErrorMessage:"+gson.toJson(httpResult.getErrorMessage()));
+ LogUtil.info(HttpUtil.class, "[invoke Proxy Email API]getResponseContent:"+gson.toJson(httpResult.getResponseContent()));
+ return httpResult;
+ }
}
diff --git a/src/main/java/com/mgm/mcrm/common/utils/SOAPUtil.java b/src/main/java/com/mgm/mcrm/common/utils/SOAPUtil.java
index 2d8c4a1..631e5d7 100644
--- a/src/main/java/com/mgm/mcrm/common/utils/SOAPUtil.java
+++ b/src/main/java/com/mgm/mcrm/common/utils/SOAPUtil.java
@@ -2,13 +2,15 @@ package com.mgm.mcrm.common.utils;
import com.mgm.mcrm.common.constants.SysCommon;
import com.mgm.mcrm.common.dtos.config.ApiGatewaySetting;
+import com.mgm.mcrm.common.services.ConfigurableTrustHandler;
import jakarta.xml.bind.JAXBContext;
import jakarta.xml.bind.JAXBException;
import jakarta.xml.bind.Marshaller;
import jakarta.xml.bind.Unmarshaller;
import jakarta.xml.soap.*;
+import lombok.Getter;
+import lombok.Setter;
import org.apache.commons.lang3.StringUtils;
-import org.apache.hc.core5.http.message.BasicHeader;
import org.w3c.dom.NamedNodeMap;
import org.w3c.dom.NodeList;
@@ -17,9 +19,6 @@ import javax.xml.namespace.QName;
import java.io.*;
import java.net.HttpURLConnection;
import java.net.URL;
-import java.security.KeyStore;
-import java.security.cert.CertificateException;
-import java.security.cert.X509Certificate;
import java.util.Iterator;
import java.util.List;
@@ -40,6 +39,19 @@ public class SOAPUtil {
* 参考---》http://www.webxml.com.cn/WebServices/WeatherWebService.asmx?op=getWeatherbyCityName
*/
+ @Getter
+ @Setter
+ private static boolean skipValidation=true;
+
+ private static ConfigurableTrustHandler trustHandler=null;
+
+ public static ConfigurableTrustHandler getTrustHandler(){
+ if(trustHandler==null){
+ trustHandler =new ConfigurableTrustHandler(skipValidation, SysCommon.getDefaultTrustManager(), SysCommon.getSoapServers());
+ }
+ return trustHandler;
+ }
+
public static String getWebServiceSOAP(String url, String action, StringBuffer sendSoapString, ApiGatewaySetting apiGatewaySetting){
String soap = sendSoapString.toString();
if (soap == null) {
@@ -52,8 +64,9 @@ public class SOAPUtil {
HttpURLConnection conn = (HttpURLConnection) soapUrl.openConnection();
if(isHttps) {
HttpsURLConnection https = (HttpsURLConnection) conn;
- trustAllHosts(https);
- https.setHostnameVerifier(checkSoapServer);
+ ConfigurableTrustHandler manager = getTrustHandler();
+ trustAllHosts(https,manager);
+ https.setHostnameVerifier(manager);
}
conn.setUseCaches(false);
conn.setDoInput(true);
@@ -107,8 +120,9 @@ public class SOAPUtil {
HttpURLConnection conn = (HttpURLConnection) soapUrl.openConnection();
if(isHttps) {
HttpsURLConnection https = (HttpsURLConnection) conn;
- trustAllHosts(https);
- https.setHostnameVerifier(checkSoapServer);
+ ConfigurableTrustHandler manager = getTrustHandler();
+ trustAllHosts(https,manager);
+ https.setHostnameVerifier(manager);
}
conn.setUseCaches(false);
conn.setDoInput(true);
@@ -162,63 +176,14 @@ public class SOAPUtil {
}
return soapMessage;
}
-
- private static final TrustManager[] trustAllCerts = new TrustManager[] {new X509TrustManager() {
- private X509TrustManager defaultTrustManager=null;
- {
- try {
- // 获取 JVM 默认的 TrustManager 作为核心校验逻辑
- TrustManagerFactory tmf = TrustManagerFactory.getInstance(TrustManagerFactory.getDefaultAlgorithm());
- tmf.init((KeyStore) null); // 使用系统的默认信任库
- for (TrustManager tm : tmf.getTrustManagers()) {
- if (tm instanceof X509TrustManager) {
- defaultTrustManager = (X509TrustManager) tm;
- }
- }
- }catch(Exception err){
- LogUtil.error(SOAPUtil.class,"Default X509TrustManager not found["+err.getMessage()+"]");
- }
- }
-
- @Override
- public X509Certificate[] getAcceptedIssuers() {
- return defaultTrustManager.getAcceptedIssuers();
- }
-
- @Override
- public void checkServerTrusted(X509Certificate[] chain, String authType) throws CertificateException {
- defaultTrustManager.checkServerTrusted(chain,authType);
- }
-
- @Override
- public void checkClientTrusted(X509Certificate[] chain, String authType) throws CertificateException {
- defaultTrustManager.checkClientTrusted(chain,authType);
- }
- }};
-
-
-
- private static final HostnameVerifier checkSoapServer = new HostnameVerifier() {
- public boolean verify(String hostname, SSLSession session) {
- boolean isServerAllow = SysCommon.isAllowSoapServer(hostname);
- if(isServerAllow==false) {
- LogUtil.warn(SOAPUtil.class, "SOAP Server of ["+hostname+"] is not allowed");
- }
- return SysCommon.isAllowSoapServer(hostname);
- }
- };
- /**
- * 信任所有
- * @param connection
- * @return
- */
- private static SSLSocketFactory trustAllHosts(HttpsURLConnection conn) {
+
+ private static SSLSocketFactory trustAllHosts(HttpsURLConnection conn,ConfigurableTrustHandler manager) {
SSLSocketFactory oldFactory = conn.getSSLSocketFactory();
try {
SSLContext sc = SSLContext.getInstance("TLS");
- sc.init(null, trustAllCerts, new java.security.SecureRandom());
+ sc.init(null, new TrustManager[]{manager}, new java.security.SecureRandom());
SSLSocketFactory newFactory = sc.getSocketFactory();
conn.setSSLSocketFactory(newFactory);
} catch (Exception e) {
diff --git a/src/main/java/com/mgm/mcrm/common/utils/SendEmail.java b/src/main/java/com/mgm/mcrm/common/utils/SendEmail.java
index 574de03..1aa4199 100644
--- a/src/main/java/com/mgm/mcrm/common/utils/SendEmail.java
+++ b/src/main/java/com/mgm/mcrm/common/utils/SendEmail.java
@@ -278,7 +278,7 @@ public class SendEmail {
}else {
mail_to = SysCommon.apiConfig.getSend_to_SMTP();
}
-
+
sender.setHost(mail_smtp_host);
sender.setPort(mail_port); // 默认就是25
sender.setUsername(mail_sender);
@@ -486,7 +486,7 @@ public class SendEmail {
+format.format(bookView.getCheckoutDate())+
" " +
"| "
- +(bookView.getBookerTeam()!=null?bookView.getBookerTeam():"")+
+ +(bookView.getSectionName()!=null?bookView.getSectionName():"")+
" | " +
""
+bookView.getCreatedBy()+
@@ -651,7 +651,7 @@ public class SendEmail {
+format.format(bookView.getCheckoutDate())+
" | " +
""
- +(bookView.getBookerTeam()!=null?bookView.getBookerTeam():"")+
+ +(bookView.getSectionName()!=null?bookView.getSectionName():"")+
" | " +
""
+bookView.getCreatedBy()+
@@ -835,7 +835,7 @@ public class SendEmail {
+format.format(book.getCheckoutDate())+
" | " +
""
- +(viewBook.getBookerTeam()!=null?viewBook.getBookerTeam():"")+
+ +(viewBook.getSectionName()!=null?viewBook.getSectionName():"")+
" | " +
""
+originBook.getCreatedBy()+
@@ -916,7 +916,6 @@ public class SendEmail {
public static Email sendCancelEmail(Bookings book,BookingsView bookingsView,Email emailObj,String userId,String userName,String emailTo) {
String content1 = cancelEmailTemp;
-
try {
JavaMailSenderImpl sender = new JavaMailSenderImpl();
if(StringUtils.isEmpty(mail_smtp_host)) {
diff --git a/src/main/java/com/mgm/mcrm/limo/controller/LimoController.java b/src/main/java/com/mgm/mcrm/limo/controller/LimoController.java
index 46147ae..4bac41e 100644
--- a/src/main/java/com/mgm/mcrm/limo/controller/LimoController.java
+++ b/src/main/java/com/mgm/mcrm/limo/controller/LimoController.java
@@ -1,6 +1,7 @@
package com.mgm.mcrm.limo.controller;
import com.auth0.jwt.JWT;
+import com.mgm.mcrm.authorization.dtos.LoginUserInfo;
import com.mgm.mcrm.authorization.models.SysRouterPermission;
import com.mgm.mcrm.authorization.services.MgmUserService;
import com.mgm.mcrm.authorization.services.SysGroupPermissionService;
@@ -25,13 +26,10 @@ import org.apache.commons.lang3.Strings;
import org.springframework.http.MediaType;
import org.springframework.web.bind.annotation.*;
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
+import java.util.*;
@RestController
-@RequestMapping("/api/limo")
+@RequestMapping("/api/app/limo")
public class LimoController {
@Resource
@@ -70,12 +68,21 @@ public class LimoController {
return limoService.getLocation(location);
}
- @GetMapping("/getCarType")
+ @PostMapping(value = "/getLocation", produces = "application/json;charset=UTF-8",
+ consumes = MediaType.APPLICATION_JSON_VALUE)
+ public BaseApiResponse> getLocationPost(
+ @RequestBody(required = false) GetLimoLocationRequest request) throws Exception {
+ return limoService.getLocation(request == null ? null : request.getLocation());
+ }
+
+ @RequestMapping(value = "/getCarType", method = {RequestMethod.GET, RequestMethod.POST},
+ produces = "application/json;charset=UTF-8")
public BaseApiResponse> getCarType() throws Exception {
return limoService.getCarType();
}
- @GetMapping("/getGreetType")
+ @RequestMapping(value = "/getGreetType", method = {RequestMethod.GET, RequestMethod.POST},
+ produces = "application/json;charset=UTF-8")
public BaseApiResponse> getGreetType() throws Exception {
return limoService.getGreetType();
}
@@ -244,7 +251,17 @@ public class LimoController {
@GetMapping("/getOverrider")
public GetOverriderInfoResponse getLimoOverriderInfo(
- GetLimoBookingGetOverriderRequest request) throws Exception {
+ GetLimoBookingGetOverriderRequest request, HttpServletRequest req) throws Exception {
+ String token = req.getHeader("Authorization");
+
+ if (StringUtils.isNotEmpty(token)) {
+ if (token.startsWith("Bearer ")) {
+ token = token.substring(7);
+ }
+ String userId = JWT.decode(token).getClaim("login_id").asString();
+ request.setEmployeeId(userId);
+ }
+
return limoService.getLimoOverriderData(request);
}
diff --git a/src/main/java/com/mgm/mcrm/limo/dtos/request/GetLimoBookingGetOverriderRequest.java b/src/main/java/com/mgm/mcrm/limo/dtos/request/GetLimoBookingGetOverriderRequest.java
index 6ecd605..675d7f8 100644
--- a/src/main/java/com/mgm/mcrm/limo/dtos/request/GetLimoBookingGetOverriderRequest.java
+++ b/src/main/java/com/mgm/mcrm/limo/dtos/request/GetLimoBookingGetOverriderRequest.java
@@ -5,4 +5,5 @@ import lombok.Data;
@Data
public class GetLimoBookingGetOverriderRequest {
private String OverriderInfo;
+ private String EmployeeId;
}
diff --git a/src/main/java/com/mgm/mcrm/limo/dtos/request/GetLimoLocationRequest.java b/src/main/java/com/mgm/mcrm/limo/dtos/request/GetLimoLocationRequest.java
new file mode 100644
index 0000000..db1dc91
--- /dev/null
+++ b/src/main/java/com/mgm/mcrm/limo/dtos/request/GetLimoLocationRequest.java
@@ -0,0 +1,8 @@
+package com.mgm.mcrm.limo.dtos.request;
+
+import lombok.Data;
+
+@Data
+public class GetLimoLocationRequest {
+ private String location;
+}
diff --git a/src/main/java/com/mgm/mcrm/limo/services/LimoService.java b/src/main/java/com/mgm/mcrm/limo/services/LimoService.java
index be0cbb4..a416f08 100644
--- a/src/main/java/com/mgm/mcrm/limo/services/LimoService.java
+++ b/src/main/java/com/mgm/mcrm/limo/services/LimoService.java
@@ -181,6 +181,7 @@ public class LimoService {
try {
GetLimoBookingGetOverriderRequest overriderRequest = new GetLimoBookingGetOverriderRequest();
overriderRequest.setOverriderInfo(overRiderId);
+ overriderRequest.setEmployeeId(userId);
GetOverriderInfoResponse overriderResponse = getLimoOverriderData(overriderRequest);
if (Strings.CI.equals("OK", overriderResponse.getStatusCode())
&& CollectionUtils.isNotEmpty(overriderResponse.getRecords())) {
@@ -849,7 +850,7 @@ public class LimoService {
//通过ESB接口 获取到Overriver,当Booking不够分的时候填入Overrider
public GetOverriderInfoResponse getLimoOverriderData(GetLimoBookingGetOverriderRequest request)
throws Exception {
- HttpResponseResult httpResponseResult = mgmEsbLimoApiService.invokeLimoOverrider(request.getOverriderInfo());
+ HttpResponseResult httpResponseResult = mgmEsbLimoApiService.invokeLimoOverrider(request.getOverriderInfo(), request.getEmployeeId());
if (httpResponseResult.getStatusCode() != 200) {
throw new IllegalStateException(
diff --git a/src/main/java/com/mgm/mcrm/logging/controllers/SysLogDeviceTokenController.java b/src/main/java/com/mgm/mcrm/logging/controllers/SysLogDeviceTokenController.java
index 60c93ca..49800cd 100644
--- a/src/main/java/com/mgm/mcrm/logging/controllers/SysLogDeviceTokenController.java
+++ b/src/main/java/com/mgm/mcrm/logging/controllers/SysLogDeviceTokenController.java
@@ -13,7 +13,7 @@ import org.springframework.web.bind.annotation.RestController;
@RestController
-@RequestMapping("/api/deviceToken")
+@RequestMapping("/api/app/deviceToken")
public class SysLogDeviceTokenController {
@Resource
diff --git a/src/main/java/com/mgm/mcrm/notification/controllers/NotificationController.java b/src/main/java/com/mgm/mcrm/notification/controllers/NotificationController.java
index c8800f0..3224cc4 100644
--- a/src/main/java/com/mgm/mcrm/notification/controllers/NotificationController.java
+++ b/src/main/java/com/mgm/mcrm/notification/controllers/NotificationController.java
@@ -8,6 +8,7 @@ import com.mgm.mcrm.common.annotation.logging.OperationLog;
import com.mgm.mcrm.common.constants.SysCommon;
import com.mgm.mcrm.common.dtos.BaseApiResponse;
import com.mgm.mcrm.notification.dtos.request.ChangeNotificationStatusRequest;
+import com.mgm.mcrm.notification.dtos.request.CountNotificationByUserIdRequest;
import com.mgm.mcrm.notification.dtos.request.SendNotificationRequest;
import com.mgm.mcrm.notification.dtos.response.ChangeNotificationStatusResponse;
import com.mgm.mcrm.notification.dtos.response.CountNotificationByUserIdResponse;
@@ -31,7 +32,7 @@ import java.util.ArrayList;
import java.util.List;
@RestController
-@RequestMapping("/api/notification")
+@RequestMapping("/api/app/notification")
public class NotificationController {
@Resource
@@ -67,10 +68,26 @@ public class NotificationController {
@GetMapping("/count_notification_by_user_id")
public CountNotificationByUserIdResponse countNotificationByUserId(HttpServletRequest request) {
+ return countNotificationByUserIdCore(request, null);
+ }
+
+ @PostMapping(value = "/count_notification_by_user_id",
+ produces = "application/json;charset=UTF-8",
+ consumes = MediaType.APPLICATION_JSON_VALUE)
+ public CountNotificationByUserIdResponse countNotificationByUserIdPost(
+ HttpServletRequest request,
+ @RequestBody(required = false) CountNotificationByUserIdRequest body) {
+ return countNotificationByUserIdCore(request, body == null ? null : body.getUserId());
+ }
+
+ private CountNotificationByUserIdResponse countNotificationByUserIdCore(
+ HttpServletRequest request, String requestUserId) {
String token = request.getHeader("Authorization");
- String userId = JWT.decode(token).getClaim("login_id").asString();
+ String userId = StringUtils.isNotBlank(requestUserId)
+ ? requestUserId
+ : JWT.decode(token).getClaim("login_id").asString();
String groupName = JWT.decode(token).getClaim("group_name").asString();
- return notificationService.countNotificationByUserId(userId,groupName);
+ return notificationService.countNotificationByUserId(userId, groupName);
}
@PostMapping(value="/change_status", produces = "application/json;charset=UTF-8",consumes = MediaType.APPLICATION_JSON_VALUE)
diff --git a/src/main/java/com/mgm/mcrm/notification/dtos/request/CountNotificationByUserIdRequest.java b/src/main/java/com/mgm/mcrm/notification/dtos/request/CountNotificationByUserIdRequest.java
new file mode 100644
index 0000000..8bb8cbe
--- /dev/null
+++ b/src/main/java/com/mgm/mcrm/notification/dtos/request/CountNotificationByUserIdRequest.java
@@ -0,0 +1,8 @@
+package com.mgm.mcrm.notification.dtos.request;
+
+import lombok.Data;
+
+@Data
+public class CountNotificationByUserIdRequest {
+ private String userId;
+}
diff --git a/src/main/java/com/mgm/mcrm/notification/dtos/request/EmailProxyRequest.java b/src/main/java/com/mgm/mcrm/notification/dtos/request/EmailProxyRequest.java
new file mode 100644
index 0000000..c9eaf32
--- /dev/null
+++ b/src/main/java/com/mgm/mcrm/notification/dtos/request/EmailProxyRequest.java
@@ -0,0 +1,29 @@
+package com.mgm.mcrm.notification.dtos.request;
+
+import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
+import lombok.Data;
+
+/**
+ * 后端A转发过来的发送邮件参数。
+ * showTemp 为 HTML 正文,content 为纯文本备用正文。
+ */
+@Data
+@JsonIgnoreProperties(ignoreUnknown = true)
+public class EmailProxyRequest {
+ private int id;
+ private String name;
+ private int type;
+ private String field;
+ private String bookIds;
+ private int propertyId;
+ private String subject;
+ private String content;
+ private String showTemp;
+ private String sender;
+ private String to;
+ private String cc;
+ private String createdBy;
+ private String updatedBy;
+ private String createdAt;
+ private String updatedAt;
+}
diff --git a/src/main/java/com/mgm/mcrm/notification/services/EmailTemplateService.java b/src/main/java/com/mgm/mcrm/notification/services/EmailTemplateService.java
index b237596..b2cdc5d 100644
--- a/src/main/java/com/mgm/mcrm/notification/services/EmailTemplateService.java
+++ b/src/main/java/com/mgm/mcrm/notification/services/EmailTemplateService.java
@@ -11,7 +11,6 @@ import com.mgm.mcrm.booking.repositories.BookingViewDao;
import com.mgm.mcrm.common.dtos.BaseApiResponse;
import com.mgm.mcrm.common.dtos.mgm_api.UserInfoApiRecord;
import com.mgm.mcrm.common.utils.DateTimeUtil;
-import com.mgm.mcrm.common.utils.SendEmail;
import com.mgm.mcrm.logging.services.SysLogBookingService;
import com.mgm.mcrm.notification.models.CfgEmailTemplate;
import com.mgm.mcrm.notification.models.Email;
@@ -45,6 +44,8 @@ public class EmailTemplateService {
private BookingDao bookingDao;
@Resource
private OtherRoomStatusDao roomStatusDao;
+ @Resource
+ private SendEmailService sendEmailService;
private static String emailTemp =
"{{title}} "+
@@ -71,7 +72,7 @@ public class EmailTemplateService {
List getEmailList = generateEmailTemplate(idString);
boolean res = false;
if(!getEmailList.isEmpty()) {
- res = SendEmail.sendOtherBookingEmail(getEmailList.getFirst());
+ res = sendEmailService.sendOtherBookingEmail(getEmailList.getFirst());
String[] ids = emailTemplate.getBookIds().split(";");
ArrayList idList = new ArrayList<>();
List emailList = new ArrayList<>();
diff --git a/src/main/java/com/mgm/mcrm/notification/services/SendEmailService.java b/src/main/java/com/mgm/mcrm/notification/services/SendEmailService.java
new file mode 100644
index 0000000..f8dcba4
--- /dev/null
+++ b/src/main/java/com/mgm/mcrm/notification/services/SendEmailService.java
@@ -0,0 +1,907 @@
+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" +
+ " Conf#\r\n" +
+ " | \r\n" +
+ " \r\n" +
+ " Booking Status\r\n" +
+ " | \r\n" +
+ " \r\n" +
+ " Member ID\r\n" +
+ " | \r\n" +
+ " \r\n" +
+ " Member Name\r\n" +
+ " | \r\n" +
+ " \r\n" +
+ " Tier\r\n" +
+ " | \r\n" +
+ " \r\n" +
+ " Property\r\n" +
+ " | \r\n" +
+ " \r\n" +
+ " Room Type\r\n" +
+ " | \r\n" +
+ " \r\n" +
+ " Sharer\r\n" +
+ " | \r\n" +
+ " \r\n" +
+ " Original C/I\r\n" +
+ " | \r\n" +
+ " \r\n" +
+ " Original C/O\r\n" +
+ " | \r\n" +
+ " \r\n" +
+ " Extending C/O\r\n" +
+ " | \r\n" +
+ " \r\n" +
+ " \r\n" +
+ " \r\n" +
+ " {{tbody}}"+
+ " \r\n" +
+ " ";
+
+ private static final String emailApprovalTemp = "Submission Date & Time:{{ttime}} "+
+ "Submitted and Approver:{{tuser}} "+
+ "
" +
+ "\r\n" +
+ " \r\n" +
+ " \r\n" +
+ " | \r\n" +
+ " Booking Status\r\n" +
+ " | \r\n" +
+ " \r\n" +
+ " Conf#\r\n" +
+ " | \r\n" +
+ " \r\n" +
+ " Member ID\r\n" +
+ " | \r\n" +
+ " \r\n" +
+ " Member Name\r\n" +
+ " | \r\n" +
+ " \r\n" +
+ " Tier\r\n" +
+ " | \r\n" +
+ " \r\n" +
+ " Property\r\n" +
+ " | \r\n" +
+ " \r\n" +
+ " Room Type\r\n" +
+ " | \r\n" +
+ " \r\n" +
+ " Sharer\r\n" +
+ " | \r\n" +
+ " \r\n" +
+ " Type\r\n" +
+ " | \r\n" +
+ " \r\n" +
+ " Requested C/I\r\n" +
+ " | \r\n" +
+ " \r\n" +
+ " Requested C/O\r\n" +
+ " | \r\n" +
+ " \r\n" +
+ " Approved Property\r\n" +
+ " | \r\n" +
+ " \r\n" +
+ " Approved Room Type\r\n" +
+ " | \r\n" +
+ " \r\n" +
+ " Approved C/I\r\n" +
+ " | \r\n" +
+ " \r\n" +
+ " Approved C/O\r\n" +
+ " | \r\n" +" \r\n" +
+ " Booker Team\r\n" +
+ " | \r\n" +
+ " \r\n" +
+ " Booker ID\r\n" +
+ " | \r\n" +
+ " \r\n" +
+ " Booker Name\r\n" +
+ " | \r\n" +
+ " \r\n" +
+ " Approval Remark\r\n" +
+ " | \r\n" +
+ " \r\n" +
+ " Remark\r\n" +
+ " | \r\n" +
+ " \r\n" +
+ " \r\n" +
+ " \r\n" +
+ " {{tbody}}"+
+ " \r\n" +
+ " ";
+
+ private static final String emailNewApprovalTemp = "Submission Date & Time:{{ttime}} "+
+ "Submitted and Approver:{{tuser}} "+
+ "
" +
+ "{{content}}"+
+ "\r\n" +
+ " \r\n" +
+ " \r\n" +
+ " | \r\n" +
+ " Booking Status\r\n" +
+ " | \r\n" +
+ " \r\n" +
+ " Member ID\r\n" +
+ " | \r\n" +
+ " \r\n" +
+ " Member Name\r\n" +
+ " | \r\n" +
+ " \r\n" +
+ " Tier\r\n" +
+ " | \r\n" +
+ " \r\n" +
+ " Property\r\n" +
+ " | \r\n" +
+ " \r\n" +
+ " Room Type\r\n" +
+ " | \r\n" +
+ " \r\n" +
+ " Sharer\r\n" +
+ " | \r\n" +
+ " \r\n" +
+ " Type\r\n" +
+ " | \r\n" +
+ " \r\n" +
+ " Requested C/I\r\n" +
+ " | \r\n" +
+ " \r\n" +
+ " Requested C/O\r\n" +
+ " | \r\n" +
+ " \r\n" +
+ " Booker Team\r\n" +
+ " | \r\n" +
+ " \r\n" +
+ " Booker ID\r\n" +
+ " | \r\n" +
+ " \r\n" +
+ " Booker Name\r\n" +
+ " | \r\n" +
+ " \r\n" +
+ " Approval Remark\r\n" +
+ " | \r\n" +
+ " \r\n" +
+ " Remark\r\n" +
+ " | \r\n" +
+ " \r\n" +
+ " \r\n" +
+ " \r\n" +
+ " {{tbody}}"+
+ " \r\n" +
+ " ";
+
+ private static final String cancelEmailTemp = "Submission Date & Time:{{ttime}} "+
+ "Submitted User:{{tuser}} "+
+ "
" +
+ "{{content}}"+
+ "\r\n" +
+ " \r\n" +
+ " \r\n" +
+ " | \r\n" +
+ " Conf#\r\n" +
+ " | \r\n" +
+ " \r\n" +
+ " Booking Status\r\n" +
+ " | \r\n" +
+ " \r\n" +
+ " Member ID\r\n" +
+ " | \r\n" +
+ " \r\n" +
+ " Member Name\r\n" +
+ " | \r\n" +
+ " \r\n" +
+ " Tier\r\n" +
+ " | \r\n" +
+ " \r\n" +
+ " Property\r\n" +
+ " | \r\n" +
+ " \r\n" +
+ " Room Type\r\n" +
+ " | \r\n" +
+ " \r\n" +
+ " Sharer\r\n" +
+ " | \r\n" +
+ " \r\n" +
+ " Type\r\n" +
+ " | \r\n" +
+ " \r\n" +
+ " Original C/I\r\n" +
+ " | \r\n" +
+ " \r\n" +
+ " Original C/O\r\n" +
+ " | \r\n" +
+ " \r\n" +
+ " Change C/I\r\n" +
+ " | \r\n" +
+ " \r\n" +
+ " Change C/O\r\n" +
+ " | \r\n" +
+ " \r\n" +
+ " \r\n" +
+ " \r\n" +
+ " {{tbody}}"+
+ " \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;
+ }
+
+
+}
diff --git a/src/main/java/com/mgm/mcrm/player/services/TodoService.java b/src/main/java/com/mgm/mcrm/player/services/TodoService.java
index dc17744..5687783 100644
--- a/src/main/java/com/mgm/mcrm/player/services/TodoService.java
+++ b/src/main/java/com/mgm/mcrm/player/services/TodoService.java
@@ -37,11 +37,11 @@ import com.mgm.mcrm.common.services.HttpService;
import com.mgm.mcrm.common.services.MGMEsbApiService;
import com.mgm.mcrm.common.utils.DateTimeUtil;
import com.mgm.mcrm.common.utils.LogUtil;
-import com.mgm.mcrm.common.utils.SendEmail;
import com.mgm.mcrm.logging.models.SysLogBooking;
import com.mgm.mcrm.logging.services.SysLogBookingService;
import com.mgm.mcrm.notification.models.Email;
import com.mgm.mcrm.notification.repositories.EmailDao;
+import com.mgm.mcrm.notification.services.SendEmailService;
import com.mgm.mcrm.player.dtos.request.EtaRecordInfo;
import com.mgm.mcrm.player.dtos.request.TodoCancelBookingRequest;
import com.mgm.mcrm.player.dtos.request.TodoChangeDateRequest;
@@ -125,6 +125,9 @@ public class TodoService {
@Resource
private BookingMapper bookingMapper;
+ @Resource
+ private SendEmailService sendEmailService;
+
public GetDashboardResponse getTodoDashboard(String userId) throws Exception {
GetDashboardResponse result = new GetDashboardResponse();
@@ -830,7 +833,7 @@ public class TodoService {
bookingDao.save(booking);
processResult.setSuccess(true);
processResult.setData(bookingMapper.entityToDto(booking));
- bookingService.daylightReservationChangeDate(param, profile, false);
+ bookingService.daylightReservationChangeDate(param, profile, false, false);
LogUtil.info(TodoService.class, "[ChangeBookingDate] ID:"+bookingView.getDlReservationId());
@@ -855,7 +858,7 @@ public class TodoService {
booking.setChangeCheckoutDate(coDate);
bookingView = this.getEmailInfo(bookingView, userId);
CfgSettings emailAddress = settingService.getSettingByKey(SysConstants.MGM_EMAIL_ADDRESS);
- email = SendEmail.sendCancelEmail(booking, bookingView, email, userId, userName, emailAddress.getKeyValues());
+ email = sendEmailService.sendCancelEmail(booking, bookingView, email, userId, userName, emailAddress.getKeyValues());
if (email.getStatus() == 1) {
processResult.setSuccess(true);
} else {
diff --git a/src/main/resources/application-dev.yml b/src/main/resources/application-dev.yml
index 1513908..95b2e1d 100644
--- a/src/main/resources/application-dev.yml
+++ b/src/main/resources/application-dev.yml
@@ -141,6 +141,15 @@ api-gateway:
app-id: MCRM_APP
auth-code: securItykeyOfCrmapp87895312
+#============== Truststore Manager Setting ==============
+trust-store:
+ http-support:
+ skip-validation: true
+ http-util:
+ skip-validation: true
+ soap-util:
+ skip-validation: true
+
sso:
callback:
login:
@@ -157,7 +166,7 @@ host_name: mcrm
adfs_request_timeout: 10000
adfs_login_timeout: 60000
-allow_origin: "http://localhost:5173,http://127.0.0.1:5173,http://localhost:8080,MGM_CRM_APP,MGM_CRM_CMS,https://localhost:9085,http://localhost:8081,http://127.0.0.1:8081,https://localhost:9087/api/esb/proxy"
+allow_origin: "http://localhost:5173,http://127.0.0.1:5173,http://localhost:8080,MGM_CRM_APP,MGM_CRM_CMS,https://localhost:9085,http://localhost:8081,http://127.0.0.1:8081,https://localhost:9087,https://localhost:9086,https://127.0.0.1:9086"
soap_servers: "http://localhost:5173,http://127.0.0.1:5173"
http_api_servers: "http://localhost:5173,http://127.0.0.1:5173,http://localhost:9087"
allow_ip: "0:0:0:0:0:0:0:1,127.0.0.1"
@@ -197,6 +206,8 @@ calendar:
#==================APP Config===================
notification:
recent-hours: 6
+ default-email-sender: test@test.com
+ default-email-receiver: missing@test.com
limo:
booking-draft:
diff --git a/src/main/resources/idp-metadata.xml b/src/main/resources/idp-metadata.xml
deleted file mode 100644
index 577c6f2..0000000
--- a/src/main/resources/idp-metadata.xml
+++ /dev/null
@@ -1 +0,0 @@
-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电子邮件地址用户的电子邮件地址名用户的名名称用户的唯一名称UPN用户的用户主体名称(UPN)公用名用户的公用名AD FS 1.x 电子邮件地址与 AD FS 1.1 或 AD FS 1.0 互操作时用户的电子邮件地址组用户是其成员的组AD FS 1.x UPN与 AD FS 1.1 或 AD FS 1.0 互操作时用户的 UPN角色用户所具有的角色Surname用户的姓氏PPID用户的专用标识符名称 ID用户的 SAML 名称标识符身份验证时间戳用于显示验证用户身份的时间和日期身份验证方法用于验证用户身份的方法“仅拒绝”组 SID用户的“仅拒绝”组 SID“仅拒绝”主 SID用户的“仅拒绝”主 SID“仅拒绝”主组 SID用户的“仅拒绝”主组 SID组 SID用户的组 SID主组 SID用户的主组 SID主 SID用户的主 SIDWindows 帐户名用户的域帐户名(域\用户形式)为注册用户为了使用此设备,用户已注册设备标识符设备的标识符Device Registration 标识符Device Registration 的标识符Device Registration 显示名称Device Registration 的显示名称设备 OS 类型设备的 OS 类型设备 OS 版本设备的 OS 版本为托管设备设备由管理服务进行管理转发的客户端 IP用户的 IP 地址客户端应用程序客户端应用程序的类型客户端用户代理客户端访问应用程序所使用的设备类型客户端 IP客户端的 IP 地址终结点路径可用于确定主动和被动客户端的绝对终结点路径代理传递请求的联合服务器代理的 DNS 名称应用程序标识符信赖方标识符应用程序策略证书的应用程序策略授权密钥标识符对已颁发证书签名的证书授权密钥标识符扩展基本约束证书的基本约束之一增强密钥用法描述证书的增强密钥用法之一颁发者颁发 X.509 证书的证书颁发机构的名称颁发者名称证书颁发者的可分辨名称密钥用法证书的密钥用法之一不晚于以本地时间表示的证书有效截止日期不早于以本地时间表示的证书生效日期证书策略颁发证书所依据的策略公钥证书的公钥证书原始数据证书的原始数据使用者可选名称证书的备用名称之一序列号证书的序列号签名算法用于创建证书签名的算法使用者证书中的使用者使用者密钥标识符描述证书的使用者密钥标识符使用者名称证书中的使用者可分辨名称V2 模板名称颁发或续订证书时使用的版本 2 证书模板的名称。扩展名特定于 Microsoft。V1 模板名称颁发或续订证书时使用的版本 1 证书模板的名称。扩展名特定于 Microsoft。指纹证书的指纹X.509 版本证书的 X.509 格式版本在公司网络内部用于指明请求是否从公司网络中发出。密码到期时间用于显示密码到期时间密码到期天数用于显示距密码到期的天数更新密码 URL用于显示更新密码服务的 Web 地址身份验证方法引用用于指示用来验证用户的所有身份验证方法客户端请求 ID用户会话的标识符https://adserver.willtechmacau.com/adfs/services/trust/2005/issuedtokenmixedasymmetricbasic256https://adserver.willtechmacau.com/adfs/services/trust/2005/issuedtokenmixedsymmetricbasic256https://adserver.willtechmacau.com/adfs/services/trust/13/issuedtokenmixedasymmetricbasic256https://adserver.willtechmacau.com/adfs/services/trust/13/issuedtokenmixedsymmetricbasic256https://adserver.willtechmacau.com/adfs/ls/http://adserver.willtechmacau.com/adfs/services/trusthttps://adserver.willtechmacau.com/adfs/services/trust/2005/issuedtokenmixedasymmetricbasic256https://adserver.willtechmacau.com/adfs/ls/MIIC8DCCAdigAwIBAgIQMzdxsgcsk7JBQOiD4S7Z9TANBgkqhkiG9w0BAQsFADA0MTIwMAYDVQQDEylBREZTIFNpZ25pbmcgLSBhZHNlcnZlci53aWxsdGVjaG1hY2F1LmNvbTAeFw0yNDA5MTYwODExMzNaFw0yNTA5MTYwODExMzNaMDQxMjAwBgNVBAMTKUFERlMgU2lnbmluZyAtIGFkc2VydmVyLndpbGx0ZWNobWFjYXUuY29tMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA7IYsJuA7nu7lEreZbWUuZbW4ywfm6rGddTYRusRSrqJRmcLtIby9FQP3jt5brPzoleSbVsrOU+3h9IXMkfJ1sBu+BcW1X/IzUIrQsjJQss1L/9b81ZMiy+ew1QTg2CZt8fQbbt+PXh8jm3vFvSQdXHMD/cO16eZNGBZFeq8xM15k7bo+aAm6X0XQbIOsAhymAFwVLLpEzXxsmCAIy6hz9cdVH1GOVoKtX7SGw6uDGiwrZLNHJsRVzt0Byx3xvFXM1zEZBRJ0nexWK6zk+80AuLoZqiidwi8cnsdceBk4no5b4COE8bEFMN8oR6/ohDW6JQBhVIJS+jwJCweez9xcgQIDAQABMA0GCSqGSIb3DQEBCwUAA4IBAQBoRtn4mw9VUCKe2Bg+XskP/rAPPMsuENH26S6100vEvJu35z/ak61ttCuF3d7lpI/WVge/AZNbulx3Hl0EzCx4tN3cnVU5aW/0Ynn4My5m8Lz+cK37crukTtFqY2rdBlSAUy1uw+z9OXluJ/St7DL7cbLNyJg/ncKRncjkb0rtbFQ3kOiULO3WTWDQcKbQjFZKYpJ+QmTq2DmGkuYb+lwxcK+ObBm3gklw77f3Fhz5Briz9UEPVzp5QeLpfeNEbI4rvwSeUo/UQ4eyE2Ux4K5LNvXDSHTBiggUl9yTXLjvPdT439HRuiFpZ+fj19lB4Ywu8dphvkfJO12FEQpaNqO/电子邮件地址用户的电子邮件地址名用户的名名称用户的唯一名称UPN用户的用户主体名称(UPN)公用名用户的公用名AD FS 1.x 电子邮件地址与 AD FS 1.1 或 AD FS 1.0 互操作时用户的电子邮件地址组用户是其成员的组AD FS 1.x UPN与 AD FS 1.1 或 AD FS 1.0 互操作时用户的 UPN角色用户所具有的角色Surname用户的姓氏PPID用户的专用标识符名称 ID用户的 SAML 名称标识符身份验证时间戳用于显示验证用户身份的时间和日期身份验证方法用于验证用户身份的方法“仅拒绝”组 SID用户的“仅拒绝”组 SID“仅拒绝”主 SID用户的“仅拒绝”主 SID“仅拒绝”主组 SID用户的“仅拒绝”主组 SID组 SID用户的组 SID主组 SID用户的主组 SID主 SID用户的主 SIDWindows 帐户名用户的域帐户名(域\用户形式)为注册用户为了使用此设备,用户已注册设备标识符设备的标识符Device Registration 标识符Device Registration 的标识符Device Registration 显示名称Device Registration 的显示名称设备 OS 类型设备的 OS 类型设备 OS 版本设备的 OS 版本为托管设备设备由管理服务进行管理转发的客户端 IP用户的 IP 地址客户端应用程序客户端应用程序的类型客户端用户代理客户端访问应用程序所使用的设备类型客户端 IP客户端的 IP 地址终结点路径可用于确定主动和被动客户端的绝对终结点路径代理传递请求的联合服务器代理的 DNS 名称应用程序标识符信赖方标识符应用程序策略证书的应用程序策略授权密钥标识符对已颁发证书签名的证书授权密钥标识符扩展基本约束证书的基本约束之一增强密钥用法描述证书的增强密钥用法之一颁发者颁发 X.509 证书的证书颁发机构的名称颁发者名称证书颁发者的可分辨名称密钥用法证书的密钥用法之一不晚于以本地时间表示的证书有效截止日期不早于以本地时间表示的证书生效日期证书策略颁发证书所依据的策略公钥证书的公钥证书原始数据证书的原始数据使用者可选名称证书的备用名称之一序列号证书的序列号签名算法用于创建证书签名的算法使用者证书中的使用者使用者密钥标识符描述证书的使用者密钥标识符使用者名称证书中的使用者可分辨名称V2 模板名称颁发或续订证书时使用的版本 2 证书模板的名称。扩展名特定于 Microsoft。V1 模板名称颁发或续订证书时使用的版本 1 证书模板的名称。扩展名特定于 Microsoft。指纹证书的指纹X.509 版本证书的 X.509 格式版本在公司网络内部用于指明请求是否从公司网络中发出。密码到期时间用于显示密码到期时间密码到期天数用于显示距密码到期的天数更新密码 URL用于显示更新密码服务的 Web 地址身份验证方法引用用于指示用来验证用户的所有身份验证方法客户端请求 ID用户会话的标识符https://adserver.willtechmacau.com/adfs/services/trust/2005/certificatemixedhttps://adserver.willtechmacau.com/adfs/services/trust/mexhttps://adserver.willtechmacau.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:oasis:names:tc:SAML:1.1:nameid-format:emailAddressurn:oasis:names:tc:SAML:2.0:nameid-format:persistenturn:oasis:names:tc:SAML:2.0:nameid-format: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:oasis:names:tc:SAML:1.1:nameid-format:emailAddressurn:oasis:names:tc:SAML:2.0:nameid-format:persistenturn:oasis:names:tc:SAML:2.0:nameid-format:transient
\ No newline at end of file
|