DeviceTask.php 2.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071
  1. <?php
  2. namespace app\cron;
  3. use app\common\util\AppMsg;
  4. use think\Db;
  5. use yunwuxin\cron\Task;
  6. class DeviceTask extends Task
  7. {
  8. public function configure()
  9. {
  10. $this->everyMinute(); //每分钟执行一次
  11. }
  12. /**
  13. * 执行任务
  14. * @return mixed
  15. */
  16. protected function execute()
  17. {
  18. try{
  19. $this->device();
  20. $this->addDeviceTask();
  21. $this->deviceStart();
  22. $this->deviceTaskRemind();
  23. }catch (\Exception $e){
  24. trace($e->getMessage());
  25. }
  26. }
  27. //处理已超时设备台账任务,并从任务栏删除
  28. public function device(){
  29. set_time_limit(0);
  30. ini_set("memory_limit","1024M");
  31. (new \app\common\model\DeviceTask())->timer_action();
  32. }
  33. //近12个小时的设备台账任务加入到任务栏
  34. public function addDeviceTask(){
  35. (new \app\common\model\DeviceTask())->addDeviceTask();
  36. }
  37. // 设备台账任务将要开始提醒 每分钟执行一次
  38. public function deviceStart(){
  39. $curTime = date('Y-m-d H:i').':00';
  40. $users = Db::name('device_task_user')
  41. ->alias('ptu')
  42. ->join('device_task pt','pt.id = ptu.task_id')
  43. ->where('pt.del',0)
  44. ->where('pt.status',0)
  45. ->where('pt.start_time',$curTime)
  46. ->column('ptu.user_id');
  47. if($users){
  48. send_jpush($users,AppMsg::PUSH_DEVICE_TASK,'您有新的设备台账任务将要开始,请及时执行。');
  49. }
  50. }
  51. //提前五分钟提醒
  52. public function deviceTaskRemind(){
  53. $curStr= time() - 60*5;
  54. $date = date('Y-m-d H:i',$curStr).':00';
  55. $users = Db::name('device_task_user')
  56. ->alias('ptu')
  57. ->join('device_task pt','pt.id = ptu.task_id')
  58. ->where('pt.del',0)
  59. ->where('pt.status',0)
  60. ->where('pt.start_time',$date)
  61. ->column('ptu.user_id');
  62. send_jpush($users,AppMsg::PUSH_DEVICE_TASK,'您有新的设备维保任务将要开始,请及时执行。');
  63. }
  64. }