Files
mgm-daylight-mcrm-api-mobile/src/main/java/com/mgm/mcrm/common/services/MGMApiService.java
T
2026-09-15 17:04:06 +08:00

448 lines
16 KiB
Java

package com.mgm.mcrm.common.services;
import com.alibaba.fastjson.JSONObject;
import com.google.gson.Gson;
import com.mgm.mcrm.booking.dtos.search.DateRange;
import com.mgm.mcrm.common.constants.SysCommon;
import com.mgm.mcrm.common.dtos.http_util.HttpRequestDefine;
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.common.utils.mockup.HttpUtilMockup;
import org.apache.commons.lang3.StringUtils;
import org.apache.commons.lang3.Strings;
import org.springframework.stereotype.Service;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@Service
public class MGMApiService {
public static String ESB_APP_ID = "";
public static String ESB_APP_SECRET = "";
public static String ESB_Server = "";
public static String ESB_ACCESS_TOKEN = null;
public static Date ESB_EXPIRED_TIME = new Date();
private static final String API_GET_ACCESS_TOKEN = "/RequestAccessToken";
private static final String API_GET_PLAYER_PROFILE = "/GetReportingLinePlayerInfo";
private static final String API_CHECK_PLAYER_TPD = "/GetRoomBookingQualificationStatus";
private static final String API_GET_USER_INFO = "/GetLoginUserInfo";
private static final String API_NON_MGM_BOOKING = "/GetNonMGMRoomBookingRecord";
private static final String API_WAITLIST_BOOKING = "/GetRoomBookingWaitList";
private static final String API_CHECK_SECOND_ROOM_TPD = "/GetMultiRoomBookingQualificationStatus";
private static final String API_CHECK_APPROVER = "/CheckApprover";
private static final String API_WAITLIST_DATA = "/GetWaitlistData";
private static final String API_GET_ALL_PLAYER_PROFILE = "/GetPlayerInfo";
private static final String API_GET_TODO_DASHBOARD = "/GetDashboardData";
private static final String API_GET_TODO_DETAIL = "/GetTodolistDetails";
private static final String API_GET_APPROVER_DATA="/RequestWaitlistData";
private static final String API_GET_APPROVER="/RequestRoomBookingApprovalRouting";
private static final String API_GET_TODO_LIST = "/GetTodolist";
private static final String API_REQUEST_ROOM_CALENDAR = "/RequestRoomCalendar";
public HttpResponseResult invokeRequestRoomCalendar(
String playerId,
String property,
String roomType,
String startDate,
String endDate) throws Exception {
return invokeRequestRoomCalendar(playerId, property, roomType, startDate, endDate, 0);
}
public HttpResponseResult invokeRequestRoomCalendar(
String playerId,
String property,
String roomType,
String startDate,
String endDate,
int type) throws Exception {
JSONObject requestObj = new JSONObject();
Map<String, String> requestHeader = new HashMap<>();
requestHeader.put("Authorization", getAccessToken());
if (StringUtils.isNotBlank(playerId)) {
requestObj.put("PlayerId", playerId);
}
requestObj.put("Property", property);
requestObj.put("RoomType", roomType);
requestObj.put("StartDate", startDate);
requestObj.put("EndDate", endDate);
return invokeESBAPI(ESB_Server, API_REQUEST_ROOM_CALENDAR, requestObj, "POST", requestHeader, type);
}
public HttpResponseResult invokeGetPlayerProfile(
String playerId,
String userId) throws Exception {
HttpResponseResult result;
JSONObject requestObj = new JSONObject();
Map<String, String> requestHeader = new HashMap<>();
String token = getAccessToken();
requestHeader.put("Authorization", token);
requestHeader.put("PlayerId", playerId);
requestHeader.put("UserId", userId);
requestObj.put("playerId", playerId);
requestObj.put("userId", userId);
result = this.invokeESBAPI(ESB_Server, API_GET_PLAYER_PROFILE, requestObj, "GET", requestHeader);
return result;
}
public HttpResponseResult invokeGetAllPlayerProfile(String playerId) throws Exception {
HttpResponseResult result;
String apiLink = SysCommon.mgmApiMockup ? API_GET_PLAYER_PROFILE : API_GET_ALL_PLAYER_PROFILE;
JSONObject requestObj = new JSONObject();
Map<String, String> requestHeader = new HashMap<>();
String token = getAccessToken();
requestHeader.put("Authorization", token);
requestHeader.put("PlayerId", playerId);
requestObj.put("playerId", playerId);
result = this.invokeESBAPI(ESB_Server, apiLink, requestObj, "GET", requestHeader);
return result;
}
public HttpResponseResult invokeCheckPlayerTPD(
String playerId,
String roomCate,
List<String> dates,
String bookingType,
String property) throws Exception {
HttpResponseResult result;
String apiLink = API_CHECK_PLAYER_TPD;
JSONObject requestObj = new JSONObject();
Map<String, String> requestHeader = new HashMap<>();
String token = getAccessToken();
requestHeader.put("Authorization", token);
requestHeader.put("PlayerId", playerId);
requestHeader.put("RoomCategory", roomCate);
requestHeader.put("BookingType", bookingType);
requestHeader.put("Property", property);
requestHeader.put("StartDate", dates.getFirst());
requestHeader.put("EndDate", dates.getLast());
requestObj.put("playerId", playerId);
requestObj.put("roomCategory", roomCate);
requestObj.put("startDate", dates.getFirst());
requestObj.put("endDate", dates.getLast());
result = this.invokeESBAPI(ESB_Server, apiLink, requestObj, "GET", requestHeader, 1);
return result;
}
public HttpResponseResult invokeGetApprover(String playerId,String bookingType,String property,String roomCategory,String checkInDate,String checkOutDate,String userId) throws Exception {
HttpResponseResult result = null;
String apiLink =API_GET_APPROVER;
JSONObject requestObj = new JSONObject();
Map<String, String> requestHeader = new HashMap<String,String>();
String token = getAccessToken();
requestHeader.put("Authorization", token);
requestObj.put("PlayerId", playerId);
requestObj.put("BookingType", bookingType);
requestObj.put("Property", property);
requestObj.put("RoomCategory", roomCategory);
requestObj.put("StartDate", checkInDate);
requestObj.put("EndDate", checkOutDate);
requestObj.put("UserId", userId);
result = this.invokeESBAPI(ESB_Server, apiLink, requestObj, "POST", requestHeader);
return result;
}
public HttpResponseResult invokeGetApprovalData(String bookingId) throws Exception {
HttpResponseResult result = null;
String apiLink =API_GET_APPROVER_DATA;
JSONObject requestObj = new JSONObject();
Map<String, String> requestHeader = new HashMap<String,String>();
String token = getAccessToken();
requestHeader.put("Authorization", token);
requestObj.put("BookingId", bookingId);
result = this.invokeESBAPI(ESB_Server, apiLink, requestObj, "POST", requestHeader);
return result;
}
public HttpResponseResult invokeCheckApprover(
String userId,
String userName,
String roomType,
String property) throws Exception {
HttpResponseResult result;
String apiLink = API_CHECK_APPROVER;
JSONObject requestObj = new JSONObject();
Map<String, String> requestHeader = new HashMap<>();
String token = getAccessToken();
requestHeader.put("Authorization", token);
if (!StringUtils.isEmpty(userId)) {
requestObj.put("UserId", userId);
}
if (!StringUtils.isEmpty(userName)) {
requestObj.put("UserName", userName);
}
requestObj.put("RoomCategory", roomType);
requestObj.put("Property", property);
result = this.invokeESBAPI(ESB_Server, apiLink, requestObj, "POST", requestHeader);
return result;
}
public HttpResponseResult invokeGetUserInfo(String userId, String userName) throws Exception {
HttpResponseResult result;
String apiLink = API_GET_USER_INFO;
JSONObject requestObj = new JSONObject();
Map<String, String> requestHeader = new HashMap<>();
String token = getAccessToken();
requestHeader.put("Authorization", token);
if (!StringUtils.isEmpty(userId)) {
requestHeader.put("UserId", userId);
requestObj.put("userId", userId);
}
if (!StringUtils.isEmpty(userName)) {
requestHeader.put("UserName", userName);
requestObj.put("userName", userName);
}
result = this.invokeESBAPI(ESB_Server, apiLink, requestObj, "GET", requestHeader);
return result;
}
public HttpResponseResult invokeNonMGMBooking(String playerId) throws Exception {
HttpResponseResult result;
String apiLink = API_NON_MGM_BOOKING;
JSONObject requestObj = new JSONObject();
Map<String, String> requestHeader = new HashMap<>();
String token = getAccessToken();
requestHeader.put("Authorization", token);
requestHeader.put("PlayerId", playerId);
requestObj.put("playerId", playerId);
result = this.invokeESBAPI(ESB_Server, apiLink, requestObj, "GET", requestHeader);
return result;
}
public HttpResponseResult invokeWaitlistBooking(String playerId) throws Exception {
HttpResponseResult result;
String apiLink = API_WAITLIST_BOOKING;
JSONObject requestObj = new JSONObject();
Map<String, String> requestHeader = new HashMap<>();
String token = getAccessToken();
requestHeader.put("Authorization", token);
requestHeader.put("PlayerId", playerId);
result = this.invokeESBAPI(ESB_Server, apiLink, requestObj, "GET", requestHeader);
return result;
}
public HttpResponseResult invokeWaitlistData(String bookIds, int categoryType) throws Exception {
HttpResponseResult result;
String apiLink = API_WAITLIST_DATA;
JSONObject requestObj = new JSONObject();
Map<String, String> requestHeader = new HashMap<>();
String token = getAccessToken();
requestHeader.put("Authorization", token);
requestObj.put("BookingId", bookIds);
result = this.invokeESBAPI(ESB_Server, apiLink, requestObj, "POST", requestHeader, categoryType);
return result;
}
public HttpResponseResult invokeCheckPlayerSecondTPD(
String playerId,
String roomCate,
List<DateRange> dateRange,
String bookingType,
String property) throws Exception {
HttpResponseResult result;
String apiLink = API_CHECK_SECOND_ROOM_TPD;
JSONObject requestObj = new JSONObject();
Map<String, String> requestHeader = new HashMap<>();
String token = getAccessToken();
requestHeader.put("Authorization", token);
requestObj.put("PlayerId", playerId);
requestObj.put("RoomCategory", roomCate);
requestObj.put("BookingType", bookingType);
requestObj.put("Property", property);
requestObj.put("DateRange", dateRange);
result = this.invokeESBAPI(ESB_Server, apiLink, requestObj, "POST", requestHeader);
return result;
}
public String getAccessToken() throws Exception {
String token = ESB_ACCESS_TOKEN;
if (SysCommon.mgmApiMockup) return token;
ESB_APP_ID = SysCommon.apiConfig.getApiKey_ESB();
ESB_APP_SECRET = SysCommon.apiConfig.getApiSecret_ESB();
ESB_Server = SysCommon.apiConfig.getServerUrl_ESB();
if (token == null || ESB_EXPIRED_TIME.getTime() < new Date().getTime()) {
String apiLink = API_GET_ACCESS_TOKEN;
JSONObject requestObj = new JSONObject();
Map<String, String> requestHeader = new HashMap<>();
requestObj.put("AppId", ESB_APP_ID);
requestObj.put("AppSecret", ESB_APP_SECRET);
HttpResponseResult result = this.invokeESBAPI(ESB_Server, apiLink, requestObj, "POST", requestHeader);
if (result.getStatusCode() == 200) {
JSONObject resultObj = JSONObject.parseObject(result.getResponseContent());
String status = resultObj.getString("StatusCode");
if (Strings.CS.equals("OK", status)) {
token = resultObj.getString("Token");
ESB_EXPIRED_TIME = DateTimeUtil.getDateFromString(resultObj.getString("ExpireTime"), "yyyy-MM-dd HH:mm:ss");
ESB_ACCESS_TOKEN = token;
} else {
token = null;
ESB_ACCESS_TOKEN = null;
ESB_EXPIRED_TIME = new Date();
}
}
}
return token;
}
public HttpResponseResult invokeGetTodoDashboard(
String userId,
int categoryType) throws Exception {
HttpResponseResult result;
String apiLink = API_GET_TODO_DASHBOARD;
JSONObject requestObj = new JSONObject();
Map<String, String> requestHeader = new HashMap<>();
String token = getAccessToken();
requestHeader.put("Authorization", token);
requestObj.put("UserId", userId);
result = this.invokeESBAPI(ESB_Server, apiLink, requestObj, "POST", requestHeader, categoryType);
return result;
}
public HttpResponseResult invokeGetTodoDetail(
String playerId,
String todoCategory,
String todoSegment,
String date,
int categoryType) throws Exception {
HttpResponseResult result;
String apiLink = API_GET_TODO_DETAIL;
JSONObject requestObj = new JSONObject();
Map<String, String> requestHeader = new HashMap<>();
String token = getAccessToken();
requestHeader.put("Authorization", token);
requestObj.put("PlayerId", playerId);
requestObj.put("TodoCategory", todoCategory);
requestObj.put("TodoSegment", todoSegment);
requestObj.put("Date", date);
result = this.invokeESBAPI(ESB_Server, apiLink, requestObj, "POST", requestHeader, categoryType);
return result;
}
public HttpResponseResult invokeGetTodoList(
String userId,
String category,
String type,
Date startDate,
Date endDate,
int categoryType) throws Exception {
HttpResponseResult result;
String apiLink = API_GET_TODO_LIST;
JSONObject requestObj = new JSONObject();
Map<String, String> requestHeader = new HashMap<>();
String token = getAccessToken();
requestHeader.put("Authorization", token);
requestObj.put("UserId", userId);
requestObj.put("TodoCategory", category);
requestObj.put("TodoSegment", type);
requestObj.put("StartDate", startDate);
requestObj.put("EndDate", endDate);
result = this.invokeESBAPI(ESB_Server, apiLink, requestObj, "POST", requestHeader, categoryType);
return result;
}
// 如果不设置type,默认call opera
public HttpResponseResult invokeESBAPI(
String serverType,
String requestLink,
JSONObject requestContent,
String requestMethod,
Map<String, String> requestHeader) throws Exception {
return invokeESBAPI(serverType, requestLink, requestContent, requestMethod, requestHeader, 0);
}
/**
*
* @param serverType n
* @param requestLink n
* @param requestContent n
* @param requestMethod n
* @param requestHeader n
* @param type 0 - opera, 1 - daylight
* @return n
* @throws Exception e
*/
public HttpResponseResult invokeESBAPI(
String serverType,
String requestLink,
JSONObject requestContent,
String requestMethod,
Map<String, String> requestHeader,
int type) throws Exception {
String serverUrl;
int timeoutTime;
if (Strings.CS.equals(serverType, ESB_Server)) {
serverUrl = SysCommon.apiConfig.getServerUrl_ESB();
timeoutTime = SysCommon.apiConfig.getTimeout_ESB();
} else {
throw new Exception("Invalid server type");
}
if (type == 1) {
requestLink = "/Daylight" + requestLink;
}
HttpRequestDefine requestDef = new HttpRequestDefine();
String requestUrl = serverUrl + requestLink;
requestDef.setRequestUrl(requestUrl);
requestDef.setRequestMethod(requestMethod);
requestDef.setTimeout(timeoutTime);
requestHeader.put("Content-type", "application/json;charset=utf-8");
requestDef.setHeaders(requestHeader);
if (requestContent != null) {
requestDef.setEntityContent(requestContent.toString());
} else {
requestDef.setEntityContent("");
}
// --
//Get Start,EndTime
long spanTime;
Date startTime = new Date();
Date endTime;
LogUtil.info(MGMApiService.class, "[invokeESBAPI] start request:");
HttpResponseResult httpResult =
SysCommon.mgmApiMockup ?
HttpUtilMockup.processHttpRequest(requestDef) :
HttpUtil.processHttpRequest(requestDef);
httpResult.setRequestContent(requestDef.getEntityContent());
//RefreshEndTime
endTime = new Date();
//Get Spend Time
Gson gson = new Gson();
spanTime = DateTimeUtil.getTimeSpanSSS(startTime, endTime);
LogUtil.info(MGMApiService.class, "[invokeESBAPI]getRequestUrl:" + gson.toJson(requestDef.getRequestUrl()));
LogUtil.info(MGMApiService.class, "[invokeESBAPI]getHeaders:" + gson.toJson(requestDef.getHeaders()));
LogUtil.info(MGMApiService.class, "[invokeESBAPI]getRequestMethod:" + gson.toJson(requestDef.getRequestMethod()));
LogUtil.info(MGMApiService.class, "[invokeESBAPI]getEntityContent:" + gson.toJson(requestContent));
LogUtil.info(MGMApiService.class, "[invokeESBAPI]getStatusCode:" + gson.toJson(httpResult.getStatusCode()));
LogUtil.info(MGMApiService.class, "[invokeESBAPI]getErrorMessage:" + gson.toJson(httpResult.getErrorMessage()));
LogUtil.info(MGMApiService.class, "[invokeESBAPI]getResponseContent:" + gson.toJson(httpResult.getResponseContent()));
//Log Spend Time
LogUtil.info(MGMApiService.class, "[invokeESBAPI]SpendTime:" + spanTime + "ms");
return httpResult;
}
}