fix:修改超标原因获取逻辑
This commit is contained in:
parent
a1b211f311
commit
ee3a7afd3a
|
@ -40,11 +40,11 @@ public class SystemAnnouncement implements Serializable {
|
||||||
systemAnnouncement.setPostDate(postDate);
|
systemAnnouncement.setPostDate(postDate);
|
||||||
}
|
}
|
||||||
if (systemAnnouncement.getExpiryDate() == null) {
|
if (systemAnnouncement.getExpiryDate() == null) {
|
||||||
systemAnnouncement.setExpiryDate(LocalDateTime.now().plusDays(15L));
|
systemAnnouncement.setExpiryDate(LocalDateTime.now().plusDays(30L));
|
||||||
} else {
|
} else {
|
||||||
LocalDateTime expiryTime = LocalDateTime.of(LocalDate.parse(dto.getExpiryDate(), DateTimeUtil.formatterDate),
|
LocalDateTime expiryTime = LocalDateTime.of(LocalDate.parse(dto.getExpiryDate(), DateTimeUtil.formatterDate),
|
||||||
LocalTime.MAX);
|
LocalTime.MAX);
|
||||||
systemAnnouncement.setPostDate(expiryTime);
|
systemAnnouncement.setExpiryDate(expiryTime);
|
||||||
}
|
}
|
||||||
systemAnnouncement.setStatus("1");
|
systemAnnouncement.setStatus("1");
|
||||||
systemAnnouncement.setPriority(0);
|
systemAnnouncement.setPriority(0);
|
||||||
|
|
|
@ -75,6 +75,7 @@ public class HotelOrderInfoEntity {
|
||||||
private String CountryName; //国家名
|
private String CountryName; //国家名
|
||||||
private String ProvinceName; //省名
|
private String ProvinceName; //省名
|
||||||
private String LowPriceRCInfo; //超标原因 可能是一个对象
|
private String LowPriceRCInfo; //超标原因 可能是一个对象
|
||||||
|
private String AgreementRCInfo; //超标原因 可能是一个对象
|
||||||
|
|
||||||
private String TPMaxPrice; //入离日期内差标
|
private String TPMaxPrice; //入离日期内差标
|
||||||
// 后续字段含义类似,可根据实际情况添加注释
|
// 后续字段含义类似,可根据实际情况添加注释
|
||||||
|
|
|
@ -10,7 +10,9 @@ import com.chint.infrastructure.util.Digest;
|
||||||
import com.chint.infrastructure.util.Result;
|
import com.chint.infrastructure.util.Result;
|
||||||
import com.chint.interfaces.rest.ctrip.CTripOrderSearchRequest;
|
import com.chint.interfaces.rest.ctrip.CTripOrderSearchRequest;
|
||||||
import com.chint.interfaces.rest.ctrip.dto.put.CTripStatusNotification;
|
import com.chint.interfaces.rest.ctrip.dto.put.CTripStatusNotification;
|
||||||
|
import com.chint.interfaces.rest.ctrip.dto.search.ItineraryEntity;
|
||||||
import com.chint.interfaces.rest.ctrip.dto.search.SearchOrderResponse;
|
import com.chint.interfaces.rest.ctrip.dto.search.SearchOrderResponse;
|
||||||
|
import com.chint.interfaces.rest.ctrip.dto.search.hotel.HotelOrderInfoEntity;
|
||||||
import com.chint.interfaces.rest.ctrip.tools.CTripUtils;
|
import com.chint.interfaces.rest.ctrip.tools.CTripUtils;
|
||||||
import com.google.gson.Gson;
|
import com.google.gson.Gson;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
|
@ -22,6 +24,9 @@ import org.springframework.web.bind.annotation.RequestBody;
|
||||||
import org.springframework.web.bind.annotation.RequestMapping;
|
import org.springframework.web.bind.annotation.RequestMapping;
|
||||||
import org.springframework.web.bind.annotation.RestController;
|
import org.springframework.web.bind.annotation.RestController;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
import static com.chint.infrastructure.constant.LegConstant.*;
|
||||||
import static com.chint.infrastructure.constant.SupplierNameConstant.SUPPLIER_C_TRIP;
|
import static com.chint.infrastructure.constant.SupplierNameConstant.SUPPLIER_C_TRIP;
|
||||||
|
|
||||||
@Slf4j
|
@Slf4j
|
||||||
|
@ -42,6 +47,8 @@ public class CTripNoteController {
|
||||||
@Autowired
|
@Autowired
|
||||||
private SupplierCallBackLogRepository supplierCallBackLogRepository;
|
private SupplierCallBackLogRepository supplierCallBackLogRepository;
|
||||||
|
|
||||||
|
private static final String NO_ETA_AVAILABLE = "暂无";
|
||||||
|
|
||||||
private Gson gson = new Gson();
|
private Gson gson = new Gson();
|
||||||
|
|
||||||
// @PostMapping("/event")
|
// @PostMapping("/event")
|
||||||
|
@ -80,7 +87,7 @@ public class CTripNoteController {
|
||||||
|
|
||||||
String productType = cTripStatusNotification.getProductType();
|
String productType = cTripStatusNotification.getProductType();
|
||||||
|
|
||||||
if(productType.equals("Train") || productType.equals("OverseaTrain")) {
|
if (productType.equals("Train") || productType.equals("OverseaTrain")) {
|
||||||
return Result.Success("暂不接受携程火车数据回推");
|
return Result.Success("暂不接受携程火车数据回推");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -88,7 +95,7 @@ public class CTripNoteController {
|
||||||
String orderId = cTripStatusNotification.getOrderId();
|
String orderId = cTripStatusNotification.getOrderId();
|
||||||
String putCTripSign = Digest.getPutCTripStatusSign(cTripStatusNotification.getCorpId(), productType, orderStatus, orderId, C_TRIP_REQUEST_SECRET);
|
String putCTripSign = Digest.getPutCTripStatusSign(cTripStatusNotification.getCorpId(), productType, orderStatus, orderId, C_TRIP_REQUEST_SECRET);
|
||||||
if (!putCTripSign.equals(cTripStatusNotification.getSign())) {
|
if (!putCTripSign.equals(cTripStatusNotification.getSign())) {
|
||||||
return Result.error("sign错误");
|
return Result.error("sign错误");
|
||||||
}
|
}
|
||||||
if (orderStatus != null && orderId != null) {
|
if (orderStatus != null && orderId != null) {
|
||||||
return handlerData(orderId, orderStatus, productType);
|
return handlerData(orderId, orderStatus, productType);
|
||||||
|
@ -102,6 +109,7 @@ public class CTripNoteController {
|
||||||
SupplierCallbackData.of(SUPPLIER_C_TRIP);
|
SupplierCallbackData.of(SUPPLIER_C_TRIP);
|
||||||
SearchOrderResponse response = cTripOrderSearchRequest
|
SearchOrderResponse response = cTripOrderSearchRequest
|
||||||
.searchOrderResponseByOrderId(orderId);
|
.searchOrderResponseByOrderId(orderId);
|
||||||
|
List<ItineraryEntity> itineraryList = response.getItineraryList();
|
||||||
supplierCallbackData.data(response);
|
supplierCallbackData.data(response);
|
||||||
OrderDetail orderDetail = supplierService.handleSupplierCallback(supplierCallbackData);
|
OrderDetail orderDetail = supplierService.handleSupplierCallback(supplierCallbackData);
|
||||||
|
|
||||||
|
@ -112,15 +120,18 @@ public class CTripNoteController {
|
||||||
switch (productType) {
|
switch (productType) {
|
||||||
case "FlightInternational":
|
case "FlightInternational":
|
||||||
case "FlightDomestic":
|
case "FlightDomestic":
|
||||||
command.eventType(CTripUtils.mapFlightStatus(orderStatus));
|
command.eventType(CTripUtils.mapFlightStatus(orderStatus))
|
||||||
|
.extension(getETAReason(response, LEG_TYPE_AIRPLANE));
|
||||||
break;
|
break;
|
||||||
case "HotelMember":
|
case "HotelMember":
|
||||||
case "HotelContract":
|
case "HotelContract":
|
||||||
command.eventType(CTripUtils.mapHotelStatus(orderStatus));
|
command.eventType(CTripUtils.mapHotelStatus(orderStatus))
|
||||||
|
.extension(getETAReason(response, LEG_TYPE_HOTEL));
|
||||||
break;
|
break;
|
||||||
case "Train":
|
case "Train":
|
||||||
case "OverseaTrain":
|
case "OverseaTrain":
|
||||||
command.eventType(CTripUtils.mapTrainStatus(orderStatus));
|
command.eventType(CTripUtils.mapTrainStatus(orderStatus))
|
||||||
|
.extension(getETAReason(response, LEG_TYPE_TRAIN));
|
||||||
break;
|
break;
|
||||||
case "CarPickUpInternational":
|
case "CarPickUpInternational":
|
||||||
case "CarRentalDomestic":
|
case "CarRentalDomestic":
|
||||||
|
@ -128,10 +139,35 @@ public class CTripNoteController {
|
||||||
case "CarPickUpDomesticNew":
|
case "CarPickUpDomesticNew":
|
||||||
case "CarCharterDomestic":
|
case "CarCharterDomestic":
|
||||||
case "BusTicket":
|
case "BusTicket":
|
||||||
command.eventType(CTripUtils.mapCarStatus(orderStatus));
|
command.eventType(CTripUtils.mapCarStatus(orderStatus))
|
||||||
|
.extension(getETAReason(response, LEG_TYPE_TAXI));
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
command.sendToQueue();
|
command.sendToQueue();
|
||||||
return Result.Success("成功收到消息");
|
return Result.Success("成功收到消息");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private String getETAReason(SearchOrderResponse response, Integer productType) {
|
||||||
|
ItineraryEntity itineraryEntity = response.getItineraryList().get(0);
|
||||||
|
return switch (productType) {
|
||||||
|
case LEG_TYPE_TRAIN -> NO_ETA_AVAILABLE;
|
||||||
|
case LEG_TYPE_AIRPLANE -> NO_ETA_AVAILABLE;
|
||||||
|
case LEG_TYPE_HOTEL -> {
|
||||||
|
// 确保行程实体不为空以及酒店订单信息列表不为空且有内容
|
||||||
|
if (itineraryEntity != null && itineraryEntity.getHotelOrderInfoList() != null && !itineraryEntity.getHotelOrderInfoList().isEmpty()) {
|
||||||
|
HotelOrderInfoEntity hotelOrderInfoEntity = itineraryEntity.getHotelOrderInfoList().get(0);
|
||||||
|
// 优先使用低价原因,如果为空则使用协议原因
|
||||||
|
String etaReason = hotelOrderInfoEntity.getLowPriceRCInfo();
|
||||||
|
if (etaReason == null) {
|
||||||
|
etaReason = hotelOrderInfoEntity.getAgreementRCInfo();
|
||||||
|
}
|
||||||
|
yield etaReason != null ? etaReason : NO_ETA_AVAILABLE;
|
||||||
|
} else {
|
||||||
|
yield NO_ETA_AVAILABLE;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
case LEG_TYPE_TAXI -> NO_ETA_AVAILABLE;
|
||||||
|
default -> NO_ETA_AVAILABLE;
|
||||||
|
};
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -244,10 +244,10 @@ public class CTripTest {
|
||||||
System.out.println(gson.toJson(estimate));
|
System.out.println(gson.toJson(estimate));
|
||||||
}
|
}
|
||||||
|
|
||||||
// @Test
|
@Test
|
||||||
void search() {
|
void search() {
|
||||||
BaseContext.setCurrentUser(user);
|
BaseContext.setCurrentUser(user);
|
||||||
SearchOrderResponse response = orderSearchRequest.searchOrderResponseByOrderId("31108053999");
|
SearchOrderResponse response = orderSearchRequest.searchOrderResponseByOrderId("30686209959");
|
||||||
System.out.println(response);
|
System.out.println(response);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue