OpenDeliveryOrderController.java
1.97 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
package com.diligrp.rider.controller;
import com.diligrp.rider.common.result.Result;
import com.diligrp.rider.dto.DeliveryOrderCreateDTO;
import com.diligrp.rider.service.DeliveryOrderService;
import com.diligrp.rider.vo.DeliveryOrderCreateVO;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.validation.Valid;
import lombok.RequiredArgsConstructor;
import org.springframework.web.bind.annotation.*;
/**
* 开放平台:配送订单接口
* 路径 /api/open/** 由 OpenApiInterceptor 做签名鉴权
* X-App-Key 会由拦截器写入 request attribute
*/
@RestController
@RequestMapping("/api/open/delivery/order")
@RequiredArgsConstructor
public class OpenDeliveryOrderController {
private final DeliveryOrderService deliveryOrderService;
/**
* 创建配送订单(推单)
* 外部系统在自己完成支付后调用此接口,中台接管配送
*/
@PostMapping("/create")
public Result<DeliveryOrderCreateVO> create(
@Valid @RequestBody DeliveryOrderCreateDTO dto,
HttpServletRequest request) {
String appKey = request.getHeader("X-App-Key");
return Result.success(deliveryOrderService.create(appKey, dto));
}
/**
* 查询配送订单状态
* 接入方可轮询此接口跟踪配送进度
*/
@GetMapping("/query")
public Result<DeliveryOrderCreateVO> query(
@RequestParam String outOrderNo,
HttpServletRequest request) {
String appKey = request.getHeader("X-App-Key");
return Result.success(deliveryOrderService.queryByOutOrderNo(appKey, outOrderNo));
}
/**
* 取消配送订单
* 仅 status=2(待接单)可取消
*/
@PostMapping("/cancel")
public Result<Void> cancel(
@RequestParam String outOrderNo,
HttpServletRequest request) {
String appKey = request.getHeader("X-App-Key");
deliveryOrderService.cancel(appKey, outOrderNo);
return Result.success();
}
}