package com.xiaopeng.order.controller;
import cn.hutool.core.util.IdUtil;
import com.xiaopeng.api.dto.automaticPilot.PushOrderDto;
import com.xiaopeng.api.dto.order.AddCruiseMissionDto;
import com.xiaopeng.api.feignClient.automaticPilot.OrderMissionClient;
import com.xiaopeng.api.model.order.XpCruiseOrder;
import com.xiaopeng.common.core.domain.R;
import com.xiaopeng.common.core.web.page.PageInfo;
import com.xiaopeng.order.service.IXpCruiseOrderService;
import com.xiaopeng.order.model.query.XpCruiseOrderPageQuery;
import com.xiaopeng.order.model.vo.XpCruiseOrderPageVO;
import com.xiaopeng.order.service.IXpOrderService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.RequiredArgsConstructor;
import org.springframework.context.annotation.Lazy;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
/**
*
* 订单 前端控制器
*
*
* @author mitao
* @since 2026-02-03
*/
@Validated
@RestController
@RequiredArgsConstructor(onConstructor_ = @Lazy)
public class XpCruiseOrderController {
private final IXpCruiseOrderService xpCruiseOrderService;
private final OrderMissionClient orderMissionClient;
private final IXpOrderService xpOrderService;
/**
* 查询并终止订单信息 返回id信息
*
* @param
*/
@PostMapping("/inner/cruiseOrder/updateCruiseOrder")
public R updateCruiseOrder(@RequestParam String vin) {
String id = xpCruiseOrderService.updateCruiseOrder(vin);
return R.ok(id);
}
/**
* 查询并完成订单信息 返回id信息
*
* @param
*/
@PostMapping("/inner/cruiseOrder/closeCruiseOrder")
public R closeCruiseOrder(@RequestParam String vin) {
String id = xpCruiseOrderService.closeCruiseOrder(vin);
return R.ok(id);
}
/**
* 查询订单信息
* @param orderId
* @return
*/
@PostMapping("/inner/cruiseOrder/getCruiseOrder")
public R getCruiseOrder(@RequestParam String orderId){
return R.ok(xpCruiseOrderService.getById(orderId));
}
/**
* 新增订单 下发命令
*
* @param
* @return 订单ID
*/
@PostMapping("/inner/cruiseOrder/addCruiseOrder")
public R addCruiseOrder(@RequestBody XpCruiseOrder order) {
order.setId("XU"+ IdUtil.fastUUID());
boolean save = xpCruiseOrderService.save(order);
if (!save) {
return R.fail("新增失败");
}
// 下发命令
PushOrderDto pushOrderDto = new PushOrderDto();
pushOrderDto.setVin(order.getVehicleVin());
pushOrderDto.setOrderId(order.getId());
orderMissionClient.pushOrder(pushOrderDto);
return R.ok(order.getId());
}
/**
* 巡游订单记录分页列表
*
* @param query 分页查询参数
* @return 分页结果
*/
@ApiOperation(value = "巡游订单记录分页列表", tags = {"管理后台-巡游订单"})
@PostMapping("/api/v1/cruise-order/pageList")
public R> pageList(@Validated @RequestBody XpCruiseOrderPageQuery query) {
PageInfo pageInfo = xpCruiseOrderService.pageList(query);
return R.ok(pageInfo);
}
/**
* 添加巡游任务 下发命令
* @param
* @param
*/
@PostMapping("/inner/cruiseOrder/addCruiseMission")
public R> addCruiseMission(@RequestBody AddCruiseMissionDto dto){
xpOrderService.addCruiseMission(dto.getVehicle(),dto.getOrder());
return R.ok();
}
}