content: package com.sky.controller.user;
  
  import com.sky.dto.OrdersPaymentDTO;
  import com.sky.dto.OrdersSubmitDTO;
  import com.sky.result.PageResult;
  import com.sky.result.Result;
  import com.sky.service.OrderService;
  import com.sky.vo.OrderPaymentVO;
  import com.sky.vo.OrderSubmitVO;
  import com.sky.vo.OrderVO;
  import lombok.extern.slf4j.Slf4j;
  import org.springframework.beans.factory.annotation.Autowired;
  import org.springframework.web.bind.annotation.*;
  
  @RestController("userOrderController")
  @RequestMapping("/user/order")
  @Slf4j
  public class OrderController {
  
      @Autowired
      private OrderService orderService;
  
      /**
       * 用户下单
       * 
       * @param ordersSubmitDTO
       * @return
       */
      @PostMapping("/submit")
      public Result<OrderSubmitVO> submit(@RequestBody OrdersSubmitDTO ordersSubmitDTO) {
          log.info("用户下单，ordersSubmitDTO={}", ordersSubmitDTO);
          OrderSubmitVO orderSubmitVO = orderService.submitOrder(ordersSubmitDTO);
          return Result.success(orderSubmitVO);
      }
  
      /**
       * 订单支付
       *
       * @param ordersPaymentDTO
       * @return
       */
      @PutMapping("/payment")
      public Result<OrderPaymentVO> payment(@RequestBody OrdersPaymentDTO ordersPaymentDTO) throws Exception {
          log.info("订单支付：{}", ordersPaymentDTO);
          OrderPaymentVO orderPaymentVO = orderService.payment(ordersPaymentDTO);
          log.info("生成预支付交易单：{}", orderPaymentVO);
          return Result.success(orderPaymentVO);
      }
  
      /**
       * 查询历史订单
       * 
       * @param page
       * @param pageSize
       * @param status
       * @return
       */
      @GetMapping("/historyOrders")
      public Result<PageResult<OrderVO>> page(int page, int pageSize, Integer status) {
          log.info("查询历史订单，page={},pageSize={},status={}", page, pageSize, status);
          PageResult<OrderVO> pageResult = orderService.pageQueryByUser(page, pageSize, status);
          return Result.success(pageResult);
      }
  
      /**
       * 查询订单详情
       *
       * @param id
       * @return
       */
      @GetMapping("/orderDetail/{id}")
      public Result<OrderVO> details(@PathVariable("id") Long id) {
          OrderVO orderVO = orderService.details(id);
          return Result.success(orderVO);
      }
  
      /**
       * 用户取消订单
       *
       * @return
       */
      @PutMapping("/cancel/{id}")
      public Result<String> cancel(@PathVariable("id") Long id) throws Exception {
          orderService.userCancelById(id);
          return Result.success();
      }
  
      /**
       * 再来一单
       *
       * @param id
       * @return
       */
      @PostMapping("/repetition/{id}")
      public Result<String> repetition(@PathVariable Long id) {
          orderService.repetition(id);
          return Result.success();
      }
  
      /**
       * 用户催单
       *
       * @param id
       * @return
       */
      @GetMapping("/reminder/{id}")
      public Result<String> reminder(@PathVariable("id") Long id) {
          orderService.reminder(id);
          return Result.success();
      }
  
  }
  