Message.php 1.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374
  1. <?php
  2. namespace App\Repositories\Models\Base;
  3. use App\Jobs\Base\SendMessageJob;
  4. use App\Repositories\Models\Model;
  5. use Carbon\Carbon;
  6. use Illuminate\Support\Facades\Queue;
  7. class Message extends Model
  8. {
  9. /**
  10. * @var string
  11. */
  12. protected $table = 'base_messages';
  13. protected $fillable = [
  14. 'type',
  15. 'name',
  16. 'body',
  17. 'users',
  18. 'send_tag',
  19. 'send_time',
  20. 'send_type',
  21. 'result',
  22. 'admin_id',
  23. 'status',
  24. ];
  25. protected $casts = [
  26. 'users' => 'json',
  27. 'result' => 'json',
  28. 'send_type' => 'array',
  29. ];
  30. //等待发送中
  31. const SEND_STATUS_WAIT = 0;
  32. //发送中
  33. const SEND_STATUS_EXECUTE = 1;
  34. //发送完成
  35. const SEND_STATUS_COMPLETE = 2;
  36. //发送出错
  37. const SEND_STATUS_ERROR = 2;
  38. const SEND_TYPE_SITE = 1;
  39. const SEND_TYPE_MAIL = 2;
  40. const SEND_TYPE_SMS = 3;
  41. /**
  42. * The attributes excluded from the model's JSON form.
  43. *
  44. * @var array
  45. */
  46. protected $hidden = [];
  47. protected static function booted()
  48. {
  49. static::saved(function (Message $message) {
  50. if ($message->isDirty('send_tag')) {
  51. $minutes = Carbon::parse($message->send_time)->diffInMinutes(Carbon::now(), false);
  52. if ($minutes) {
  53. Queue::later(Carbon::now()->addMinutes($minutes), new SendMessageJob($message->send_tag));
  54. } else {
  55. Queue::push(new SendMessageJob($message->send_tag));
  56. }
  57. }
  58. });
  59. }
  60. public function admin()
  61. {
  62. return $this->belongsTo(Admin::class)->select(['id', 'name', 'username']);
  63. }
  64. }