MexOrder.php 3.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103
  1. <?php
  2. namespace App\Module\Mex\Models;
  3. use App\Module\Mex\Enums\OrderStatus;
  4. use App\Module\Mex\Enums\OrderType;
  5. use App\Module\Fund\Enums\FUND_CURRENCY_TYPE;
  6. use App\Module\GameItems\Models\Item;
  7. use Illuminate\Database\Eloquent\Relations\BelongsTo;
  8. use Illuminate\Database\Eloquent\Relations\HasMany;
  9. use UCore\ModelCore;
  10. /**
  11. * 农贸市场订单模型
  12. * field start
  13. * @property int $id 订单ID,主键
  14. * @property int $user_id 用户ID
  15. * @property int $item_id 商品ID,关联物品表
  16. * @property \App\Module\Fund\Enums\FUND_CURRENCY_TYPE $currency_type 币种类型,关联FUND_CURRENCY_TYPE枚举,默认2为钻石
  17. * @property \App\Module\Mex\Enums\OrderType $order_type 订单类型:BUY买入,SELL卖出
  18. * @property int $quantity 订单数量
  19. * @property float $price 订单价格,支持5位小数
  20. * @property float $total_amount 订单总金额
  21. * @property \App\Module\Mex\Enums\OrderStatus $status 订单状态:PENDING等待,COMPLETED完成,CANCELLED取消,FAILED失败
  22. * @property float $frozen_amount 冻结金额(买单使用)
  23. * @property int $completed_quantity 已成交数量
  24. * @property float $completed_amount 已成交金额
  25. * @property \Carbon\Carbon $created_at 创建时间
  26. * @property \Carbon\Carbon $updated_at 更新时间
  27. * @property \Carbon\Carbon $completed_at 完成时间
  28. * @property string $failed_reason 失败原因
  29. * @property string $last_match_failure_reason 最后无法成交原因,记录撮合过程中无法成交的具体原因
  30. * field end
  31. */
  32. class MexOrder extends ModelCore
  33. {
  34. protected $table = 'mex_orders';
  35. // attrlist start
  36. protected $fillable = [
  37. 'id',
  38. 'user_id',
  39. 'item_id',
  40. 'currency_type',
  41. 'order_type',
  42. 'quantity',
  43. 'price',
  44. 'total_amount',
  45. 'status',
  46. 'frozen_amount',
  47. 'completed_quantity',
  48. 'completed_amount',
  49. 'completed_at',
  50. 'failed_reason',
  51. 'last_match_failure_reason',
  52. ];
  53. // attrlist end
  54. protected $casts = [
  55. 'user_id' => 'integer',
  56. 'item_id' => 'integer',
  57. 'currency_type' => FUND_CURRENCY_TYPE::class,
  58. 'order_type' => OrderType::class,
  59. 'quantity' => 'integer',
  60. 'price' => 'decimal:5',
  61. 'total_amount' => 'decimal:5',
  62. 'status' => OrderStatus::class,
  63. 'frozen_amount' => 'decimal:5',
  64. 'completed_quantity' => 'integer',
  65. 'completed_amount' => 'decimal:5',
  66. 'completed_at' => 'datetime',
  67. ];
  68. /**
  69. * 获取关联的商品信息
  70. *
  71. * @return BelongsTo
  72. */
  73. public function item(): BelongsTo
  74. {
  75. return $this->belongsTo(Item::class, 'item_id');
  76. }
  77. /**
  78. * 获取作为买单的成交记录
  79. *
  80. * @return HasMany
  81. */
  82. public function buyTransactions(): HasMany
  83. {
  84. return $this->hasMany(MexTransaction::class, 'buy_order_id');
  85. }
  86. /**
  87. * 获取作为卖单的成交记录
  88. *
  89. * @return HasMany
  90. */
  91. public function sellTransactions(): HasMany
  92. {
  93. return $this->hasMany(MexTransaction::class, 'sell_order_id');
  94. }
  95. }