MexOrderService.php 3.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102
  1. <?php
  2. namespace App\Module\Mex\Services;
  3. use App\Module\Mex\Logic\MexOrderLogic;
  4. use App\Module\Mex\Models\MexOrder;
  5. use App\Module\Mex\Enums\OrderType;
  6. use App\Module\Mex\Enums\OrderStatus;
  7. use App\Module\Fund\Enums\FUND_CURRENCY_TYPE;
  8. /**
  9. * 农贸市场订单服务
  10. *
  11. * 提供订单相关的对外服务接口
  12. */
  13. class MexOrderService
  14. {
  15. /**
  16. * 创建卖出订单
  17. *
  18. * @param int $userId 用户ID
  19. * @param int $itemId 商品ID
  20. * @param int $quantity 数量
  21. * @param float $price 价格(信任Fund模块的数据处理)
  22. * @param FUND_CURRENCY_TYPE|null $currencyType 币种类型,默认使用钻石
  23. * @return array 操作结果
  24. */
  25. public static function createSellOrder(int $userId, int $itemId, int $quantity, float $price, ?FUND_CURRENCY_TYPE $currencyType = null): array
  26. {
  27. return MexOrderLogic::createSellOrder($userId, $itemId, $quantity, $price, $currencyType);
  28. }
  29. /**
  30. * 创建买入订单
  31. *
  32. * @param int $userId 用户ID
  33. * @param int $itemId 商品ID
  34. * @param int $quantity 数量
  35. * @param float $price 价格(信任Fund模块的数据处理)
  36. * @param FUND_CURRENCY_TYPE|null $currencyType 币种类型,默认使用钻石
  37. * @return array 操作结果
  38. */
  39. public static function createBuyOrder(int $userId, int $itemId, int $quantity, float $price, ?FUND_CURRENCY_TYPE $currencyType = null): array
  40. {
  41. return MexOrderLogic::createBuyOrder($userId, $itemId, $quantity, $price, $currencyType);
  42. }
  43. /**
  44. * 取消订单
  45. *
  46. * @param int $userId 用户ID
  47. * @param int $orderId 订单ID
  48. * @return array 操作结果
  49. */
  50. public static function cancelOrder(int $userId, int $orderId): array
  51. {
  52. try {
  53. return \Illuminate\Support\Facades\DB::transaction(function () use ($userId, $orderId) {
  54. return MexOrderLogic::cancelOrder($userId, $orderId);
  55. });
  56. } catch (\Exception $e) {
  57. return ['success' => false, 'message' => '取消订单失败:' . $e->getMessage()];
  58. }
  59. }
  60. /**
  61. * 获取用户订单列表
  62. *
  63. * @param int $userId 用户ID
  64. * @param int $page 页码
  65. * @param int $pageSize 每页数量
  66. * @return array 订单列表
  67. */
  68. public static function getUserOrders(int $userId, int $page = 1, int $pageSize = 20, $itemId = null): array
  69. {
  70. return MexOrderLogic::getUserOrders($userId, $page, $pageSize, $itemId);
  71. }
  72. /**
  73. * 获取订单详情
  74. *
  75. * @param int $userId 用户ID
  76. * @param int $orderId 订单ID
  77. * @return array|null 订单详情
  78. */
  79. public static function getOrderDetail(int $userId, int $orderId): ?array
  80. {
  81. return MexOrderLogic::getOrderDetail($userId, $orderId);
  82. }
  83. /**
  84. * 获取待撮合的买入订单
  85. *
  86. * @param int $itemId 商品ID
  87. * @param int $limit 限制数量
  88. * @return array 订单列表
  89. */
  90. public static function getPendingBuyOrders(int $itemId, int $limit = 100): array
  91. {
  92. return MexOrderLogic::getPendingBuyOrders($itemId, $limit);
  93. }
  94. }