SysSchedule.php 2.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107
  1. <?php
  2. // +----------------------------------------------------------------------
  3. // | Niucloud-admin 企业快速开发的saas管理平台
  4. // +----------------------------------------------------------------------
  5. // | 官方网址:https://www.niucloud.com
  6. // +----------------------------------------------------------------------
  7. // | niucloud团队 版权所有 开源版本可自由商用
  8. // +----------------------------------------------------------------------
  9. // | Author: Niucloud Team
  10. // +----------------------------------------------------------------------
  11. namespace app\model\sys;
  12. use app\dict\schedule\ScheduleDict;
  13. use core\base\BaseModel;
  14. use think\db\Query;
  15. /**
  16. * 定时任务模型
  17. */
  18. class SysSchedule extends BaseModel
  19. {
  20. /**
  21. * 数据表主键
  22. * @var string
  23. */
  24. protected $pk = 'id';
  25. /**
  26. * 模型名称
  27. * @var string
  28. */
  29. protected $name = 'sys_schedule';
  30. protected $type = [
  31. 'last_time' => 'timestamp',
  32. 'next_time' => 'timestamp',
  33. 'update_time' => 'timestamp',
  34. ];
  35. // 设置json类型字段
  36. protected $json = ['time'];
  37. // 设置JSON数据返回数组
  38. protected $jsonAssoc = true;
  39. /**
  40. * 启用状态
  41. * @param $value
  42. * @param $data
  43. * @return mixed
  44. */
  45. public function getStatusNameAttr($value, $data)
  46. {
  47. if (empty($data['status'])) return '';
  48. return ScheduleDict::getStatus()[$data['status']] ?? '';
  49. }
  50. /**
  51. * 任务类型搜索器
  52. * @param Query $query
  53. * @param $value
  54. * @param $data
  55. */
  56. public function searchKeyAttr(Query $query, $value, $data)
  57. {
  58. if ($value) {
  59. $query->where('key', $value);
  60. }
  61. }
  62. /**
  63. * 状态搜索
  64. * @param Query $query
  65. * @param $value
  66. * @param $data
  67. * @return void
  68. */
  69. public function searchStatusAttr(Query $query, $value, $data)
  70. {
  71. if ($value != 'all') {
  72. $query->where('status', $value);
  73. }
  74. }
  75. /**
  76. * 执行时间搜索器
  77. * @param $query
  78. * @param $value
  79. * @param $data
  80. */
  81. public function searchLastTimeAttr($query, $value, $data)
  82. {
  83. $start_time = empty($value[0]) ? 0 : strtotime($value[0]);
  84. $end_time = empty($value[1]) ? 0 : strtotime($value[1]);
  85. if ($start_time > 0 && $end_time > 0) {
  86. $query->whereBetweenTime('last_time', $start_time, $end_time);
  87. } else if ($start_time > 0 && $end_time == 0) {
  88. $query->where([['last_time', '>=', $start_time]]);
  89. } else if ($start_time == 0 && $end_time > 0) {
  90. $query->where([['last_time', '<=', $end_time]]);
  91. }
  92. }
  93. }