Payment.php 3.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798
  1. <?php
  2. namespace App\Models;
  3. use Auth;
  4. use Illuminate\Database\Eloquent\Model;
  5. use Illuminate\Database\Eloquent\Relations\BelongsTo;
  6. /**
  7. * 支付单.
  8. *
  9. * @property int $id
  10. * @property string $trade_no 支付单号(本地订单号)
  11. * @property int $user_id 用户ID
  12. * @property int $order_id 本地订单ID
  13. * @property int $amount 金额,单位分
  14. * @property string|null $qr_code 支付二维码
  15. * @property string|null $url 支付链接
  16. * @property int $status 支付状态:-1-支付失败、0-等待支付、1-支付成功
  17. * @property \Illuminate\Support\Carbon $created_at 创建时间
  18. * @property \Illuminate\Support\Carbon $updated_at 最后更新时间
  19. * @property-read string $status_label
  20. * @property-read \App\Models\Order $order
  21. * @property-read \App\Models\User $user
  22. * @method static \Illuminate\Database\Eloquent\Builder|Payment newModelQuery()
  23. * @method static \Illuminate\Database\Eloquent\Builder|Payment newQuery()
  24. * @method static \Illuminate\Database\Eloquent\Builder|Payment query()
  25. * @method static \Illuminate\Database\Eloquent\Builder|Payment uid()
  26. * @method static \Illuminate\Database\Eloquent\Builder|Payment whereAmount($value)
  27. * @method static \Illuminate\Database\Eloquent\Builder|Payment whereCreatedAt($value)
  28. * @method static \Illuminate\Database\Eloquent\Builder|Payment whereId($value)
  29. * @method static \Illuminate\Database\Eloquent\Builder|Payment whereOrderId($value)
  30. * @method static \Illuminate\Database\Eloquent\Builder|Payment whereQrCode($value)
  31. * @method static \Illuminate\Database\Eloquent\Builder|Payment whereStatus($value)
  32. * @method static \Illuminate\Database\Eloquent\Builder|Payment whereTradeNo($value)
  33. * @method static \Illuminate\Database\Eloquent\Builder|Payment whereUpdatedAt($value)
  34. * @method static \Illuminate\Database\Eloquent\Builder|Payment whereUrl($value)
  35. * @method static \Illuminate\Database\Eloquent\Builder|Payment whereUserId($value)
  36. * @mixin \Eloquent
  37. */
  38. class Payment extends Model
  39. {
  40. protected $table = 'payment';
  41. protected $guarded = [];
  42. public function scopeUid($query)
  43. {
  44. return $query->whereUserId(Auth::id());
  45. }
  46. public function user(): BelongsTo
  47. {
  48. return $this->belongsTo(User::class);
  49. }
  50. public function order(): BelongsTo
  51. {
  52. return $this->belongsTo(Order::class);
  53. }
  54. public function close() // 关闭支付单
  55. {
  56. return $this->update(['status' => -1]);
  57. }
  58. public function complete() // 完成支付单
  59. {
  60. return $this->update(['status' => 1]);
  61. }
  62. public function getAmountAttribute($value)
  63. {
  64. return $value / 100;
  65. }
  66. public function setAmountAttribute($value)
  67. {
  68. return $this->attributes['amount'] = $value * 100;
  69. }
  70. // 订单状态
  71. public function getStatusLabelAttribute(): string
  72. {
  73. switch ($this->attributes['status']) {
  74. case -1:
  75. $status_label = '支付失败';
  76. break;
  77. case 1:
  78. $status_label = '支付成功';
  79. break;
  80. case 0:
  81. default:
  82. $status_label = '等待支付';
  83. }
  84. return $status_label;
  85. }
  86. }