RouteDistanceProvider.java 1.1 KB

12345678910111213141516171819202122
  1. package com.ruoyi.app.flashdelivery.route;
  2. import java.math.BigDecimal;
  3. import java.util.List;
  4. @FunctionalInterface
  5. /** 外部路线距离提供器,失败时由上层服务负责本地降级。 */
  6. public interface RouteDistanceProvider {
  7. /** 按起终点和订单车型计算路线距离与时长;失败直接抛异常,由上层负责降级。 */
  8. RouteDistance route(BigDecimal originLatitude, BigDecimal originLongitude,
  9. BigDecimal destinationLatitude, BigDecimal destinationLongitude,
  10. Integer vehicleType);
  11. /** 完整有序路线;多点不允许悄悄省略中间站。 */
  12. default RouteDistance route(List<GeoPoint> points, Integer vehicleType) {
  13. FlashDeliveryRouteService.validatePoints(points);
  14. if (points.size() != 2) throw new UnsupportedOperationException("multi-stop route unavailable");
  15. GeoPoint origin = points.get(0);
  16. GeoPoint destination = points.get(1);
  17. return route(origin.latitude(), origin.longitude(), destination.latitude(), destination.longitude(), vehicleType);
  18. }
  19. }