xp-robotaxi-account-boot/src/main/java/com/xiaopeng/account/service/impl/XpAppUserCouponServiceImpl.java
@@ -173,8 +173,8 @@ xpAppUserCoupon.setMoney(xpCoupon.getAmount()); xpAppUserCoupon.setCouponId(dto.getCouponId()); xpAppUserCoupon.setAppUserId(uid); xpAppUserCoupon.setExpirationTime(LocalDateTime.now().plusDays(100)); xpAppUserCoupon.setStatus(0); xpAppUserCoupon.setExpirationTime(LocalDateTime.now().plusDays(7)); xpAppUserCoupon.setStatus(1); xpAppUserCoupon.setCouponType(xpCoupon.getCouponType()); xpAppUserCoupon.setPhone(phone); xp-robotaxi-api/src/main/java/com/xiaopeng/api/dto/operation/LonLatCityCodeDto.java
New file @@ -0,0 +1,28 @@ package com.xiaopeng.api.dto.operation; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.AllArgsConstructor; import lombok.Data; import lombok.NoArgsConstructor; import javax.validation.constraints.NotNull; @Data @ApiModel(value = "经纬度DTO") @AllArgsConstructor @NoArgsConstructor public class LonLatCityCodeDto { @ApiModelProperty(value = "经度") @NotNull(message = "经度不能为空") private Double longitude; @ApiModelProperty(value = "纬度") @NotNull(message = "纬度不能为空") private Double latitude; @ApiModelProperty(value = "城市编码") private String cityCode; } xp-robotaxi-api/src/main/java/com/xiaopeng/api/dto/operation/LonLatDto.java
@@ -21,4 +21,6 @@ @ApiModelProperty(value = "纬度") @NotNull(message = "纬度不能为空") private Double latitude; } xp-robotaxi-itinerary-boot/src/main/java/com/xiaopeng/itinerary/service/impl/XpPricingServiceImpl.java
@@ -377,6 +377,9 @@ // 12. 设置费用信息 fareVo.setFinalFareStr(new BigDecimal(fareVo.getFinalFare()).setScale(2, RoundingMode.HALF_UP).toString()); if("0.00".equals(fareVo.getFinalFareStr())){ fareVo.setFinalFareStr("0.0"); } fareVo.setOriginalFare(new BigDecimal(fareVo.getOriginalFare()).setScale(2,RoundingMode.HALF_UP).doubleValue()); fareVo.setSystemDiscount(new BigDecimal(fareVo.getSystemDiscount()).setScale(2,RoundingMode.HALF_UP).doubleValue()); routeAndFareVo.setFareEstimate(fareVo); xp-robotaxi-map-boot/src/main/java/com/xiaopeng/map/controller/XpElectronicFenceController.java
@@ -2,6 +2,7 @@ import com.xiaopeng.api.dto.map.RouteAndFareDto; import com.xiaopeng.api.dto.operation.LonLatCityCodeDto; import com.xiaopeng.api.dto.operation.LonLatDto; import com.xiaopeng.api.vo.operation.XpElectronicFenceVo; import com.xiaopeng.common.core.domain.R; @@ -55,7 +56,7 @@ @ApiOperation(value = "判断当前位置是否在运营区域内",tags = {"小程序-判断当前位置是否在运营区域内"}) @PostMapping("/base/v1/mini-program/fence/check") public R<IsInOperationAreaVo> isInOperationArea(@RequestBody @Valid LonLatDto dto) { public R<IsInOperationAreaVo> isInOperationArea(@RequestBody @Valid LonLatCityCodeDto dto) { return R.ok(xpElectronicFenceAreaService.isInOperationArea(dto)); } xp-robotaxi-map-boot/src/main/java/com/xiaopeng/map/service/XpElectronicFenceAreaService.java
@@ -3,6 +3,7 @@ import com.baomidou.mybatisplus.extension.service.IService; import com.xiaopeng.api.dto.map.RouteAndFareDto; import com.xiaopeng.api.dto.operation.LonLatCityCodeDto; import com.xiaopeng.api.dto.operation.LonLatDto; import com.xiaopeng.api.model.operation.XpElectronicFenceArea; import com.xiaopeng.api.vo.operation.XpElectronicFenceVo; @@ -35,7 +36,7 @@ * @param dto * @return */ IsInOperationAreaVo isInOperationArea(LonLatDto dto); IsInOperationAreaVo isInOperationArea(LonLatCityCodeDto dto); /** xp-robotaxi-map-boot/src/main/java/com/xiaopeng/map/service/serviceimpl/XpElectronicFenceAreaServiceImpl.java
@@ -5,6 +5,7 @@ import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.xiaopeng.api.dto.map.RouteAndFareDto; import com.xiaopeng.api.dto.operation.LonLatCityCodeDto; import com.xiaopeng.api.dto.operation.LonLatDto; import com.xiaopeng.api.feignClient.operation.XpElectronicFenceClient; import com.xiaopeng.api.feignClient.operation.XpSystemSettingClient; @@ -204,14 +205,14 @@ * @return */ @Override public IsInOperationAreaVo isInOperationArea(LonLatDto dto) { public IsInOperationAreaVo isInOperationArea(LonLatCityCodeDto dto) { IsInOperationAreaVo vo = new IsInOperationAreaVo(); Map<String, String> geocode = gdMapGeocodingUtil.geocode(dto.getLongitude().toString(), dto.getLatitude().toString()); if(null == geocode){ throw new RuntimeException("经纬度转换城市code失败"); } String cityCode = geocode.get("cityCode"); // Map<String, String> geocode = gdMapGeocodingUtil.geocode(dto.getLongitude().toString(), dto.getLatitude().toString()); // if(null == geocode){ // throw new RuntimeException("经纬度转换城市code失败"); // } String cityCode = dto.getCityCode(); List<XpGeoFencingPolygon> xpGeoFencingPolygons = mongoTemplate.find(new Query(Criteria.where("cityCode").is(cityCode)), XpGeoFencingPolygon.class); for (XpGeoFencingPolygon polygon : xpGeoFencingPolygons) { if (polygon.getPoints() != null && polygon.getPoints().getCoordinates() != null) { xp-robotaxi-operation-boot/src/main/java/com/xiaopeng/operation/dto/NearestDto.java
@@ -17,4 +17,6 @@ @ApiModelProperty(value = "经度") @NotNull(message = "经度不能为空") private Double longitude; } xp-robotaxi-operation-boot/src/main/java/com/xiaopeng/operation/service/impl/XpPointServiceImpl.java
@@ -137,13 +137,15 @@ // 计算距离 小于的站点 double v = FastDistanceCalculator.distanceFastKm(dto.getLatitude(), dto.getLongitude(), xpPoint.getPointLat(), xpPoint.getPointLon()); if (v < orderDistance) { // m做判断 if ((v*1000) < orderDistance) { NearestNextVo nearestNextVo = new NearestNextVo(); nearestNextVo.setId(xpPoint.getId()); nearestNextVo.setName(xpPoint.getPointName()); nearestNextVo.setLatitude(xpPoint.getPointLat()); nearestNextVo.setLongitude(xpPoint.getPointLon()); nearestNextVo.setDistance(v); nearestNextVo.setDistance(new BigDecimal(v).setScale(2, RoundingMode.HALF_UP).doubleValue()); nearestNextVo.setAddress(xpPoint.getPointAddress()); nearestNextVo.setTime(xpPoint.getParkingTimeLimit()); nearestNextVo.setElectronicAreaId(xpPoint.getElectronicAreaId()); xp-robotaxi-operation-boot/src/main/java/com/xiaopeng/operation/utils/TaskOrderUtil.java
@@ -193,7 +193,7 @@ if (xpOrderR.getCode() == 200) { XpOrder xpOrder = xpOrderR.getData(); if (xpOrder.getStatus() == 1) { log.info("五轮推单结束,无车辆接单,执行取消订单 {}", orderNo); log.error("五轮推单结束,无车辆接单,执行取消订单 {}", orderNo); xpOrderClient.cancelOrder(orderId); //推送订单状态给乘客 SendMessageDTO dto = new SendMessageDTO(); @@ -242,7 +242,7 @@ for (int i = 0; i < count; i++) { //等到sleepTime秒钟 Thread.sleep(sleepTime * 1000); log.info("进入找车环节 单号 {} 第{}轮", orderNo, count++); // log.info("进入找车环节 单号 {} 第{}轮", orderNo, count++); // 根据距离找车 // 车多则根据配置找具体车数量 根据距离最近 // 更改 暂不限制数量 xp-robotaxi-order-boot/src/main/java/com/xiaopeng/order/service/impl/XpOrderServiceImpl.java
@@ -964,6 +964,9 @@ @Transactional public void cancelOrder(Long orderId, String uid) { XpOrder order = this.getById(orderId); if(order.getStatus()==0){ return; } if (order == null) { throw new ServiceException("订单不存在", I18nKeyConstant.ORDER_NOT_EXISTS); }