update
This commit is contained in:
@@ -13,14 +13,14 @@
|
||||
<parent>
|
||||
<groupId>org.springframework.boot</groupId>
|
||||
<artifactId>spring-boot-starter-parent</artifactId>
|
||||
<version>4.2.0-M1</version>
|
||||
<version>4.2.0-M2</version>
|
||||
<relativePath />
|
||||
</parent>
|
||||
|
||||
<properties>
|
||||
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
|
||||
<java.version>21</java.version>
|
||||
<tomcat.version>11.0.25</tomcat.version>
|
||||
<tomcat.version>11.0.26</tomcat.version>
|
||||
<netty.version>4.2.18.Final</netty.version>
|
||||
<httpclient5.version>5.6.4</httpclient5.version>
|
||||
<httpclient5-win.version>5.2.3</httpclient5-win.version>
|
||||
@@ -29,6 +29,8 @@
|
||||
<fasterxml.jackson.version>2.22.3</fasterxml.jackson.version>
|
||||
<tools.jackson.version>3.2.3</tools.jackson.version>
|
||||
<log4j2.version>2.26.1</log4j2.version>
|
||||
<hibernate-validator.version>9.2.0.Beta1</hibernate-validator.version>
|
||||
<jakarta-xml-bind.version>4.0.9</jakarta-xml-bind.version>
|
||||
<maven.compiler.source>${java.version}</maven.compiler.source>
|
||||
<maven.compiler.target>${java.version}</maven.compiler.target>
|
||||
</properties>
|
||||
@@ -93,6 +95,11 @@
|
||||
<groupId>org.springframework.boot</groupId>
|
||||
<artifactId>spring-boot-starter-mail</artifactId>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>jakarta.validation</groupId>
|
||||
<artifactId>jakarta.validation-api</artifactId>
|
||||
<version>4.0.0-M1</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.springframework.boot</groupId>
|
||||
<artifactId>spring-boot-starter-validation</artifactId>
|
||||
@@ -115,7 +122,6 @@
|
||||
<groupId>org.springframework.boot</groupId>
|
||||
<artifactId>spring-boot-starter-aop</artifactId>
|
||||
<version>4.0.0-M2</version>
|
||||
<scope>compile</scope>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.springframework.boot</groupId>
|
||||
@@ -195,7 +201,7 @@
|
||||
<dependency>
|
||||
<groupId>com.auth0</groupId>
|
||||
<artifactId>java-jwt</artifactId>
|
||||
<version>4.5.0</version>
|
||||
<version>4.6.2</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.jsmpp</groupId>
|
||||
|
||||
@@ -4,5 +4,20 @@ package com.mgm.mcrm;
|
||||
public class TestRun {
|
||||
public static void main(String[] args) {
|
||||
|
||||
Object[] arr = {"asdas", "null", 23, "asd", 's', 90L, 3.4F, 3.3};
|
||||
|
||||
System.out.println(nonNullAll(arr));
|
||||
|
||||
}
|
||||
|
||||
static boolean nonNullAll(Object ...arr) {
|
||||
if (arr == null) return false;
|
||||
|
||||
if (arr.length == 0) return false;
|
||||
|
||||
for (Object o : arr) {
|
||||
if (o == null) return false;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
}
|
||||
@@ -2,6 +2,7 @@ package com.mgm.mcrm.adfs.controllers;
|
||||
|
||||
import com.mgm.mcrm.adfs.config.HttpClientContextRequestFactory;
|
||||
import com.mgm.mcrm.common.constants.SysCommon;
|
||||
import com.mgm.mcrm.common.services.ConfigurableTrustHandler;
|
||||
import com.mgm.mcrm.common.utils.AESUtil;
|
||||
import com.mgm.mcrm.common.utils.LogUtil;
|
||||
import com.mgm.mcrm.common.utils.NetworkUtil;
|
||||
@@ -45,6 +46,7 @@ import org.springframework.web.bind.annotation.RequestMethod;
|
||||
import org.springframework.web.util.HtmlUtils;
|
||||
|
||||
import javax.net.ssl.SSLContext;
|
||||
import javax.net.ssl.TrustManager;
|
||||
import java.io.*;
|
||||
import java.net.InetAddress;
|
||||
import java.net.URI;
|
||||
@@ -75,6 +77,8 @@ public class SSORestProcessController {
|
||||
private String adfsDomain;
|
||||
@Value("${adfs_secret_key}")
|
||||
private String adfsSecretKey;
|
||||
@Value("${adfs_skip_ssl_validation:true}")
|
||||
private boolean skipSslValidation=true;
|
||||
|
||||
@Value("${adfs_request_timeout}")
|
||||
private int adfsRequestTimeout=10000;
|
||||
@@ -208,11 +212,15 @@ public class SSORestProcessController {
|
||||
credentials = createNtlmCredentials(adUserName, password, adDomain, null);
|
||||
credentialsProvider.setCredentials(authScope, credentials);
|
||||
|
||||
SSLContext sslContext = SSLContexts.custom()
|
||||
.loadTrustMaterial((chain, authType) -> true) // 信任所有证书
|
||||
.build();
|
||||
NoopHostnameVerifier hostnameVerifier = NoopHostnameVerifier.INSTANCE;
|
||||
DefaultClientTlsStrategy tlsStrategy = new DefaultClientTlsStrategy(sslContext, hostnameVerifier);
|
||||
ConfigurableTrustHandler trustHandler = new ConfigurableTrustHandler(skipSslValidation, SysCommon.getDefaultTrustManager(), SysCommon.getHttpApiServers());
|
||||
|
||||
SSLContext sslContext = null;
|
||||
try {
|
||||
sslContext = SSLContext.getInstance("TLS");
|
||||
sslContext.init(null, new TrustManager[]{trustHandler}, null);
|
||||
} catch (Exception ignored) {
|
||||
}
|
||||
DefaultClientTlsStrategy tlsStrategy = new DefaultClientTlsStrategy(sslContext, trustHandler);
|
||||
PoolingHttpClientConnectionManager connectionManager =
|
||||
PoolingHttpClientConnectionManagerBuilder.create()
|
||||
.setTlsSocketStrategy(tlsStrategy)
|
||||
|
||||
@@ -828,19 +828,46 @@ public class ApprovalService {
|
||||
if ("DAYLIGHT".equalsIgnoreCase(bookingView.getPropertyCategory())) {
|
||||
isOverBook = false;
|
||||
} else {
|
||||
isOverBook = this.checkIsOverbook(bookingView.getRoomId(), bookingView.getCheckinDate(),
|
||||
bookingView.getCheckoutDate(), bookingView.getPropertyId(), bookingView.getBlockId());
|
||||
isOverBook = this.checkIsOverbook(bookingView.getRoomId(), originBooking.getCheckinDate(),
|
||||
originBooking.getCheckoutDate(), bookingView.getPropertyId(), bookingView.getBlockId());
|
||||
}
|
||||
|
||||
Boolean isOtherOverBook = this.checkOtherIsOverbook(Math.toIntExact(originBooking.getRoomId()), originBooking.getCheckoutDate(),
|
||||
originBooking.getCheckinDate(), originBooking.getPropertyId(), originBooking.getSegmentId());
|
||||
|
||||
if (bookingView != null) {
|
||||
bookingView.setCheckinDate(originBooking.getCheckinDate());
|
||||
bookingView.setCheckoutDate(originBooking.getCheckoutDate());
|
||||
Integer numOfNight = Integer.valueOf(DateTimeUtil.getDiffDate(
|
||||
bookingView.getCheckinDate(), bookingView.getCheckoutDate(), "day"));
|
||||
List<String> dates = new ArrayList<>();
|
||||
List<JSONObject> dateList = new ArrayList<>();
|
||||
JSONObject obj = new JSONObject();
|
||||
for (int j = 0; j < numOfNight + 1; j++) {
|
||||
dates.add(DateTimeUtil.getDateByFormat(DateTimeUtil.addDay(bookingView.getCheckinDate(), j), "yyyy-MM-dd"));
|
||||
}
|
||||
obj.put("date", dates);
|
||||
obj.put("numOfNight", numOfNight);
|
||||
obj.put("numOfRoom", 1);
|
||||
obj.put("checked", true);
|
||||
dateList.add(obj);
|
||||
bookingView.setDateList(dateList);
|
||||
bookingView.setNumOfNight(numOfNight);
|
||||
originBooking.setDateList(JSONArray.toJSONString(dateList));
|
||||
originBooking.setNumOfNight(numOfNight);
|
||||
bookingView.setApproveStatus(originBooking.getApproveStatus());
|
||||
bookingView.setApprovedAt(originBooking.getApprovedAt());
|
||||
bookingView.setApprovedBy(originBooking.getApprovedBy());
|
||||
bookingView.setApprovedId(originBooking.getApprovedId());
|
||||
}
|
||||
bookingDao.saveAndFlush(originBooking);
|
||||
LogUtil.info(ApprovalService.class,"Submitting Approval.BookingID:"+bookingId+"|Save CheckinDate = "+originBooking.getCheckinDate()+" Save CheckoutDate = "+originBooking.getCheckoutDate());
|
||||
|
||||
|
||||
if (Strings.CS.equals(originBooking.getBookType(),"0")){
|
||||
//create 的情况
|
||||
LogUtil.info(ApprovalService.class,"Submitting Approval.BookingID:"+bookingId+"|bookingType:Create");
|
||||
bookingDao.save(originBooking);
|
||||
BookingsView originBookingView = bookingViewDao.findById(Long.parseLong(bookingId));
|
||||
BookingsView originBookingView = bookingView;
|
||||
originBookingView = this.getEmailInfo(originBookingView,originBookingView.getCreatedBy()).getData();
|
||||
|
||||
// 判断是OPETA或OTHER Property
|
||||
|
||||
@@ -567,7 +567,7 @@ public class ConfigService {
|
||||
|
||||
while(checkInDate.getTime()<checkOutDate.getTime()) {
|
||||
String getDate = DateTimeUtil.getDateByFormat(checkInDate, "yyyy-MM-dd");
|
||||
if(checkMode==2&&!resultList.containsKey(getDate)) {
|
||||
if(checkMode==2 && !resultList.containsKey(getDate) && checkInDate.getTime()>=today.getTime()) {
|
||||
resultList.put(getDate,newCalendarEntry(getDate));
|
||||
}
|
||||
if(resultList.containsKey(getDate)){
|
||||
@@ -613,7 +613,7 @@ public class ConfigService {
|
||||
}
|
||||
for(Date period:protectionPeriod) {
|
||||
String date = DateTimeUtil.getDateByFormat(period, "yyyy-MM-dd");
|
||||
if(checkMode==2&&!resultList.containsKey(date)) {
|
||||
if(checkMode==2 && !resultList.containsKey(date) && period.getTime()>=today.getTime()) {
|
||||
resultList.put(date,newCalendarEntry(date));
|
||||
}
|
||||
if(resultList.containsKey(date)){
|
||||
|
||||
+196
-112
@@ -169,7 +169,7 @@ public class DaylightApiService {
|
||||
}
|
||||
}
|
||||
|
||||
JSONObject jsonObject = this.daylightCallOperationUrl(operationUrl, dlPropertyId);
|
||||
JSONObject jsonObject = this.daylightCallMultiOperationUrl(operationUrl, dlPropertyId);
|
||||
|
||||
if (jsonObject.isEmpty()) {
|
||||
result.setSuccess(false);
|
||||
@@ -502,9 +502,6 @@ public class DaylightApiService {
|
||||
BaseApiResponse<String> result = new BaseApiResponse<>();
|
||||
|
||||
try {
|
||||
if (CollectionUtils.isNotEmpty(dlSharerIds)) {
|
||||
daylightRemoveAccompanyingGuest(dlReservationId, dlPropertyId, dlSharerIds, version);
|
||||
}
|
||||
|
||||
String url = "/api-gateway/aggregator/v1/integrations/reservation/multiroom/cancel";
|
||||
|
||||
@@ -538,7 +535,7 @@ public class DaylightApiService {
|
||||
}
|
||||
}
|
||||
|
||||
JSONObject jsonObject = this.daylightCallOperationUrl(operationUrl, dlPropertyId);
|
||||
JSONObject jsonObject = this.daylightCallMultiOperationUrl(operationUrl, dlPropertyId);
|
||||
|
||||
if (jsonObject.isEmpty()) {
|
||||
result.setSuccess(false);
|
||||
@@ -585,7 +582,7 @@ public class DaylightApiService {
|
||||
return result;
|
||||
}
|
||||
|
||||
private JSONObject daylightCallOperationUrl(String operationUrl, String dlPropertyId) {
|
||||
private JSONObject daylightCallMultiOperationUrl(String operationUrl, String dlPropertyId) {
|
||||
|
||||
JSONObject jsonObject = new JSONObject();
|
||||
try {
|
||||
@@ -599,6 +596,9 @@ public class DaylightApiService {
|
||||
int notRunCount = 0;
|
||||
int inProgressCount = 0;
|
||||
do {
|
||||
// 让进程暂停1.5秒 by Mauve 20260909
|
||||
TimeUnit.MILLISECONDS.sleep(2000L);
|
||||
|
||||
responseData = httpService.sslGet(operationUrl, headers, new HashMap<>());
|
||||
|
||||
JSONObject jsonObject1 = JSON.parseObject(responseData);
|
||||
@@ -616,9 +616,6 @@ public class DaylightApiService {
|
||||
if (string.contains("InProgress")) {
|
||||
inProgressCount++;
|
||||
}
|
||||
|
||||
// 让进程暂停1.5秒 by Mauve 20260909
|
||||
TimeUnit.MILLISECONDS.sleep(1500L);
|
||||
} while ((responseData.contains("InProgress") || responseData.contains("NotRun")) && notRunCount < 20 && inProgressCount < 50);
|
||||
|
||||
jsonObject = JSON.parseObject(responseData);
|
||||
@@ -630,6 +627,60 @@ public class DaylightApiService {
|
||||
return jsonObject;
|
||||
}
|
||||
|
||||
private Boolean daylightCallOperationUrl(String operationUrl, String dlPropertyId) {
|
||||
|
||||
try {
|
||||
Header[] headers = HttpHeaderBuilder.custom()
|
||||
.contentType("application/json")
|
||||
.ac_property_id(dlPropertyId)
|
||||
.build();
|
||||
|
||||
String responseData;
|
||||
Boolean result = false;
|
||||
|
||||
int notRunCount = 0;
|
||||
int inProgressCount = 0;
|
||||
do {
|
||||
// 让进程暂停2秒 by Mauve 20260909
|
||||
TimeUnit.MILLISECONDS.sleep(2000);
|
||||
|
||||
responseData = httpService.sslGet(operationUrl, headers, new HashMap<>());
|
||||
|
||||
JSONObject jsonObject1 = JSON.parseObject(responseData);
|
||||
|
||||
String string =
|
||||
jsonObject1.getJSONObject("status").getString("operationStatus");
|
||||
|
||||
if (string.contains("Completed")) {
|
||||
|
||||
String string1 = jsonObject1.getJSONObject("data").getString("result");
|
||||
|
||||
if (string1.equals("Succeeded")) {
|
||||
result = true;
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
if (string.contains("Fail")) break;
|
||||
|
||||
if (string.contains("NotRun")) {
|
||||
notRunCount++;
|
||||
continue;
|
||||
}
|
||||
|
||||
if (string.contains("InProgress")) {
|
||||
inProgressCount++;
|
||||
}
|
||||
} while ((responseData.contains("InProgress") || responseData.contains("NotRun")) && notRunCount < 20 && inProgressCount < 50);
|
||||
|
||||
return result;
|
||||
} catch (Exception e) {
|
||||
log.error("Call operation url failed: {}", operationUrl, e);
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
private JSONObject buildCancelReservationRequest(String dlReservationId, String dlPropertyId) {
|
||||
|
||||
JSONObject json = new JSONObject();
|
||||
@@ -679,13 +730,18 @@ public class DaylightApiService {
|
||||
|
||||
public DaylightReservationResponse getDaylightReservationByDlId(
|
||||
String dlReservationId,
|
||||
String dlPropertyId
|
||||
String dlPropertyId,
|
||||
boolean needExtend
|
||||
) {
|
||||
DaylightReservationResponse resultResponse;
|
||||
|
||||
try {
|
||||
String url = "/api-gateway/booking/v1/reservations/" + dlReservationId
|
||||
+ "?extend=PurchaseElements,CustomFields";
|
||||
String url = "/api-gateway/booking/v1/reservations/" + dlReservationId;
|
||||
|
||||
if (needExtend) {
|
||||
url = url + "?extend=PurchaseElements,CustomFields";
|
||||
}
|
||||
|
||||
// 获取对应的值
|
||||
Header[] headers = HttpHeaderBuilder.custom()
|
||||
.contentType("application/json")
|
||||
@@ -698,6 +754,8 @@ public class DaylightApiService {
|
||||
resultResponse = JSON.parseObject(responseData, DaylightReservationResponse.class);
|
||||
|
||||
} catch (Exception e) {
|
||||
log.error("[DL-RESV-DEBUG] getDaylightReservationByDlId exception, dlReservationId={}, dlPropertyId={}",
|
||||
dlReservationId, dlPropertyId, e);
|
||||
throw new RuntimeException(e);
|
||||
}
|
||||
|
||||
@@ -1065,12 +1123,15 @@ public class DaylightApiService {
|
||||
}
|
||||
log.info("[getBookingRecordByProfileId_Optimize] totalProperties={}, profileId={}", properties.size(), profileId);
|
||||
|
||||
// String currentDate = DateTimeUtil.getCurrentDate("yyyy-MM-dd");
|
||||
String month3 = DateTimeUtil.addDay(new Date(), -90, "yyyy-MM-dd");
|
||||
String currentDate = DateTimeUtil.getCurrentDate("yyyy-MM-dd");
|
||||
|
||||
String url = "/api-gateway/aggregator/v1/reservations?pageNumber=1&pageSize=40&filter=profileId==" + profileId
|
||||
+ ";(statusCode.code==DI,statusCode.code==RS,statusCode.code==DO,statusCode.code==IH,statusCode.code==CX)"
|
||||
// + ";departureDate=ge=" + currentDate
|
||||
String url = "/api-gateway/aggregator/v1/reservations?pageNumber=1&pageSize=50&filter=profileId==" + profileId
|
||||
+ ";(statusCode.code==DI,statusCode.code==RS,statusCode.code==DO,statusCode.code==IH,statusCode.code==NS,"
|
||||
+ "statusCode.code==CX"+ ";arrivalDate=ge=" + month3+ ")"
|
||||
+ ";departureDate=ge=" + currentDate
|
||||
+ "&extend=PurchaseElements,CustomFields,Breakdown,DoorKeys,Notes&sort=-createdAt";
|
||||
|
||||
Map<String, Object> map = new HashMap<>();
|
||||
try {
|
||||
for (CfgProperties property : properties) {
|
||||
@@ -1370,66 +1431,6 @@ public class DaylightApiService {
|
||||
return result;
|
||||
}
|
||||
|
||||
public BaseApiResponse<String> updateDaylightCompRule(
|
||||
String dlAccountId,
|
||||
String dlPropertyId,
|
||||
String dlCompRuleId,
|
||||
String version,
|
||||
UpdateCompRuleRequest request
|
||||
) {
|
||||
try {
|
||||
String url = "/api-gateway/cashiering/v1/accounts/" + dlAccountId + "/complimentary-rules/" + dlCompRuleId;
|
||||
|
||||
Header[] headers = HttpHeaderBuilder.custom()
|
||||
.contentType("application/json")
|
||||
.ac_property_id(dlPropertyId)
|
||||
.ifMatch(String.valueOf(version))
|
||||
.build();
|
||||
|
||||
return updateCompRule(url, headers, request);
|
||||
} catch (Exception e) {
|
||||
BaseApiResponse<String> response = new BaseApiResponse<>();
|
||||
response.setSuccess(false);
|
||||
response.setMessage(e.getMessage());
|
||||
LogUtil.error(DaylightApiService.class, e.getMessage());
|
||||
|
||||
return response;
|
||||
}
|
||||
}
|
||||
|
||||
public BaseApiResponse<CompRuleResponse> getDaylightCompRule(
|
||||
String dlPropertyId,
|
||||
String dlAccountId,
|
||||
String dlCompRuleId
|
||||
) {
|
||||
BaseApiResponse<CompRuleResponse> response = new BaseApiResponse<>();
|
||||
|
||||
try {
|
||||
String url = "/api-gateway/cashiering/v1/accounts/" + dlAccountId + "/complimentary-rules/" + dlCompRuleId;
|
||||
|
||||
Header[] headers = HttpHeaderBuilder.custom()
|
||||
.contentType("application/json")
|
||||
.ac_property_id(dlPropertyId)
|
||||
.build();
|
||||
|
||||
Map<String, Object> map = new HashMap<>();
|
||||
|
||||
HttpResult httpResult = httpService.sslGetHttpResult(url, headers, map);
|
||||
|
||||
if (httpResult.getStatusCode() == 200) {
|
||||
CompRuleResponse crr = JSON.parseObject(httpResult.getResult(), CompRuleResponse.class);
|
||||
response.setSuccess(true);
|
||||
response.setData(crr);
|
||||
}
|
||||
} catch (Exception e) {
|
||||
response.setSuccess(false);
|
||||
response.setMessage(e.getMessage());
|
||||
LogUtil.error(DaylightApiService.class, e.getMessage());
|
||||
}
|
||||
|
||||
return response;
|
||||
}
|
||||
|
||||
public BaseApiResponse<String> updateDaylightCompRule(
|
||||
String dlAccountId,
|
||||
String dlPropertyId,
|
||||
@@ -1520,7 +1521,7 @@ public class DaylightApiService {
|
||||
return result;
|
||||
}
|
||||
|
||||
public BaseApiResponse<String> createDaylightCompRule(
|
||||
public BaseApiResponse<List<String>> createDaylightCompRule(
|
||||
String dlAccountId,
|
||||
String profileId,
|
||||
String dlPropertyId,
|
||||
@@ -1532,8 +1533,29 @@ public class DaylightApiService {
|
||||
List<CfgExceptionDaylightView> exceptionDaylightViewList,
|
||||
String miscCharge
|
||||
) {
|
||||
return createDaylightCompRule(dlAccountId, profileId, dlPropertyId, userId, roomName,
|
||||
startDate, endDate, daylightViewList, exceptionDaylightViewList, miscCharge, false);
|
||||
}
|
||||
|
||||
BaseApiResponse<String> result = new BaseApiResponse<>();
|
||||
/**
|
||||
* @param isNewBooking true only for the first comp rule initialization after booking creation
|
||||
*/
|
||||
public BaseApiResponse<List<String>> createDaylightCompRule(
|
||||
String dlAccountId,
|
||||
String profileId,
|
||||
String dlPropertyId,
|
||||
String userId,
|
||||
String roomName,
|
||||
String startDate,
|
||||
String endDate,
|
||||
List<CfgDaylightView> daylightViewList,
|
||||
List<CfgExceptionDaylightView> exceptionDaylightViewList,
|
||||
String miscCharge,
|
||||
boolean isNewBooking
|
||||
) {
|
||||
|
||||
BaseApiResponse<List<String>> result = new BaseApiResponse<>();
|
||||
result.setData(new ArrayList<>());
|
||||
|
||||
log.info("Start to create complimentary rule");
|
||||
|
||||
@@ -1553,15 +1575,20 @@ public class DaylightApiService {
|
||||
return result;
|
||||
}
|
||||
|
||||
BaseApiResponse<JSONArray> jsonArrayBaseApiResponse = daylightGetCompRulesByAccount(dlPropertyId, dlAccountId);
|
||||
if (!jsonArrayBaseApiResponse.isSuccess() || jsonArrayBaseApiResponse.getData() == null) {
|
||||
result.setSuccess(false);
|
||||
result.setMessage(jsonArrayBaseApiResponse.getMessage());
|
||||
return result;
|
||||
int compRuleCount = 0;
|
||||
if (isNewBooking) {
|
||||
log.info("Skip comp rule query for newly created booking, accountId={}", dlAccountId);
|
||||
} else {
|
||||
BaseApiResponse<JSONArray> jsonArrayBaseApiResponse = daylightGetCompRulesByAccount(dlPropertyId, dlAccountId);
|
||||
if (!jsonArrayBaseApiResponse.isSuccess() || jsonArrayBaseApiResponse.getData() == null) {
|
||||
result.setSuccess(false);
|
||||
result.setMessage(jsonArrayBaseApiResponse.getMessage());
|
||||
return result;
|
||||
}
|
||||
compRuleCount = jsonArrayBaseApiResponse.getData().size();
|
||||
}
|
||||
|
||||
int compRuleCount = jsonArrayBaseApiResponse.getData().size();
|
||||
boolean hasMiscCharge = miscCharge != null;
|
||||
boolean hasMiscCharge = StringUtils.isNotBlank(miscCharge);
|
||||
boolean createRoomOnlyCompRule = compRuleCount == 0;
|
||||
boolean createDaylightViewCompRule = hasMiscCharge && compRuleCount <= 1;
|
||||
|
||||
@@ -1601,8 +1628,14 @@ public class DaylightApiService {
|
||||
|
||||
if (compRuleCount >= 2) {
|
||||
try {
|
||||
return updateDaylightCompRule(dlAccountId, dlPropertyId, startDate, endDate,
|
||||
BaseApiResponse<String> response
|
||||
= updateDaylightCompRule(dlAccountId, dlPropertyId, startDate, endDate,
|
||||
daylightView, exceptionDaylightView, miscCharge);
|
||||
|
||||
result.setMessage(response.getMessage());
|
||||
result.setSuccess(response.isSuccess());
|
||||
|
||||
return result;
|
||||
} catch (Exception e) {
|
||||
result.setSuccess(false);
|
||||
result.setMessage(e.getMessage());
|
||||
@@ -1660,8 +1693,13 @@ public class DaylightApiService {
|
||||
daylightViewRoomOnly, exceptionDaylightViewRoomOnly, false);
|
||||
BaseApiResponse<String> createDefaultResult = createCompRule(url, headers, roomOnlyCompRuleRequest);
|
||||
if (!createDefaultResult.isSuccess()) {
|
||||
return createDefaultResult;
|
||||
|
||||
result.setSuccess(false);
|
||||
result.setMessage(createDefaultResult.getMessage());
|
||||
|
||||
return result;
|
||||
}
|
||||
result.getData().add(createDefaultResult.getData());
|
||||
}
|
||||
|
||||
if (createDaylightViewCompRule) {
|
||||
@@ -1675,8 +1713,14 @@ public class DaylightApiService {
|
||||
|
||||
BaseApiResponse<String> createDaylightViewResult = createCompRule(url, headers, daylightViewCompRuleRequest.getData());
|
||||
if (!createDaylightViewResult.isSuccess()) {
|
||||
return createDaylightViewResult;
|
||||
|
||||
result.setSuccess(false);
|
||||
result.setMessage(createDaylightViewResult.getMessage());
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
result.getData().add(createDaylightViewResult.getData());
|
||||
}
|
||||
|
||||
result.setSuccess(true);
|
||||
@@ -1757,6 +1801,7 @@ public class DaylightApiService {
|
||||
|
||||
result.setSuccess(true);
|
||||
result.setMessage("Create CompRule success");
|
||||
result.setData(createDefaultResult.getData());
|
||||
|
||||
} catch (Exception e) {
|
||||
result.setSuccess(false);
|
||||
@@ -1947,6 +1992,16 @@ public class DaylightApiService {
|
||||
if (httpResult.getStatusCode() == 201) {
|
||||
result.setSuccess(true);
|
||||
result.setMessage("Create CompRule success");
|
||||
|
||||
Header[] respHeaders = httpResult.getRespHeaders();
|
||||
for (Header header : respHeaders) {
|
||||
String name = header.getName();
|
||||
if ("Location".equalsIgnoreCase(name)) {
|
||||
String[] split = header.getValue().split("/");
|
||||
String compRuleId = split[split.length - 1];
|
||||
result.setData(compRuleId);
|
||||
}
|
||||
}
|
||||
} else {
|
||||
result.setSuccess(false);
|
||||
result.setMessage("Create CompRule failed");
|
||||
@@ -2021,32 +2076,41 @@ public class DaylightApiService {
|
||||
|
||||
log.info("getDaylightRequestorApproverByUserId, propertyId: {}, userId: {}", propertyId, userId);
|
||||
|
||||
try {
|
||||
String url = "/api-gateway/resource-management/v1/resource?filter=(isActive==true;code==" + userId + ")";
|
||||
// 获取对应的值
|
||||
Header[] headers = HttpHeaderBuilder.custom()
|
||||
.contentType("application/json")
|
||||
.ac_property_id(propertyId)
|
||||
.build();
|
||||
// 参数设置
|
||||
Map<String, Object> map = new HashMap<>();
|
||||
String responseData = httpService.sslGet(url, headers, map);
|
||||
JSONObject res = JSON.parseObject(responseData);
|
||||
JSONArray raJson = res.getJSONArray("results");
|
||||
CfgDaylightConfiguration requestor = dlConfigurationDao.findByDlPropertyIdAndConfigName(propertyId, "ResourceRequestor");
|
||||
|
||||
RequestorApproverResponse result = convertRequestorApprover(raJson);
|
||||
String configValue = requestor.getConfigValue();
|
||||
|
||||
if (result != null) {
|
||||
serviceResult.setSuccess(true);
|
||||
serviceResult.setData(result);
|
||||
} else {
|
||||
serviceResult.setSuccess(false);
|
||||
serviceResult.setMessage("Convert failed");
|
||||
JSONArray object = JSONArray.parseArray(configValue);
|
||||
|
||||
for (int i = 0; i < object.size(); i++) {
|
||||
JSONObject jsonObject = object.getJSONObject(i);
|
||||
|
||||
boolean isActive = jsonObject.getBoolean("isActive");
|
||||
|
||||
if (!isActive) {
|
||||
continue;
|
||||
}
|
||||
} catch (Exception e) {
|
||||
|
||||
String code = jsonObject.getString("code");
|
||||
|
||||
if (Objects.equals(code, userId)) {
|
||||
RequestorApproverResponse resp = new RequestorApproverResponse();
|
||||
resp.setVersion(jsonObject.getInteger("version"));
|
||||
resp.setCode(code);
|
||||
resp.setId(jsonObject.getString("id"));
|
||||
resp.setFirstName(jsonObject.getString("firstName"));
|
||||
resp.setLastName(jsonObject.getString("lastName"));
|
||||
|
||||
serviceResult.setData(resp);
|
||||
serviceResult.setSuccess(true);
|
||||
|
||||
return serviceResult;
|
||||
}
|
||||
}
|
||||
|
||||
if (Objects.isNull(serviceResult.getData())) {
|
||||
serviceResult.setSuccess(false);
|
||||
serviceResult.setMessage("Get requestor approver by userId failed");
|
||||
LogUtil.error(DaylightApiService.class, e.getMessage());
|
||||
serviceResult.setMessage("Requestor data is empty");
|
||||
}
|
||||
|
||||
return serviceResult;
|
||||
@@ -2085,7 +2149,7 @@ public class DaylightApiService {
|
||||
.ac_property_id(propertyId)
|
||||
.build();
|
||||
|
||||
DaylightReservationResponse daylightReservationByDlId = getDaylightReservationByDlId(reservationId, propertyId);
|
||||
DaylightReservationResponse daylightReservationByDlId = getDaylightReservationByDlId(reservationId, propertyId, false);
|
||||
Long version = daylightReservationByDlId.getVersion();
|
||||
|
||||
Map<String, Object> map = new HashMap<>();
|
||||
@@ -2273,9 +2337,11 @@ public class DaylightApiService {
|
||||
if (responseData.getStatusCode() >= 200 && responseData.getStatusCode() < 300) {
|
||||
response.setSuccess(true);
|
||||
response.setMessage("Set post success");
|
||||
log.info("Set post success");
|
||||
} else {
|
||||
response.setSuccess(false);
|
||||
response.setMessage("Set post failed");
|
||||
log.warn("Set post failed: {}", responseData.getResult());
|
||||
}
|
||||
|
||||
} catch (Exception e) {
|
||||
@@ -2343,7 +2409,7 @@ public class DaylightApiService {
|
||||
String dlReservationId = bookings.getDlReservationId();
|
||||
String url = "/api-gateway/booking/v1/reservations/" + dlReservationId + "/change-dates";
|
||||
|
||||
DaylightReservationResponse daylightReservationByDlId = getDaylightReservationByDlId(dlReservationId, dlPropertyId);
|
||||
DaylightReservationResponse daylightReservationByDlId = getDaylightReservationByDlId(dlReservationId, dlPropertyId, false);
|
||||
Long version = daylightReservationByDlId.getVersion();
|
||||
|
||||
Breakdown breakdown = new Breakdown();
|
||||
@@ -2398,6 +2464,24 @@ public class DaylightApiService {
|
||||
result.setData(bookings);
|
||||
} else if (submitResult.getStatusCode() == 202) {
|
||||
|
||||
String operationUrl = "";
|
||||
Header[] changeDateHeader = submitResult.getRespHeaders();
|
||||
for (Header header : changeDateHeader) {
|
||||
if (header.getName().equals("Location")) {
|
||||
operationUrl = header.getValue();
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
Boolean b = daylightCallOperationUrl(operationUrl, dlPropertyId);
|
||||
if (b) {
|
||||
result.setSuccess(true);
|
||||
result.setData(bookings);
|
||||
} else {
|
||||
result.setSuccess(false);
|
||||
result.setMessage("Change date failed, reservationId=" + dlReservationId);
|
||||
log.warn("Change date failed, reservationId={}", dlReservationId);
|
||||
}
|
||||
} else {
|
||||
JSONObject rootNode = JSON.parseObject(responseBody);
|
||||
String errorStr;
|
||||
|
||||
@@ -167,6 +167,7 @@ public class BookingController {
|
||||
@RequestBody GetOperaBookingRequest params) throws Exception {
|
||||
LoginUserInfo loginUser = SysCommon.parseUserFromToken(request);
|
||||
String conf = params.getConf();
|
||||
Boolean isRefresh = Boolean.TRUE.equals(params.getRefresh());
|
||||
|
||||
BaseApiResponse<List<BookingsView>> result = new BaseApiResponse<>();
|
||||
|
||||
@@ -177,7 +178,7 @@ public class BookingController {
|
||||
sysGroupPermissionService.checkGroupPermission(groupName, SysConstants.PERMISSION_APP_VIEW_BOOKING);
|
||||
|
||||
List<BookingsView> list;
|
||||
list = bookingService.getBookingByConfirmationNo(conf);
|
||||
list = bookingService.getBookingByConfirmationNo(conf,isRefresh);
|
||||
if(!list.isEmpty() && StringUtils.isNotEmpty(userId)) {
|
||||
BaseApiResponse<PlayerProfileEntry> findPlayerResult =
|
||||
playerService.findPlayerProfileByPlayerIdAndUserId(list.getFirst().getPlayerId(), userId);
|
||||
@@ -399,7 +400,9 @@ public class BookingController {
|
||||
processResult.setData(processResult.getData());
|
||||
}else {
|
||||
processResult.setSuccess(false);
|
||||
processResult.setMessage("Change MiscCharge Failed");
|
||||
// processResult.setMessage("Change MiscCharge Failed");
|
||||
processResult.setCode(serviceResult.getCode());
|
||||
processResult.setMessage(serviceResult.getMessage());
|
||||
}
|
||||
return processResult;
|
||||
}
|
||||
@@ -465,7 +468,6 @@ public class BookingController {
|
||||
String checkOutDate = bookingService.getSearchRecordCheckOutDate(currentDay);
|
||||
List<BookingDto> operaResult = new ArrayList<>();
|
||||
List<BookingDto> daylightResult = new ArrayList<>();
|
||||
boolean isLoadDaylightFromCache = sysBookingCacheService.isDaylightBookingCacheValid(playerId);
|
||||
String daylightProfileId = sysBookingCacheService.getDaylightProfileMappingFromCache(playerId);
|
||||
if(StringUtils.isBlank(daylightProfileId)){
|
||||
//去Daylight查ProfileId
|
||||
@@ -483,14 +485,9 @@ public class BookingController {
|
||||
LogUtil.warn(BookingService.class, "[recordSearch] Daylight profile lookup failed, message=" + profileResult.getMessage() + ", playerId=" + playerId);
|
||||
}
|
||||
}
|
||||
if(StringUtils.isNotBlank(daylightProfileId) && !isLoadDaylightFromCache){
|
||||
if(StringUtils.isNotBlank(daylightProfileId)){
|
||||
LogUtil.info(BookingService.class, "[recordSearch] Load Daylight booking by call API, playerId=" + playerId +" profile Id:"+daylightProfileId);
|
||||
daylightResult = daylightApiService.getBookingRecordByProfileId_Optimize(daylightProfileId, playerId);
|
||||
sysBookingCacheService.updateDaylightBookingCacheLog(playerId);
|
||||
}else if(isLoadDaylightFromCache){
|
||||
//-- 查找出user 在DB 里的所有daylight类型的 DB booking
|
||||
LogUtil.info(BookingService.class, "[recordSearch] Load Daylight booking from cache DB, playerId=" + playerId +" profile Id:"+daylightProfileId);
|
||||
daylightResult = bookingService.getSearchPlayerDaylightDbRecord(startDate, checkOutDate, playerId);
|
||||
}
|
||||
LogUtil.info(BookingService.class, "[recordSearch] getBookingsByNameID:");
|
||||
LogUtil.info(BookingController.class, "[recordSearch] getDaylightBookings resultSize:" + daylightResult.size() + " spendTime:" + (System.currentTimeMillis() - stepStartTime) + "ms");
|
||||
@@ -512,21 +509,17 @@ public class BookingController {
|
||||
|
||||
LogUtil.info(BookingController.class, "[recordSearch] getBookingsByNameID resultSize:" + operaResult.size() + " spendTime:" + (System.currentTimeMillis() - stepStartTime) + "ms");
|
||||
if (!daylightResult.isEmpty()) {
|
||||
if(!isLoadDaylightFromCache){
|
||||
//将Daylight Result 合并至DB
|
||||
LogUtil.info(BookingService.class,"[recordSearch] before mergeDaylightRecordFromDB_Optimize, playerId="
|
||||
+ playerId + ", daylightResult.size=" + daylightResult.size());
|
||||
stepStartTime = System.currentTimeMillis();
|
||||
List<BookingDto> dbDaylightResults = bookingService.mergeDaylightRecordFromDB_Optimize(daylightResult,memberInfo,userId);
|
||||
LogUtil.info(BookingController.class, "[recordSearch] mergeDaylightDatabaseInfo resultSize:" + dbDaylightResults.size() + " spendTime:" + (System.currentTimeMillis() - stepStartTime) + "ms");
|
||||
stepStartTime = System.currentTimeMillis();
|
||||
bookingService.syncDaylightMergeBookingToDbAndPopulateIds_Optimize(dbDaylightResults);
|
||||
LogUtil.info(BookingController.class, "[recordSearch] syncDaylightDatabase resultSize:" + dbDaylightResults.size() + " spendTime:" + (System.currentTimeMillis() - stepStartTime) + "ms");
|
||||
dbDaylightResults.removeIf(item -> "CANCELED".equalsIgnoreCase(item.getLastOperaStatus()));
|
||||
allPropertiesResults.addAll(dbDaylightResults);
|
||||
} else{
|
||||
allPropertiesResults.addAll(daylightResult);
|
||||
}
|
||||
//将Daylight Result 合并至DB
|
||||
LogUtil.info(BookingService.class,"[recordSearch] before mergeDaylightRecordFromDB_Optimize, playerId="
|
||||
+ playerId + ", daylightResult.size=" + daylightResult.size());
|
||||
stepStartTime = System.currentTimeMillis();
|
||||
List<BookingDto> dbDaylightResults = bookingService.mergeDaylightRecordFromDB_Optimize(daylightResult,memberInfo,userId);
|
||||
LogUtil.info(BookingController.class, "[recordSearch] mergeDaylightDatabaseInfo resultSize:" + dbDaylightResults.size() + " spendTime:" + (System.currentTimeMillis() - stepStartTime) + "ms");
|
||||
stepStartTime = System.currentTimeMillis();
|
||||
bookingService.syncDaylightMergeBookingToDbAndPopulateIds_Optimize(dbDaylightResults);
|
||||
LogUtil.info(BookingController.class, "[recordSearch] syncDaylightDatabase resultSize:" + dbDaylightResults.size() + " spendTime:" + (System.currentTimeMillis() - stepStartTime) + "ms");
|
||||
dbDaylightResults.removeIf(item -> "CANCELED".equalsIgnoreCase(item.getLastOperaStatus()));
|
||||
allPropertiesResults.addAll(dbDaylightResults);
|
||||
} else {
|
||||
LogUtil.warn(BookingService.class,"[recordSearch] daylightResult is empty, skipping Daylight merge");
|
||||
}
|
||||
@@ -724,7 +717,7 @@ public class BookingController {
|
||||
return allPropertiesResults;
|
||||
}
|
||||
|
||||
@VerifyPermission(permissionId = {"00501_01", "00401_01"})
|
||||
@VerifyPermission(permissionId = {"00401_01", "00601_01"})
|
||||
@RequestMapping(value = "/web/booking/get_page", produces = "application/json;charset=UTF-8",consumes = MediaType.APPLICATION_JSON_VALUE)
|
||||
public ResponseEntity<BaseApiResponse<DataTableResult<BookingsView>>> getBookingByPage(
|
||||
HttpServletRequest request,
|
||||
|
||||
@@ -5,4 +5,5 @@ import lombok.Data;
|
||||
@Data
|
||||
public class GetOperaBookingRequest {
|
||||
private String conf;
|
||||
private Boolean refresh;
|
||||
}
|
||||
|
||||
@@ -98,7 +98,7 @@ public interface BookingViewDao extends JpaRepository<BookingsView, Long> {
|
||||
@Query(value="update bookings set last_opera_status='DUE_IN' where cast(checkin_date as date)=cast(getdate() as date) "
|
||||
+ " and CAST(GETDATE() AS TIME) <'12:00:00'"
|
||||
+ " and cast(checkout_date as date)>cast(getdate() as date) "
|
||||
+ " and (last_opera_status is null or last_opera_status='RESERVED') and approve_status='N'",nativeQuery=true)
|
||||
+ " and (last_opera_status is null or last_opera_status='RESERVED') and approve_status='N' and category != 'DAYLIGHT'",nativeQuery=true)
|
||||
void changeDueIn();
|
||||
|
||||
@Transactional
|
||||
@@ -106,25 +106,25 @@ public interface BookingViewDao extends JpaRepository<BookingsView, Long> {
|
||||
@Query(value="update bookings set last_opera_status='CHECKED_IN' where cast(checkin_date as date)=cast(getdate() as date) "
|
||||
+ " and CAST(GETDATE() AS TIME) >= '12:00:00'"
|
||||
+ " and cast(checkout_date as date)>cast(getdate() as date) "
|
||||
+ " and (last_opera_status is null or last_opera_status='DUE_IN' or last_opera_status='RESERVED') and approve_status='N'",nativeQuery=true)
|
||||
+ " and (last_opera_status is null or last_opera_status='DUE_IN' or last_opera_status='RESERVED') and approve_status='N' and category != 'DAYLIGHT'",nativeQuery=true)
|
||||
void changeCheckedIn();
|
||||
|
||||
@Transactional
|
||||
@Modifying
|
||||
@Query(value="update bookings set last_opera_status='DUE_OUT' where cast(checkout_date as date)=cast(getdate() as date)"
|
||||
+ " and (last_opera_status is null or last_opera_status='CHECKED_IN') and approve_status='N'",nativeQuery=true)
|
||||
+ " and (last_opera_status is null or last_opera_status='CHECKED_IN') and approve_status='N' and category != 'DAYLIGHT'",nativeQuery=true)
|
||||
void changeDueOut();
|
||||
|
||||
@Transactional
|
||||
@Modifying
|
||||
@Query(value="update bookings set last_opera_status='CHECKED_OUT' where cast(checkout_date as date)<cast(getdate() as date)"
|
||||
+ " and (last_opera_status is null or last_opera_status='DUE_OUT') and approve_status='N'",nativeQuery=true)
|
||||
+ " and (last_opera_status is null or last_opera_status='DUE_OUT') and approve_status='N' and category != 'DAYLIGHT'",nativeQuery=true)
|
||||
void changeCheckedOut();
|
||||
|
||||
@Transactional
|
||||
@Modifying
|
||||
@Query(value="update bookings set last_opera_status='NO_SHOW' where cast(checkout_date as date)<cast(getdate() as date)"
|
||||
+ " and last_opera_status!='CHECKED_OUT' and approve_status='N'",nativeQuery=true)
|
||||
+ " and last_opera_status!='CHECKED_OUT' and approve_status='N' and category != 'DAYLIGHT'",nativeQuery=true)
|
||||
void changeNoShow();
|
||||
|
||||
@Query(value="select * from view_booking where property_category='OPERA' and approve_status='W'",nativeQuery=true)
|
||||
|
||||
@@ -56,10 +56,12 @@ import com.mgm.mcrm.common.dtos.mgm_api.ApproverRecordResult;
|
||||
import com.mgm.mcrm.common.dtos.mgm_api.ApproverResult;
|
||||
import com.mgm.mcrm.common.dtos.mgm_api.PlayerProfileEntry;
|
||||
import com.mgm.mcrm.common.dtos.mgm_api.UserInfoApiRecord;
|
||||
import com.mgm.mcrm.common.enums.EnumBookingStatus;
|
||||
import com.mgm.mcrm.common.jms.BookingControlMsgSender;
|
||||
import com.mgm.mcrm.common.utils.DaoUtil;
|
||||
import com.mgm.mcrm.common.utils.DateTimeUtil;
|
||||
import com.mgm.mcrm.common.utils.LogUtil;
|
||||
import com.mgm.mcrm.logging.services.SysBookingCacheService;
|
||||
import com.mgm.mcrm.logging.services.SysLogBookingService;
|
||||
import com.mgm.mcrm.notification.models.Email;
|
||||
import com.mgm.mcrm.notification.repositories.EmailDao;
|
||||
@@ -74,6 +76,7 @@ import jakarta.persistence.criteria.CriteriaQuery;
|
||||
import jakarta.persistence.criteria.Predicate;
|
||||
import jakarta.persistence.criteria.Root;
|
||||
import jakarta.servlet.http.HttpServletRequest;
|
||||
import jakarta.validation.constraints.NotNull;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.apache.commons.collections4.CollectionUtils;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
@@ -176,6 +179,8 @@ public class BookingService {
|
||||
private CfgCompRuleDao cfgCompRuleDao;
|
||||
@Resource
|
||||
private SendEmailService sendEmailService;
|
||||
@Resource
|
||||
private SysBookingCacheService sysBookingCacheService;
|
||||
|
||||
@Autowired
|
||||
private BookingMapper bookingMapper;
|
||||
@@ -1325,6 +1330,21 @@ public class BookingService {
|
||||
|
||||
String sharerId = sharer.getString("playerId");
|
||||
|
||||
String daylightProfileId = sysBookingCacheService.getDaylightProfileMappingFromCache(sharerId);
|
||||
|
||||
if (StringUtils.isNotBlank(daylightProfileId)) {
|
||||
|
||||
AccompanyingGuestDTO accompanyingGuest = new AccompanyingGuestDTO();
|
||||
|
||||
accompanyingGuest.setProfileId(daylightProfileId);
|
||||
|
||||
dlSharers.add(accompanyingGuest);
|
||||
|
||||
continue;
|
||||
}
|
||||
|
||||
// 走到这里说明 这个sharer 没有在本地的缓存,需要去daylight那边查
|
||||
|
||||
BaseApiResponse<List<ProfileDetailResponse>> serviceResult = dlService.dayLightGetProfileByPlayerId(sharerId);
|
||||
List<ProfileDetailResponse> returnData = serviceResult.getData();
|
||||
|
||||
@@ -1504,12 +1524,16 @@ public class BookingService {
|
||||
String confirmationNumber = createResponse.getData().getString("confirmationNumber");
|
||||
|
||||
DaylightReservationResponse daylightReservationByDlId =
|
||||
dlService.getDaylightReservationByDlId(reservationId, property.getDlPropertyId());
|
||||
dlService.getDaylightReservationByDlId(reservationId, property.getDlPropertyId(), false);
|
||||
|
||||
booking.setDlAccountId(daylightReservationByDlId.getAccountId());
|
||||
booking.setDlReservationId(reservationId);
|
||||
booking.setConfirmationNo(confirmationNumber);
|
||||
booking.setLastOperaStatus("RESERVED");
|
||||
|
||||
String description = daylightReservationByDlId.getStatusCode().getDescription();
|
||||
String statusByDaylightStatus = EnumBookingStatus.getStatusByDaylightStatus(description);
|
||||
|
||||
booking.setLastOperaStatus(statusByDaylightStatus);
|
||||
booking.setApproveStatus("N");
|
||||
//
|
||||
bookingDao.save(booking);
|
||||
@@ -1537,7 +1561,7 @@ public class BookingService {
|
||||
}
|
||||
}
|
||||
|
||||
dlService.createDaylightCompRule(
|
||||
BaseApiResponse<List<String>> daylightCompRule = dlService.createDaylightCompRule(
|
||||
daylightReservationByDlId.getAccountId(),
|
||||
daylightReservationByDlId.getProfileId(),
|
||||
property.getDlPropertyId(),
|
||||
@@ -1547,24 +1571,11 @@ public class BookingService {
|
||||
checkoutDateStr,
|
||||
daylightViewList,
|
||||
exceptionDaylightViewList,
|
||||
booking.getMiscCharge()
|
||||
booking.getMiscCharge(),
|
||||
true
|
||||
);
|
||||
|
||||
//1.通过AC Id 拿到Comp rule ids 拿到compRuleIds 之后只需要复制给compRuleIds即可,后面逻辑已经写完
|
||||
List<String> compRuleIds = new ArrayList<>();
|
||||
BaseApiResponse<JSONArray> compRuleListResponse =
|
||||
dlService.daylightGetCompRulesByAccount(property.getDlPropertyId(), daylightReservationByDlId.getAccountId());
|
||||
|
||||
if (compRuleListResponse.isSuccess()) {
|
||||
|
||||
JSONArray compRules = compRuleListResponse.getData();
|
||||
|
||||
for (int i = 0; i < compRules.size(); i++) {
|
||||
JSONObject compRule = compRules.getJSONObject(i);
|
||||
|
||||
compRuleIds.add(compRule.getString("id"));
|
||||
}
|
||||
}
|
||||
List<String> compRuleIds = daylightCompRule.getData();
|
||||
|
||||
//2.循环Comp rule ids 插入每一条comp rule
|
||||
for (String compRuleId :compRuleIds){
|
||||
@@ -1632,6 +1643,19 @@ public class BookingService {
|
||||
processResult.setMessage("Change date fail");
|
||||
log.warn("Change date fail");
|
||||
}
|
||||
} else if ("SET_POST".equalsIgnoreCase(type)) {
|
||||
BaseApiResponse<JSONObject> createResponse =
|
||||
dlService.daylightUpsertReservationNew(reservationRequestDTO, property.getDlPropertyId());
|
||||
|
||||
if (createResponse.isSuccess()) {
|
||||
processResult.setSuccess(true);
|
||||
processResult.setMessage("Set post success");
|
||||
log.info("Set post success");
|
||||
} else {
|
||||
processResult.setSuccess(false);
|
||||
processResult.setMessage("Set post fail");
|
||||
log.warn("Set post fail");
|
||||
}
|
||||
}
|
||||
|
||||
return processResult;
|
||||
@@ -2730,7 +2754,7 @@ public class BookingService {
|
||||
}
|
||||
|
||||
DaylightReservationResponse daylightReservationByDlId =
|
||||
dlService.getDaylightReservationByDlId(booking.getDlReservationId(), property.getDlPropertyId());
|
||||
dlService.getDaylightReservationByDlId(booking.getDlReservationId(), property.getDlPropertyId(), false);
|
||||
|
||||
BaseApiResponse<JSONArray> compRuleListResponse = dlService.daylightGetCompRulesByAccount(property.getDlPropertyId(),daylightReservationByDlId.getAccountId());
|
||||
if(compRuleListResponse.isSuccess()&&daylightViewRoomOnly!=null&&userId!=null){
|
||||
@@ -2756,6 +2780,10 @@ public class BookingService {
|
||||
}
|
||||
}
|
||||
|
||||
if (!isExtend && result.isSuccess()) {
|
||||
booking.setCheckinDate(checkinDate);
|
||||
newBooking.setCheckinDate(checkinDate);
|
||||
}
|
||||
bookingDao.save(booking);
|
||||
|
||||
if (result.isSuccess()) {
|
||||
@@ -3544,8 +3572,7 @@ public class BookingService {
|
||||
return list;
|
||||
}
|
||||
|
||||
public List<BookingsView> getBookingByConfirmationNo(String conf) throws Exception {
|
||||
|
||||
public List<BookingsView> getBookingByConfirmationNo(String conf,Boolean isRefresh) throws Exception {
|
||||
List<BookingsView> list = bookingViewDao.findBookingByConfirmationNo(conf);
|
||||
|
||||
if (CollectionUtils.isEmpty(list)) {
|
||||
@@ -3553,13 +3580,17 @@ public class BookingService {
|
||||
}
|
||||
|
||||
if ("DAYLIGHT".equalsIgnoreCase(list.getFirst().getPropertyCategory())) {
|
||||
return getBookingDaylight(list);
|
||||
if(isRefresh){
|
||||
return getBookingDaylight(list);
|
||||
}else{
|
||||
return getBookingDaylightFromDB(list);
|
||||
}
|
||||
}
|
||||
|
||||
return getBookingOperaOther(list, conf);
|
||||
}
|
||||
|
||||
private List<BookingsView> getBookingOperaOther(List<BookingsView> list, String conf) {
|
||||
private List<BookingsView> getBookingOperaOther(List<BookingsView> list, String conf) throws Exception {
|
||||
List<BookingsView> operaList = operaDBService.getBookingsByConfirmationNo(conf);
|
||||
|
||||
for(int i=0;i<list.size();i++) {
|
||||
@@ -3639,6 +3670,46 @@ public class BookingService {
|
||||
// }
|
||||
// }
|
||||
|
||||
boolean hasShare = false;
|
||||
List shareConfList = new ArrayList();
|
||||
JSONObject fetchResponse = new JSONObject();
|
||||
FetchBookingRequest owsReq = new FetchBookingRequest();
|
||||
owsReq.setConfirmationNo(booking.getConfirmationNo());
|
||||
fetchResponse = operaService.fetchBooking(owsReq);
|
||||
if(fetchResponse.containsKey("shareConfList")) {
|
||||
shareConfList = (List) fetchResponse.get("shareConfList");
|
||||
hasShare = true;
|
||||
}
|
||||
if (shareConfList!=null && hasShare) {
|
||||
for (Object o : shareConfList) {
|
||||
String shareConfirmationNoFromOws = String.valueOf(o);
|
||||
if (!StringUtils.isEmpty(shareConfirmationNoFromOws)) {
|
||||
List<BookingsView> shareOperaList = operaDBService.getBookingsByConfirmationNo(shareConfirmationNoFromOws);
|
||||
if (shareOperaList != null && shareOperaList.size() > 0) {
|
||||
BookingsView sharerOperaBooking = shareOperaList.get(0);
|
||||
String shareProfileExpDate = sharerOperaBooking.getProfieExpDate();
|
||||
LogUtil.info(BookingService.class,
|
||||
"[getBookingByConfirmationNo] shareProfileExpDate " + sharerOperaBooking.getProfieExpDate());
|
||||
if (StringUtils.isEmpty(shareProfileExpDate)) {
|
||||
expDate = shareProfileExpDate;
|
||||
} else if (StringUtils.contains(shareProfileExpDate, "FORM")) {
|
||||
|
||||
} else {
|
||||
if (!StringUtils.isEmpty(expDate) && !StringUtils.contains(expDate, "FORM")) {
|
||||
Date edateTime = DateTimeUtil.getDateFromString(expDate, "yyyy-MM-dd");
|
||||
Date proShareEdateTime = DateTimeUtil.getDateFromString(shareProfileExpDate, "yyyy-MM-dd");
|
||||
if (proShareEdateTime.getTime() < edateTime.getTime())
|
||||
expDate = shareProfileExpDate;
|
||||
} else if (StringUtils.contains(expDate, "FORM")) {
|
||||
expDate = shareProfileExpDate;
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if(booking.getSharer()!=null && !booking.getSharer().equals("") && !booking.getSharer().equals("[]")) {
|
||||
booking.setSharerList(JSONArray.parseArray(booking.getSharer()));
|
||||
|
||||
@@ -3706,28 +3777,25 @@ public class BookingService {
|
||||
return list;
|
||||
}
|
||||
|
||||
String dlReservationId = list.stream()
|
||||
.map(BookingsView::getDlReservationId)
|
||||
.filter(Objects::nonNull)
|
||||
BookingsView dlView = list.stream()
|
||||
.filter(view -> view.getDlReservationId() != null)
|
||||
.findFirst()
|
||||
.orElse(null);
|
||||
|
||||
propertyCache.refresh();
|
||||
String dlReservationId = dlView == null ? null : dlView.getDlReservationId();
|
||||
|
||||
DaylightReservationResponse daylightResultBooking = null;
|
||||
|
||||
String dlPropertyId = null;
|
||||
|
||||
if (dlReservationId != null) {
|
||||
for (CfgProperties cfgProperties : propertyCache.getProperties()) {
|
||||
CfgProperties cfgProperties = propertyDao.findById(dlView.getPropertyId()).orElse(null);
|
||||
if (cfgProperties != null) {
|
||||
dlPropertyId = cfgProperties.getDlPropertyId();
|
||||
daylightResultBooking = dlService.getDaylightReservationByDlId(
|
||||
dlReservationId,
|
||||
cfgProperties.getDlPropertyId()
|
||||
cfgProperties.getDlPropertyId(),
|
||||
false
|
||||
);
|
||||
if (daylightResultBooking != null) {
|
||||
dlPropertyId = cfgProperties.getDlPropertyId();
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -3736,14 +3804,14 @@ public class BookingService {
|
||||
}
|
||||
|
||||
if (CollectionUtils.isEmpty(daylightResultBooking.getExternalIds())) {
|
||||
String dlExternalNo = "UP2-" + UUID.randomUUID().toString().replace("-", "");
|
||||
// String dlExternalNo = "UP2-" + UUID.randomUUID().toString().replace("-", "");
|
||||
|
||||
dlService.daylightSetExternalNo(
|
||||
dlPropertyId,
|
||||
dlReservationId,
|
||||
dlExternalNo,
|
||||
daylightResultBooking.getVersion()
|
||||
);
|
||||
// dlService.daylightSetExternalNo(
|
||||
// dlPropertyId,
|
||||
// dlReservationId,
|
||||
// dlExternalNo,
|
||||
// daylightResultBooking.getVersion()
|
||||
// );
|
||||
}
|
||||
|
||||
for (BookingsView view : list) {
|
||||
@@ -3795,9 +3863,8 @@ public class BookingService {
|
||||
}
|
||||
}
|
||||
|
||||
if (StringUtils.isNotBlank(expDate)
|
||||
&& hasSharer
|
||||
&& CollectionUtils.isNotEmpty(view.getDlSharerIds())) {
|
||||
if (StringUtils.isNotBlank(expDate)&&
|
||||
CollectionUtils.isNotEmpty(view.getDlSharerIds())) {
|
||||
for (String dlSharerId : view.getDlSharerIds()) {
|
||||
ProfileDetailResponse profileDetailResponse
|
||||
= dlService.dayLightGetProfileByProfileId(dlSharerId);
|
||||
@@ -3858,6 +3925,65 @@ public class BookingService {
|
||||
return list;
|
||||
}
|
||||
|
||||
private List<BookingsView> getBookingDaylightFromDB(List<BookingsView> list) {
|
||||
if (list == null || list.isEmpty()) {
|
||||
return list;
|
||||
}
|
||||
|
||||
for (BookingsView view : list) {
|
||||
if ("FC".equals(view.getApproveStatus()) && view.getConfirmationNo() != null) {
|
||||
view.setApproveStatus("N");
|
||||
}
|
||||
|
||||
if (StringUtils.isNotBlank(view.getFeatureCode())) {
|
||||
String specialName = Arrays.stream(view.getFeatureCode().split(","))
|
||||
.filter(StringUtils::isNotBlank)
|
||||
.map(roomFeatureDao::getByDaylightCode)
|
||||
.filter(Objects::nonNull)
|
||||
.map(CfgRoomFeatures::getDescription)
|
||||
.collect(Collectors.joining(", "));
|
||||
view.setSpecialName(specialName);
|
||||
}
|
||||
|
||||
boolean hasSharer = StringUtils.isNotBlank(view.getSharer())
|
||||
&& !"[]".equals(view.getSharer());
|
||||
if (hasSharer) {
|
||||
JSONArray sharerList = JSONArray.parseArray(view.getSharer());
|
||||
view.setSharerList(sharerList);
|
||||
}
|
||||
|
||||
int numOfNight = Integer.parseInt(
|
||||
DateTimeUtil.getDiffDate(
|
||||
view.getCheckinDate(),
|
||||
view.getCheckoutDate(),
|
||||
"day"
|
||||
)
|
||||
);
|
||||
|
||||
view.setNumOfNight(numOfNight);
|
||||
|
||||
ArrayList<String> dates = new ArrayList<>();
|
||||
for (int j = 0; j <= numOfNight; j++) {
|
||||
dates.add(DateTimeUtil.getDateByFormat(
|
||||
DateTimeUtil.addDay(view.getCheckinDate(), j),
|
||||
"yyyy-MM-dd"
|
||||
));
|
||||
}
|
||||
|
||||
JSONObject dateObj = new JSONObject();
|
||||
dateObj.put("date", dates);
|
||||
dateObj.put("numOfNight", numOfNight);
|
||||
dateObj.put("numOfRoom", 1);
|
||||
dateObj.put("checked", true);
|
||||
|
||||
ArrayList<JSONObject> dateList = new ArrayList<>();
|
||||
dateList.add(dateObj);
|
||||
view.setDateList(dateList);
|
||||
}
|
||||
|
||||
return list;
|
||||
}
|
||||
|
||||
public List<BookingsView> getBookingById(long id) {
|
||||
|
||||
List<BookingsView> list = bookingViewDao.findBookingById(id);
|
||||
@@ -5669,6 +5795,7 @@ public class BookingService {
|
||||
view.setDlAccountId(booking.getDlAccountId());
|
||||
view.setDlReservationId(booking.getDlReservationId());
|
||||
view.setDlExternalNo(booking.getDlExternalNo());
|
||||
view.setApproveStatus(booking.getApproveStatus());
|
||||
|
||||
if (Objects.isNull(properties.get(booking.getPropertyId()))) {
|
||||
propertyDao.findById(booking.getPropertyId()).ifPresent(
|
||||
@@ -6231,19 +6358,25 @@ public class BookingService {
|
||||
checkoutDate, nowStr));
|
||||
}
|
||||
|
||||
public BaseApiResponse<Bookings> changeMiscCharge(Long bookingId, String miscCharge, String userId) throws Exception {
|
||||
public BaseApiResponse<Bookings> changeMiscCharge(Long bookingId, @NotNull String miscCharge, String userId) throws Exception {
|
||||
BaseApiResponse<Bookings> processResult = new BaseApiResponse<>();
|
||||
|
||||
// 1. 基础数据获取与准备
|
||||
Bookings bookings = bookingDao.findById(bookingId).orElse(null);
|
||||
|
||||
boolean needSetPost = StringUtils.isNotEmpty(miscCharge) && StringUtils.isEmpty(bookings.getMiscCharge());
|
||||
|
||||
if (bookings == null) {
|
||||
processResult.setMessage("Misc charge not found");
|
||||
processResult.setSuccess(false);
|
||||
return processResult;
|
||||
}
|
||||
|
||||
boolean needSetPost = StringUtils.isEmpty(bookings.getMiscCharge());
|
||||
if (bookings.getBookingTypeId() == null) {
|
||||
processResult.setMessage("Booking type id not found");
|
||||
processResult.setSuccess(false);
|
||||
return processResult;
|
||||
}
|
||||
|
||||
CfgBookingTypes cfgBookingTypes = bookingTypeDao.findById(bookings.getBookingTypeId()).orElse(null);
|
||||
String bookingTypeName = cfgBookingTypes.getName();
|
||||
@@ -6266,6 +6399,30 @@ public class BookingService {
|
||||
String comment = response.getData().getContent();
|
||||
comment = comment.replaceAll("(?i)<br\\s*/?>", "\n");
|
||||
bookings.setOperaComment(comment);
|
||||
|
||||
Matcher miscChargeMatcher = Pattern
|
||||
.compile("(?:\\$|$)\\s*([0-9]+(?:\\.[0-9]+)?)", Pattern.CASE_INSENSITIVE)
|
||||
.matcher(comment);
|
||||
if (miscChargeMatcher.find()) {
|
||||
String miscChargeFromDaylight = miscChargeMatcher.group(1);
|
||||
|
||||
if ("CHECKED_IN".equalsIgnoreCase(bookings.getLastOperaStatus())) {
|
||||
|
||||
int newMisc = Integer.parseInt(miscCharge);
|
||||
int fromDaylight = Integer.parseInt(miscChargeFromDaylight);
|
||||
|
||||
if (fromDaylight > newMisc) {
|
||||
|
||||
bookings.setMiscCharge(miscChargeFromDaylight);
|
||||
bookingDao.save(bookings);
|
||||
|
||||
processResult.setMessage("Amount cannot be less than original:" + miscChargeFromDaylight);
|
||||
processResult.setSuccess(false);
|
||||
processResult.setLogMessage("Amount cannot be less than original:" + miscChargeFromDaylight);
|
||||
return processResult;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
ReservationNoteResponse noteResponse = response.getData();
|
||||
@@ -6305,8 +6462,8 @@ public class BookingService {
|
||||
Date checkOutDate = bookings.getCheckoutDate();
|
||||
String checkinDateStr = DateTimeUtil.getDateByFormat(checkInDate, "yyyy-MM-dd");
|
||||
String checkoutDateStr = DateTimeUtil.getDateByFormat(checkOutDate, "yyyy-MM-dd");
|
||||
DaylightReservationResponse daylightReservationByDlId =
|
||||
dlService.getDaylightReservationByDlId(bookings.getDlReservationId(), property.getDlPropertyId());
|
||||
// DaylightReservationResponse daylightReservationByDlId =
|
||||
// dlService.getDaylightReservationByDlId(bookings.getDlReservationId(), property.getDlPropertyId());
|
||||
List<CfgExceptionDaylightView> exceptionDaylightViewList = exceptionDaylightViewDao.findByUserPropertyBookingTypeRoomType(
|
||||
bookings.getCreatedBy(), bookings.getPropertyId(), bookings.getBookingTypeId(), bookings.getRoomTypeId()
|
||||
);
|
||||
@@ -6319,8 +6476,8 @@ public class BookingService {
|
||||
|
||||
if (CollectionUtils.isNotEmpty(exceptionDaylightViewList) || CollectionUtils.isNotEmpty(daylightViewList)) {
|
||||
dlService.createDaylightCompRule(
|
||||
daylightReservationByDlId.getAccountId(),
|
||||
daylightReservationByDlId.getProfileId(),
|
||||
bookings.getDlAccountId(),
|
||||
bookings.getDlProfileId(),
|
||||
property.getDlPropertyId(),
|
||||
userId,
|
||||
bookings.getRoom(),
|
||||
@@ -6914,10 +7071,23 @@ public class BookingService {
|
||||
String playerId) {
|
||||
List<BookingsView> bookingsViews = bookingViewDao.findDaylightDbRecord(playerId, checkinDate,checkoutDate);
|
||||
List<BookingDto> bookingDtos = bookingMapper.viewToBookingDtoList(bookingsViews);
|
||||
|
||||
Map<Long, CfgProperties> propertiesMap = new HashMap<>();
|
||||
|
||||
Date currentTime = new Date();
|
||||
for(BookingDto booking:bookingDtos){
|
||||
|
||||
Long propertyId = booking.getPropertyId();
|
||||
|
||||
if (!propertiesMap.containsKey(propertyId)) {
|
||||
propertyDao.findById(propertyId).ifPresent(byId -> propertiesMap.put(propertyId, byId));
|
||||
}
|
||||
|
||||
booking.setDataTime(currentTime);
|
||||
}
|
||||
|
||||
bookingDtos.removeIf(item -> item.getPropertyId() != null && Objects.equals(propertiesMap.get(item.getPropertyId()).getDisplayType(), 0));
|
||||
|
||||
return bookingDtos;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -441,7 +441,7 @@ public class WaitlistBookingService {
|
||||
email.setCreatedAt(creatdDate);
|
||||
email.setCreatedBy(originBooking.getCreatedBy());
|
||||
|
||||
email = sendEmailService.sendApprovalExtendEmail(originBooking, originBookingView,email,userId,userName,bookingView,isOtherOverBook,emailAddress.getKeyValues());
|
||||
email = sendEmailService.sendApprovalExtendEmail(originBooking, originBookingView,email,userId,userName,bookingView,false,emailAddress.getKeyValues());
|
||||
if(email.getStatus()==1) {
|
||||
emailDao.save(email);
|
||||
}
|
||||
|
||||
@@ -15,7 +15,11 @@ public enum EumnApprovalStatus {
|
||||
WReject("Reject","WR"),
|
||||
WApproved("Approved","WA"),
|
||||
WReserved("Reserved","WF"),
|
||||
WCancelled("Cancelled","WC");
|
||||
WCancelled("Cancelled","WC"),
|
||||
AApproval("Approved","AA"),
|
||||
ACancelled("Cancelled","AC"),
|
||||
AReject("Reject","AR"),
|
||||
APending("Pending","AP");
|
||||
|
||||
private String key;
|
||||
private String value;
|
||||
|
||||
@@ -2,6 +2,8 @@ package com.mgm.mcrm.common.services;
|
||||
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import com.google.gson.Gson;
|
||||
import com.mgm.mcrm.basesetting.property.models.CfgProperties;
|
||||
import com.mgm.mcrm.basesetting.property.repositories.PropertyDao;
|
||||
import com.mgm.mcrm.booking.dtos.search.DateRange;
|
||||
import com.mgm.mcrm.common.constants.SysCommon;
|
||||
import com.mgm.mcrm.common.dtos.config.ApiGatewaySetting;
|
||||
@@ -49,6 +51,20 @@ public class MGMEsbApiService {
|
||||
@Autowired
|
||||
private ApiGatewaySetting apiGatewaySetting;
|
||||
|
||||
@Autowired
|
||||
private PropertyDao propertyDao;
|
||||
|
||||
/**
|
||||
* 根据 property 解析 ESB 调用类型:DAYLIGHT 属性返回 1,其他返回 0
|
||||
*/
|
||||
private int resolveTypeByProperty(String property) {
|
||||
if (StringUtils.isBlank(property)) {
|
||||
return 0;
|
||||
}
|
||||
CfgProperties properties = propertyDao.queryByName(property);
|
||||
return (properties != null && "DAYLIGHT".equalsIgnoreCase(properties.getCategory())) ? 1 : 0;
|
||||
}
|
||||
|
||||
|
||||
public HttpResponseResult invokeRequestRoomCalendar(
|
||||
String playerId,
|
||||
@@ -125,7 +141,7 @@ public class MGMEsbApiService {
|
||||
requestObj.put("roomCategory", roomCate);
|
||||
requestObj.put("startDate", dates.getFirst());
|
||||
requestObj.put("endDate", dates.getLast());
|
||||
result = this.invokeESBAPI(ESB_MCRM_API_TYPE, API_CHECK_PLAYER_TPD, requestObj, "GET", requestHeader, 1);
|
||||
result = this.invokeESBAPI(ESB_MCRM_API_TYPE, API_CHECK_PLAYER_TPD, requestObj, "GET", requestHeader, resolveTypeByProperty(property));
|
||||
return result;
|
||||
}
|
||||
|
||||
@@ -142,7 +158,7 @@ public class MGMEsbApiService {
|
||||
requestObj.put("UserId", userId);
|
||||
|
||||
|
||||
result = this.invokeESBAPI(ESB_MCRM_API_TYPE, API_GET_APPROVER, requestObj, "POST", requestHeader, 1);
|
||||
result = this.invokeESBAPI(ESB_MCRM_API_TYPE, API_GET_APPROVER, requestObj, "POST", requestHeader, resolveTypeByProperty(property));
|
||||
return result;
|
||||
}
|
||||
|
||||
@@ -242,7 +258,7 @@ public class MGMEsbApiService {
|
||||
requestObj.put("BookingType", bookingType);
|
||||
requestObj.put("Property", property);
|
||||
requestObj.put("DateRange", dateRange);
|
||||
result = this.invokeESBAPI(ESB_MCRM_API_TYPE, API_CHECK_SECOND_ROOM_TPD, requestObj, "POST", requestHeader);
|
||||
result = this.invokeESBAPI(ESB_MCRM_API_TYPE, API_CHECK_SECOND_ROOM_TPD, requestObj, "POST", requestHeader, resolveTypeByProperty(property));
|
||||
return result;
|
||||
}
|
||||
|
||||
|
||||
@@ -127,6 +127,14 @@ public class DateTimeUtil {
|
||||
Date newTime = ca.getTime();
|
||||
return newTime;
|
||||
}
|
||||
|
||||
public static String addDay(Date currdate, Integer days, String strFormat) {
|
||||
if (currdate == null || days == null) {
|
||||
return null;
|
||||
}
|
||||
return getDateByFormat(addDay(currdate, days), strFormat);
|
||||
}
|
||||
|
||||
public static Date addMonth(Date currdate,Integer months) {
|
||||
Calendar ca = Calendar.getInstance();
|
||||
ca.setTime(currdate);
|
||||
|
||||
@@ -1,6 +1,5 @@
|
||||
package com.mgm.mcrm.logging.repositories;
|
||||
|
||||
import com.mgm.mcrm.logging.models.SysBookingCacheLog;
|
||||
import com.mgm.mcrm.logging.models.SysBookingProfileMapping;
|
||||
import org.springframework.data.jpa.repository.JpaRepository;
|
||||
|
||||
|
||||
@@ -137,8 +137,8 @@ public class TodoController {
|
||||
String userId = loginUser.getLoginId();
|
||||
String groupName = loginUser.getGroupName();
|
||||
//--get group permissions
|
||||
boolean cancelBooking = true;
|
||||
List<SysRouterPermission> userPermissions = new ArrayList<SysRouterPermission>();
|
||||
boolean cancelBooking = false;
|
||||
List<SysRouterPermission> userPermissions;
|
||||
userPermissions = sysGroupPermissionService.getRouterPermissionsByGroupName(groupName);
|
||||
if(userPermissions!=null && !userPermissions.isEmpty()) {
|
||||
for(SysRouterPermission per:userPermissions) {
|
||||
|
||||
@@ -898,8 +898,14 @@ public class TodoService {
|
||||
errors = modifyBookingResponse;
|
||||
booking.setUpdatedAt(newDate);
|
||||
booking.setCreatedAt(newDate);
|
||||
booking.setApproveStatus("F");
|
||||
booking.setTryTime(5);
|
||||
if (booking.getTryTime()==null){
|
||||
booking.setTryTime(1);
|
||||
} else if (booking.getTryTime()<4) {
|
||||
booking.setTryTime(booking.getTryTime()+1);
|
||||
} else {
|
||||
booking.setTryTime(booking.getTryTime()+1);
|
||||
booking.setApproveStatus("F");
|
||||
}
|
||||
booking.setErrorMessage("Cancel booking fail.Error Message [ " + errorMsg + " ] ");
|
||||
bookingDao.save(booking);
|
||||
processResult.setSuccess(false);
|
||||
|
||||
@@ -14,4 +14,5 @@ public class GetPropertyRoomTypeResponse {
|
||||
private List<String> defaultRoomTypes;
|
||||
private List<RoomType> roomTypes;
|
||||
private List<GetPropertyRoomTypeResponse> otherProperties;
|
||||
private String category;
|
||||
}
|
||||
|
||||
@@ -41,6 +41,7 @@ public class RoomCalendarService {
|
||||
String roomType;
|
||||
String startDate;
|
||||
String endDate;
|
||||
String category = params.get("category").toString();
|
||||
|
||||
try {
|
||||
playerId = getOptionalString(params, "playerId", "PlayerId");
|
||||
@@ -67,7 +68,7 @@ public class RoomCalendarService {
|
||||
return result;
|
||||
}
|
||||
|
||||
CalendarVisibilityCheck visibility = validateCalendarVisibility(property, roomType);
|
||||
CalendarVisibilityCheck visibility = validateCalendarVisibility(property, roomType, category);
|
||||
if (visibility.errorCode != null) {
|
||||
result.setSuccess(false);
|
||||
result.setMessage(visibility.errorMessage);
|
||||
@@ -131,14 +132,14 @@ public class RoomCalendarService {
|
||||
return result;
|
||||
}
|
||||
|
||||
private CalendarVisibilityCheck validateCalendarVisibility(String property, String roomType) {
|
||||
private CalendarVisibilityCheck validateCalendarVisibility(String property, String roomType, String category) {
|
||||
List<String> propertyNames = parseDelimitedValues(property);
|
||||
List<String> roomTypeNames = parseDelimitedValues(roomType);
|
||||
List<CfgProperties> properties = propertyDao.findByCalendarNameIn(propertyNames);
|
||||
List<CfgProperties> visibleProperties = new ArrayList<>();
|
||||
|
||||
for (String propertyName : propertyNames) {
|
||||
CfgProperties cfgProperty = findByCalendarName(properties, propertyName);
|
||||
CfgProperties cfgProperty = findByCalendarName(properties, propertyName, category);
|
||||
if (isShowCalendar(cfgProperty)) {
|
||||
visibleProperties.add(cfgProperty);
|
||||
}
|
||||
@@ -168,14 +169,14 @@ public class RoomCalendarService {
|
||||
List<String> otherIds = new ArrayList<>();
|
||||
List<String> otherCodes = new ArrayList<>();
|
||||
for (CfgProperties cfgProperty : visibleProperties) {
|
||||
String category = cfgProperty.getCategory();
|
||||
if (StringUtils.equalsIgnoreCase(category, "OPERA")) {
|
||||
String propertyCategory = cfgProperty.getCategory();
|
||||
if (StringUtils.equalsIgnoreCase(propertyCategory, "OPERA")) {
|
||||
operaIds.add(String.valueOf(cfgProperty.getId()));
|
||||
operaCodes.add(cfgProperty.getCode());
|
||||
} else if (StringUtils.equalsIgnoreCase(category, "DAYLIGHT")) {
|
||||
} else if (StringUtils.equalsIgnoreCase(propertyCategory, "DAYLIGHT")) {
|
||||
daylightIds.add(String.valueOf(cfgProperty.getId()));
|
||||
daylightCodes.add(cfgProperty.getCode());
|
||||
} else if (StringUtils.equalsIgnoreCase(category, "OTHER")) {
|
||||
} else if (StringUtils.equalsIgnoreCase(propertyCategory, "OTHER")) {
|
||||
otherIds.add(String.valueOf(cfgProperty.getId()));
|
||||
otherCodes.add(cfgProperty.getCode());
|
||||
}
|
||||
@@ -232,19 +233,19 @@ public class RoomCalendarService {
|
||||
String calendarName = StringUtils.defaultIfBlank(property.getCalendarName(), property.getName());
|
||||
if (StringUtils.equalsIgnoreCase(property.getCategory(), "OPERA")
|
||||
|| StringUtils.equalsIgnoreCase(property.getCategory(), "DAYLIGHT")) {
|
||||
propertyList.add(buildPropertyRoomTypeResponse(calendarName, calendarName, null, roomTypes));
|
||||
propertyList.add(buildPropertyRoomTypeResponse(calendarName, calendarName, null, roomTypes, property.getCategory()));
|
||||
} else if (StringUtils.equalsIgnoreCase(property.getCategory(), "OTHER")) {
|
||||
otherProperties.add(buildPropertyRoomTypeResponse(
|
||||
calendarName,
|
||||
calendarName,
|
||||
StringUtils.defaultIfBlank(property.getName(), property.getCalendarName()),
|
||||
roomTypes));
|
||||
roomTypes, "OTHER"));
|
||||
}
|
||||
}
|
||||
|
||||
if (!otherProperties.isEmpty()) {
|
||||
GetPropertyRoomTypeResponse otherGroup = buildPropertyRoomTypeResponse(
|
||||
"OTHER", "Other Property", null, new ArrayList<>());
|
||||
"OTHER", "Other Property", null, new ArrayList<>(), "OTHER");
|
||||
otherGroup.setDefaultRoomTypes(buildDefaultProperties(otherProperties));
|
||||
otherGroup.setOtherProperties(otherProperties);
|
||||
propertyList.add(otherGroup);
|
||||
@@ -307,13 +308,14 @@ public class RoomCalendarService {
|
||||
}
|
||||
|
||||
private static GetPropertyRoomTypeResponse buildPropertyRoomTypeResponse(
|
||||
String code, String name, String displayName, List<RoomType> roomTypes) {
|
||||
String code, String name, String displayName, List<RoomType> roomTypes, String category) {
|
||||
GetPropertyRoomTypeResponse item = new GetPropertyRoomTypeResponse();
|
||||
item.setCode(StringUtils.defaultString(code));
|
||||
item.setName(StringUtils.defaultString(name));
|
||||
item.setDisplayName(displayName);
|
||||
item.setRoomTypes(roomTypes);
|
||||
item.setDefaultRoomTypes(buildDefaultRoomTypes(roomTypes));
|
||||
item.setCategory(category);
|
||||
return item;
|
||||
}
|
||||
|
||||
@@ -388,8 +390,11 @@ public class RoomCalendarService {
|
||||
return new ArrayList<>(visible);
|
||||
}
|
||||
|
||||
private static CfgProperties findByCalendarName(List<CfgProperties> properties, String name) {
|
||||
private static CfgProperties findByCalendarName(List<CfgProperties> properties, String name, String category) {
|
||||
for (CfgProperties property : properties) {
|
||||
if (!property.getCategory().equals(category)) {
|
||||
continue;
|
||||
}
|
||||
if (StringUtils.equals(property.getCalendarName(), name)) {
|
||||
return property;
|
||||
}
|
||||
|
||||
@@ -154,7 +154,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,https://localhost:9086,https://127.0.0.1:9086"
|
||||
allow_origin: "http://localhost:5173,http://127.0.0.1:5173,http://localhost:8080,MGM_CRM_APP,MGM_MCRM_APP,MGM_CRM_CMS,https://dlahcadev.mcmsapoc.com,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"
|
||||
|
||||
Reference in New Issue
Block a user