UnifiedOrderQueryController.java 3.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273
  1. package com.ruoyi.app.unifiedorder;
  2. import com.ruoyi.common.annotation.Anonymous;
  3. import com.ruoyi.common.core.controller.BaseController;
  4. import com.ruoyi.common.core.domain.AjaxResult;
  5. import com.ruoyi.common.utils.MessageUtils;
  6. import com.ruoyi.system.utils.Auth;
  7. import com.ruoyi.system.utils.JwtUtil;
  8. import org.springframework.web.bind.annotation.GetMapping;
  9. import org.springframework.web.bind.annotation.RequestHeader;
  10. import org.springframework.web.bind.annotation.RequestMapping;
  11. import org.springframework.web.bind.annotation.RequestParam;
  12. import org.springframework.web.bind.annotation.RestController;
  13. /** 用户端统一订单列表接口:外卖与闪送合并,tab 归类、来源筛选、游标滚动分页。 */
  14. @RestController
  15. @RequestMapping("/system/unifiedOrder")
  16. public class UnifiedOrderQueryController extends BaseController {
  17. private final UnifiedOrderQueryService service;
  18. public UnifiedOrderQueryController(UnifiedOrderQueryService service) {
  19. this.service = service;
  20. }
  21. /**
  22. * 统一订单列表。
  23. *
  24. * @param token 登录令牌
  25. * @param tab 归类 tab:all/unpaid/active/completed/cancelled/refund,默认 all
  26. * @param source 来源筛选:all/takeaway/dinein/pickup/flash,默认 all;takeaway 仅外送单,dinein=堂食,pickup=自取
  27. * @param cursor 上一页返回的游标,首页不传
  28. * @param size 每页条数,默认 10,服务端钳制 1-50
  29. */
  30. @GetMapping("/list")
  31. @Auth
  32. @Anonymous
  33. public AjaxResult list(@RequestHeader String token,
  34. @RequestParam(defaultValue = "all") String tab,
  35. @RequestParam(defaultValue = "all") String source,
  36. @RequestParam(required = false) String cursor,
  37. @RequestParam(defaultValue = "10") int size) {
  38. UnifiedOrderTab parsedTab = UnifiedOrderTab.fromCode(tab);
  39. if (parsedTab == null) {
  40. return error(MessageUtils.message("no.unifiedorder.param.invalid"));
  41. }
  42. OrderSource parsedSource = null;
  43. if (source != null && !source.isBlank() && !"all".equals(source)) {
  44. parsedSource = OrderSource.fromCode(source);
  45. if (parsedSource == null) {
  46. return error(MessageUtils.message("no.unifiedorder.param.invalid"));
  47. }
  48. }
  49. UnifiedCursor parsedCursor = null;
  50. if (cursor != null && !cursor.isBlank()) {
  51. try {
  52. parsedCursor = UnifiedCursor.parse(cursor);
  53. } catch (IllegalArgumentException e) {
  54. return error(MessageUtils.message("no.unifiedorder.cursor.invalid"));
  55. }
  56. }
  57. String userId = new JwtUtil().getusid(token);
  58. if (userId == null || userId.isBlank()) {
  59. return error(MessageUtils.message("no.unifiedorder.param.invalid"));
  60. }
  61. Long parsedUserId;
  62. try {
  63. parsedUserId = Long.valueOf(userId);
  64. } catch (NumberFormatException e) {
  65. return error(MessageUtils.message("no.unifiedorder.param.invalid"));
  66. }
  67. return success(service.query(parsedUserId, parsedTab, parsedSource, parsedCursor, size));
  68. }
  69. }