package com.xiaopeng.order.controller;
|
|
|
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
import com.xiaopeng.api.dto.account.UcUserInfo;
|
import com.xiaopeng.api.dto.vehicleConvoy.ServiceVehicleListDto;
|
import com.xiaopeng.api.feignClient.account.UserResourcesClient;
|
import com.xiaopeng.api.feignClient.vehicleConvoy.XpVehicleClient;
|
import com.xiaopeng.api.model.order.XpOrder;
|
import com.xiaopeng.api.model.vehicleConvoy.XpVehicle;
|
import com.xiaopeng.common.core.domain.R;
|
import com.xiaopeng.common.core.utils.StringUtils;
|
import com.xiaopeng.order.dto.UserOrderListDto;
|
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 io.swagger.annotations.ApiImplicitParam;
|
import io.swagger.annotations.ApiOperation;
|
import org.springframework.web.bind.annotation.*;
|
|
import javax.annotation.Resource;
|
import java.util.Arrays;
|
import java.util.List;
|
import java.util.stream.Collectors;
|
|
/**
|
* 提供三方客服系统接口
|
*/
|
@RestController
|
@RequestMapping("/logan/rt/customerService")
|
public class CustomerServiceController {
|
|
@Resource
|
private XpVehicleClient xpVehicleClient;
|
|
@Resource
|
private IXpOrderService xpOrderService;
|
|
@Resource
|
private UserResourcesClient userResourcesClient;
|
|
|
/**
|
* 1. 判断 VIN 是否为 robotaxi 车辆
|
* @param vim
|
* @return
|
*/
|
@GetMapping("/isRobotaxi/{vim}")
|
@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);
|
}
|
return R.ok(false);
|
}
|
|
|
/**
|
* 2. 根据 VIN 查询在途/最近订单客户手机号
|
* @param vim
|
* @return
|
*/
|
@GetMapping("/getServiceOrder/{vim}")
|
@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码不存在");
|
}
|
XpOrder one = xpOrderService.getOne(new QueryWrapper<XpOrder>().eq("vehicle_id", xpVehicle.getId())
|
.eq("is_deleted", 0).last(" order by create_time desc limit 1"));
|
if(null == one){
|
return R.ok(new ServiceOrderVo());
|
}
|
ServiceOrderVo vo = new ServiceOrderVo();
|
vo.setOrderId(one.getId());
|
UcUserInfo ucUserInfo = userResourcesClient.getBaseUserByUid(one.getAppUserId().toString());
|
vo.setCustomerPhone(null != ucUserInfo ? ucUserInfo.getMobile() : null);
|
vo.setHasActiveOrder(!Arrays.asList(0, 8, 9, 10).contains(one.getStatus()));
|
return R.ok(vo);
|
}
|
|
|
/**
|
* 3. 获取当前在运营车辆列表
|
* @param dto
|
* @return
|
*/
|
@PostMapping("/getServiceVehicleList")
|
@ApiOperation(value = "获取当前在运营车辆列表", notes = "客服系统对接")
|
public R<List<ServiceVehicleListVo>> getServiceVehicleList(@RequestBody ServiceVehicleListDto dto){
|
R<List<XpVehicle>> serviceVehicleList = xpVehicleClient.getServiceVehicleList(dto);
|
if(serviceVehicleList.getCode() != 200){
|
return R.fail(serviceVehicleList.getMsg());
|
}
|
List<ServiceVehicleListVo> collect = serviceVehicleList.getData().stream().map(xpVehicle -> {
|
ServiceVehicleListVo vo = new ServiceVehicleListVo();
|
vo.setVim(xpVehicle.getVehicleVin());
|
vo.setPlateNumber(xpVehicle.getPlateNumber());
|
return vo;
|
}).collect(Collectors.toList());
|
return R.ok(collect);
|
}
|
|
|
/**
|
* 4. 根据 UID 查询用户是否有 RT 订单 & 订单列表
|
* @param dto
|
* @return
|
*/
|
@PostMapping("/getUserOrderList")
|
@ApiOperation(value = "根据 UID 查询用户是否有 RT 订单 & 订单列表", notes = "客服系统对接")
|
public R<List<UserOrderListVo>> getUserOrderList(@RequestBody UserOrderListDto dto){
|
List<UserOrderListVo> userOrderList = xpOrderService.getUserOrderList(dto);
|
return R.ok(userOrderList);
|
}
|
|
|
/**
|
* 5. 根据订单号查询订单详情
|
* @param orderId
|
* @return
|
*/
|
@GetMapping("/getOrderDetail/{orderId}")
|
@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));
|
}
|
}
|