FlashDeliveryUserController.java 3.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677
  1. package com.ruoyi.app.flashdelivery.controller;
  2. import com.ruoyi.app.flashdelivery.dto.*;
  3. import com.ruoyi.app.flashdelivery.service.FlashDeliveryApplicationService;
  4. import com.ruoyi.common.annotation.Anonymous;
  5. import com.ruoyi.common.core.controller.BaseController;
  6. import com.ruoyi.common.core.domain.AjaxResult;
  7. import com.ruoyi.system.utils.Auth;
  8. import com.ruoyi.system.utils.JwtUtil;
  9. import org.springframework.web.bind.annotation.*;
  10. /** 用户端闪送接口;用户身份始终从请求头 token 解析。 */
  11. @RestController
  12. @RequestMapping("/system/flashDelivery")
  13. @Anonymous
  14. public class FlashDeliveryUserController extends BaseController {
  15. private final FlashDeliveryApplicationService service;
  16. public FlashDeliveryUserController(FlashDeliveryApplicationService service) { this.service = service; }
  17. /** 获取当前启用的服务类型和公开计价摘要。 */
  18. @GetMapping("/home")
  19. @Auth
  20. public AjaxResult home(@RequestHeader String token) { return success(service.home()); }
  21. /** 根据取送坐标获取服务端实时报价。 */
  22. @PostMapping("/quote")
  23. @Auth
  24. public AjaxResult quote(@RequestHeader String token, @RequestBody FlashDeliveryQuoteRequest request) {
  25. userId(token);
  26. return success(service.quote(request));
  27. }
  28. /** 幂等创建闪送订单,客户端不能指定用户、距离或金额。 */
  29. @PostMapping("/orders")
  30. @Auth
  31. public AjaxResult create(@RequestHeader String token, @RequestBody FlashDeliveryCreateRequest request) {
  32. return success(service.create(userId(token), request));
  33. }
  34. /** 分页查询当前用户自己的闪送订单。 */
  35. @GetMapping("/orders")
  36. @Auth
  37. public AjaxResult orders(@RequestHeader String token,
  38. @RequestParam(defaultValue = "1") int pageNum,
  39. @RequestParam(defaultValue = "10") int pageSize,
  40. @RequestParam(required = false) String status,
  41. @RequestParam(required = false) String scene,
  42. @RequestParam(required = false) String serviceType) {
  43. return success(service.userOrders(userId(token), pageNum, pageSize, status, scene, serviceType));
  44. }
  45. /** 查询本人订单详情、履约图片和状态日志。 */
  46. @GetMapping("/orders/{id}")
  47. @Auth
  48. public AjaxResult detail(@RequestHeader String token, @PathVariable Long id) {
  49. return success(service.userDetail(userId(token), id));
  50. }
  51. /** 在待接单或已接单阶段取消本人订单。 */
  52. @PostMapping("/orders/{id}/cancel")
  53. @Auth
  54. public AjaxResult cancel(@RequestHeader String token, @PathVariable Long id,
  55. @RequestBody FlashDeliveryReasonRequest request) {
  56. service.userCancel(userId(token), id, request);
  57. return success();
  58. }
  59. /** 用户确认已经收到物品,将已送达订单置为已完成。 */
  60. @PostMapping("/orders/{id}/confirmReceipt")
  61. @Auth
  62. public AjaxResult confirmReceipt(@RequestHeader String token, @PathVariable Long id) {
  63. service.confirmReceipt(userId(token), id);
  64. return success();
  65. }
  66. private Long userId(String token) { return Long.valueOf(new JwtUtil().getusid(token)); }
  67. }