From 90b79ea008ef6bf7a9baac1f34fd81e3fb180d34 Mon Sep 17 00:00:00 2001
From: puzhibing <393733352@qq.com>
Date: 星期六, 18 四月 2026 19:58:24 +0800
Subject: [PATCH] 新增加客服系统接口
---
xp-robotaxi-order-boot/src/main/java/com/xiaopeng/order/controller/CustomerServiceController.java | 66 ++++++++++++++++++++++++++-------
1 files changed, 52 insertions(+), 14 deletions(-)
diff --git a/xp-robotaxi-order-boot/src/main/java/com/xiaopeng/order/controller/CustomerServiceController.java b/xp-robotaxi-order-boot/src/main/java/com/xiaopeng/order/controller/CustomerServiceController.java
index ad80371..9890585 100644
--- a/xp-robotaxi-order-boot/src/main/java/com/xiaopeng/order/controller/CustomerServiceController.java
+++ b/xp-robotaxi-order-boot/src/main/java/com/xiaopeng/order/controller/CustomerServiceController.java
@@ -1,6 +1,7 @@
package com.xiaopeng.order.controller;
+import com.alibaba.fastjson2.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.xiaopeng.api.dto.account.UcUserInfo;
import com.xiaopeng.api.dto.vehicleConvoy.ServiceVehicleListDto;
@@ -8,16 +9,18 @@
import com.xiaopeng.api.feignClient.vehicleConvoy.XpVehicleClient;
import com.xiaopeng.api.model.order.XpOrder;
import com.xiaopeng.api.model.vehicleConvoy.XpVehicle;
+import com.xiaopeng.api.vo.automaticPilot.VehiclePosition;
import com.xiaopeng.common.core.domain.R;
import com.xiaopeng.common.core.utils.StringUtils;
import com.xiaopeng.order.dto.UserOrderListDto;
+import com.xiaopeng.order.mangodb.model.OrderTrajectory;
import com.xiaopeng.order.service.IXpOrderService;
-import com.xiaopeng.order.vo.OrderInfoVo;
-import com.xiaopeng.order.vo.ServiceOrderVo;
-import com.xiaopeng.order.vo.ServiceVehicleListVo;
-import com.xiaopeng.order.vo.UserOrderListVo;
+import com.xiaopeng.order.vo.*;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiOperation;
+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.web.bind.annotation.*;
import javax.annotation.Resource;
@@ -41,6 +44,9 @@
@Resource
private UserResourcesClient userResourcesClient;
+ @Resource
+ private MongoTemplate mongoTemplate;
+
/**
* 1. 判断 VIN 是否为 robotaxi 车辆
@@ -51,9 +57,6 @@
@ApiOperation(value = "判断 VIN 是否为 robotaxi 车辆", notes = "客服系统对接")
@ApiImplicitParam(name = "vim", value = "VIN码", required = true, dataType = "string", paramType = "path")
public R<Boolean> isRobotaxi(@PathVariable String vim){
- if(StringUtils.isEmpty(vim)){
- return R.fail("VIM码不能为空");
- }
XpVehicle xpVehicle = xpVehicleClient.findByVehicleVin(vim).getData();
if(null != xpVehicle){
return R.ok(true);
@@ -71,12 +74,9 @@
@ApiOperation(value = "根据 VIN 查询在途/最近订单客户手机号", notes = "客服系统对接")
@ApiImplicitParam(name = "vim", value = "VIN码", required = true, dataType = "string", paramType = "path")
public R<ServiceOrderVo> getServiceOrder(@PathVariable String vim){
- if(StringUtils.isEmpty(vim)){
- return R.fail("VIM码不能为空");
- }
XpVehicle xpVehicle = xpVehicleClient.findByVehicleVin(vim).getData();
if(null == xpVehicle){
- return R.fail("VIM码不存在");
+ return R.ok(new ServiceOrderVo());
}
XpOrder one = xpOrderService.getOne(new QueryWrapper<XpOrder>().eq("vehicle_id", xpVehicle.getId())
.eq("is_deleted", 0).last(" order by create_time desc limit 1"));
@@ -136,9 +136,47 @@
@ApiOperation(value = "根据订单号查询订单详情", notes = "客服系统对接")
@ApiImplicitParam(name = "orderId", value = "订单ID", required = true, dataType = "Long", paramType = "path")
public R<OrderInfoVo> getOrderDetail(@PathVariable Long orderId){
- if(null == orderId){
- return R.fail("订单ID不能为空");
- }
return R.ok(xpOrderService.getOrderInfo(orderId));
}
+
+
+ /**
+ * 7. 根据订单号查询实际行驶路径
+ * @param orderId
+ * @return
+ */
+ @GetMapping("/getOrderHistoryTrajectory/{orderId}")
+ @ApiOperation(value = "根据订单号查询实际行驶路径", notes = "客服系统对接")
+ @ApiImplicitParam(name = "orderId", value = "订单ID", required = true, dataType = "Long", paramType = "path")
+ public R<List<TrajectoryVo>> getOrderHistoryTrajectory(@PathVariable Long orderId){
+ List<OrderTrajectory> orderTrajectoryList = mongoTemplate.find(Query.query(Criteria.where("orderId").is(orderId)), OrderTrajectory.class);
+ List<TrajectoryVo> collect = orderTrajectoryList.stream().map(trajectory -> {
+ String[] split = trajectory.getLocation().split(",");
+ TrajectoryVo jsonObject = new TrajectoryVo();
+ jsonObject.setLng(Double.parseDouble(split[0]));
+ jsonObject.setLat(Double.parseDouble(split[1]));
+ return jsonObject;
+ }).collect(Collectors.toList());
+ return R.ok(collect);
+ }
+
+
+ /**
+ * 10. 根据 VIN 查询剩余电量及预估续航
+ * @param vin
+ * @return
+ */
+ @GetMapping("/getVehicleRange/{vin}")
+ @ApiOperation(value = "根据 VIN 查询剩余电量及预估续航", notes = "客服系统对接")
+ @ApiImplicitParam(name = "vin", value = "vin码", required = true, dataType = "string", paramType = "path")
+ public R<VehicleRangeVo> getVehicleRange(@PathVariable String vin){
+ VehiclePosition vehiclePositions = mongoTemplate.findOne(Query.query(Criteria.where("vin").is(vin)), VehiclePosition.class);
+ if(null == vehiclePositions){
+ return R.ok(new VehicleRangeVo());
+ }
+ VehicleRangeVo vo = new VehicleRangeVo();
+ vo.setBatteryLevel(vehiclePositions.getCurrentElectricity());
+ vo.setEstimatedRange(Double.valueOf(vehiclePositions.getMileageRange()));
+ return R.ok(vo);
+ }
}
--
Gitblit v1.7.1