| | |
| | | import com.webmanage.common.Result; |
| | | import com.webmanage.dto.CreateOrderDTO; |
| | | import com.webmanage.dto.OrderQueryDTO; |
| | | import com.webmanage.entity.OrderInfo; |
| | | import com.webmanage.service.OrderInfoService; |
| | | import com.webmanage.service.TokenService; |
| | | import com.webmanage.service.OrderNoService; |
| | | import com.webmanage.vo.OrderDetailVO; |
| | | import io.swagger.annotations.Api; |
| | |
| | | public class OrderController { |
| | | @Resource private OrderInfoService orderInfoService; |
| | | @Resource private OrderNoService orderNoService; |
| | | @Resource private TokenService tokenService; |
| | | |
| | | @PostMapping("/buyer/page") |
| | | @ApiOperation("分页查询买家订单列表") |
| | |
| | | } |
| | | |
| | | @PostMapping("/create") |
| | | @ApiOperation("创建订单(包含订单详情)") |
| | | public Result<Object> createOrder(@Valid @RequestBody CreateOrderDTO createOrderDTO) { |
| | | @ApiOperation("创建订单(包含订单详情),需在 Header 携带 Idempotency-Token 防重复提交") |
| | | public Result<OrderInfo> createOrder(@RequestHeader(value = "Idempotency-Token", required = false) String token, |
| | | @Valid @RequestBody CreateOrderDTO createOrderDTO) { |
| | | try { |
| | | String orderId = orderInfoService.createOrder(createOrderDTO); |
| | | return Result.success(orderId); |
| | | if (!tokenService.verifyAndConsume(token)) { |
| | | return Result.error("请求无效或重复提交,请刷新页面后重试"); |
| | | } |
| | | OrderInfo orderInfo = orderInfoService.createOrder(createOrderDTO); |
| | | return Result.success(orderInfo); |
| | | } catch (Exception e) { |
| | | log.error("创建订单失败", e); |
| | | return Result.error("创建订单失败:" + e.getMessage()); |
| | | } |
| | | } |
| | | |
| | | @GetMapping("/idempotency/token") |
| | | @ApiOperation("获取一次性防重复提交 Token") |
| | | public Result<Object> getIdempotencyToken(@RequestParam(required = false) Long userId) { |
| | | try { |
| | | String token = tokenService.generateToken(userId); |
| | | return Result.success("token生成",token); |
| | | } catch (Exception e) { |
| | | log.error("生成防重复提交 Token 失败", e); |
| | | return Result.error("生成防重复提交 Token 失败:" + e.getMessage()); |
| | | } |
| | | } |
| | | |
| | | @GetMapping("/no/new") |
| | | @ApiOperation("生成唯一订单号") |
| | | public Result<Object> generateOrderNo() { |