448 lines
16 KiB
Java
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;
|
|
}
|
|
}
|