Invite.php 3.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384
  1. <?php
  2. namespace App\Models;
  3. use Auth;
  4. use Illuminate\Database\Eloquent\Model;
  5. use Illuminate\Database\Eloquent\Relations\BelongsTo;
  6. use Illuminate\Database\Eloquent\SoftDeletes;
  7. /**
  8. * 邀请码
  9. *
  10. * @property int $id
  11. * @property int|null $inviter_id 邀请ID
  12. * @property int|null $invitee_id 受邀ID
  13. * @property string $code 邀请码
  14. * @property int $status 邀请码状态:0-未使用、1-已使用、2-已过期
  15. * @property \Illuminate\Support\Carbon $dateline 有效期至
  16. * @property \Illuminate\Support\Carbon $created_at 创建时间
  17. * @property \Illuminate\Support\Carbon $updated_at 最后更新时间
  18. * @property \Illuminate\Support\Carbon|null $deleted_at 删除时间
  19. * @property-read string $status_label
  20. * @property-read \App\Models\User|null $invitee
  21. * @property-read \App\Models\User|null $inviter
  22. * @method static \Illuminate\Database\Eloquent\Builder|Invite newModelQuery()
  23. * @method static \Illuminate\Database\Eloquent\Builder|Invite newQuery()
  24. * @method static \Illuminate\Database\Query\Builder|Invite onlyTrashed()
  25. * @method static \Illuminate\Database\Eloquent\Builder|Invite query()
  26. * @method static \Illuminate\Database\Eloquent\Builder|Invite uid()
  27. * @method static \Illuminate\Database\Eloquent\Builder|Invite whereCode($value)
  28. * @method static \Illuminate\Database\Eloquent\Builder|Invite whereCreatedAt($value)
  29. * @method static \Illuminate\Database\Eloquent\Builder|Invite whereDateline($value)
  30. * @method static \Illuminate\Database\Eloquent\Builder|Invite whereDeletedAt($value)
  31. * @method static \Illuminate\Database\Eloquent\Builder|Invite whereId($value)
  32. * @method static \Illuminate\Database\Eloquent\Builder|Invite whereInviteeId($value)
  33. * @method static \Illuminate\Database\Eloquent\Builder|Invite whereInviterId($value)
  34. * @method static \Illuminate\Database\Eloquent\Builder|Invite whereStatus($value)
  35. * @method static \Illuminate\Database\Eloquent\Builder|Invite whereUpdatedAt($value)
  36. * @method static \Illuminate\Database\Query\Builder|Invite withTrashed()
  37. * @method static \Illuminate\Database\Query\Builder|Invite withoutTrashed()
  38. * @mixin \Eloquent
  39. */
  40. class Invite extends Model
  41. {
  42. use SoftDeletes;
  43. protected $table = 'invite';
  44. protected $dates = ['dateline', 'deleted_at'];
  45. protected $guarded = [];
  46. public function scopeUid($query)
  47. {
  48. return $query->whereInviterId(Auth::id());
  49. }
  50. public function inviter(): BelongsTo
  51. {
  52. return $this->belongsTo(User::class);
  53. }
  54. public function invitee(): BelongsTo
  55. {
  56. return $this->belongsTo(User::class);
  57. }
  58. public function getStatusLabelAttribute(): string
  59. {
  60. switch ($this->attributes['status']) {
  61. case 0:
  62. $status_label = '<span class="badge badge-success">'.trans('user.status.unused').'</span>';
  63. break;
  64. case 1:
  65. $status_label = '<span class="badge badge-danger">'.trans('user.status.used').'</span>';
  66. break;
  67. case 2:
  68. $status_label = '<span class="badge badge-default">'.trans('user.status.expired').'</span>';
  69. break;
  70. default:
  71. $status_label = '<span class="badge badge-default"> 未知 </span>';
  72. }
  73. return $status_label;
  74. }
  75. }