package com.xiaopeng.itinerary.controller;
|
|
import com.xiaopeng.api.dto.map.RouteAndFareDto;
|
import com.xiaopeng.api.dto.order.OrderChangeDto;
|
import com.xiaopeng.api.vo.automaticPilot.VehiclePosition;
|
import com.xiaopeng.api.vo.operation.RouteAndFareVo;
|
import com.xiaopeng.common.core.domain.R;
|
import com.xiaopeng.itinerary.service.ActiveOrderService;
|
import com.xiaopeng.itinerary.service.XpPricingService;
|
import com.xiaopeng.unifiedverification.interceptor.XpClientCheck;
|
import io.swagger.annotations.Api;
|
import io.swagger.annotations.ApiOperation;
|
import lombok.extern.slf4j.Slf4j;
|
import org.springframework.data.geo.Distance;
|
import org.springframework.data.geo.Metrics;
|
import org.springframework.data.geo.Point;
|
import org.springframework.data.mongodb.core.MongoTemplate;
|
import org.springframework.data.mongodb.core.query.Criteria;
|
import org.springframework.data.mongodb.core.query.Query;
|
import org.springframework.validation.annotation.Validated;
|
import org.springframework.web.bind.annotation.*;
|
|
import javax.annotation.Resource;
|
import javax.servlet.http.HttpServletRequest;
|
import javax.validation.Valid;
|
import java.util.List;
|
|
|
/**
|
* <p>
|
* 订单行程
|
* </p>
|
*/
|
|
@Slf4j
|
@RestController
|
@RequestMapping("")
|
@Api(tags = "行程中管理")
|
public class ActiveOrderController {
|
|
@Resource
|
private ActiveOrderService activeOrderService;
|
@Resource
|
private XpPricingService xpPricingService;
|
|
/**
|
* 在行程中修改目的地-获取路线和费用
|
* @param routeAndFareDto
|
* @param request
|
* @return
|
*/
|
@PostMapping("/api/v1/mini-program/activeOrder/route-and-fare")
|
@ApiOperation(value = "导航-获取路线和费用", tags = {"小程序-获取路线和费用"}, response = RouteAndFareVo.class)
|
@XpClientCheck(checkToken = false, checkOtpToken = true)
|
public R<List<RouteAndFareVo>> getRouteAndFare(@RequestBody @Valid RouteAndFareDto routeAndFareDto, HttpServletRequest request) {
|
if(null == routeAndFareDto.getOrderId()){
|
return R.fail("订单id不能为空");
|
}
|
// uid已通过拦截器otp校验,可以直接使用
|
String uid = request.getHeader("XP-Uid");
|
return R.ok(xpPricingService.getRouteAndFare(routeAndFareDto, uid));
|
}
|
|
/**
|
* 行程中 修改目的地 确认按钮
|
* 修改目的地,
|
* 1.重新确认路线
|
* 2.确认价格
|
*/
|
@ApiOperation(value = "行程中 修改目的地 确认按钮", notes = "", tags = {"小程序-行程中修改目的地"})
|
@PostMapping("/api/v1/mini-program/order/orderChange")
|
@XpClientCheck(checkToken = false, checkOtpToken = true)
|
public R<?> orderChange(@RequestBody @Validated OrderChangeDto dto, HttpServletRequest request) {
|
|
String uid = request.getHeader("XP-Uid");
|
activeOrderService.orderChange(dto, uid);
|
return R.ok();
|
}
|
|
/**
|
* 周围车辆点位查询
|
*/
|
@ApiOperation(value = "周围车辆点位查询", notes = "", tags = {"小程序-周围车辆点位查询"})
|
@GetMapping("/api/v1/mini-program/nearby/cars")
|
@XpClientCheck(checkToken = false, checkOtpToken = true)
|
public R<List<VehiclePosition>> carAround(@RequestParam double lon,@RequestParam double lat,@RequestParam double distanceMeters,HttpServletRequest request) {
|
|
String uid = request.getHeader("XP-Uid");
|
|
Point point = new Point(lon, lat);
|
Distance distance = new Distance(distanceMeters / 1000.0, Metrics.KILOMETERS);
|
Criteria criteria = Criteria.where("point")
|
.nearSphere(point)
|
.maxDistance(distance.getNormalizedValue());
|
Query query = new Query(criteria);
|
return R.ok(mongoTemplate.find(query, VehiclePosition.class));
|
}
|
@Resource
|
private MongoTemplate mongoTemplate;
|
|
|
}
|