TaskFunc.php 2.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566
  1. <?php
  2. namespace common\libs\taskQueue;
  3. use common\helpers\Cache;
  4. use common\helpers\Date;
  5. use common\helpers\DingTalk;
  6. use common\models\forms\HistoryBonusForm;
  7. use common\models\TaskQueue;
  8. use SebastianBergmann\CodeCoverage\Report\PHP;
  9. class TaskFunc
  10. {
  11. /**
  12. * 初始化自动备份余额任务
  13. */
  14. public static function initAutoBakBalance(){
  15. // 查看数据库中是否存在未开始的备份奖金表的任务,如果没有就添加一个新任务
  16. if(!TaskQueue::find()->where('TYPE=:TYPE AND CONTENT=:CONTENT AND STARTED_AT>:STARTED_AT', [':TYPE'=>Queue::TYPE_FUNC, ':CONTENT'=>TaskFunc::class.'::autoBakBonusTable', ':STARTED_AT'=>Date::nowTime()])->asArray()->exists()){
  17. // 获取站点配置中的备份时间
  18. $config = Cache::getSystemConfig();
  19. $backupWeekDate = (int)$config['backupWeekDate']['VALUE'];
  20. $backupTime = (int)$config['backupTime']['VALUE'];
  21. Queue::instance()->addTask(Queue::TYPE_FUNC, TaskFunc::class.'::autoBakBonusTable', [], Queue::LOOP_TYPE_WEEK, $backupWeekDate.','.$backupTime.':00', 0);
  22. }
  23. }
  24. /**
  25. * 自动备份奖金表
  26. * @throws \yii\base\InvalidConfigException
  27. *
  28. */
  29. public static function autoBakBonusTable(){
  30. $form = new HistoryBonusForm();
  31. $form->taskAutoBackup();
  32. }
  33. /**
  34. * 测试队列任务
  35. */
  36. public static function testTaskQueue(){
  37. print_r('执行到测试任务'.PHP_EOL);
  38. }
  39. /**
  40. * 初始化自动发送钉钉提醒任务
  41. */
  42. public static function initAutoSendDingTalk() {
  43. // 查看数据库中是否存在未开始的任务,如果没有就添加一个新任务
  44. if(!TaskQueue::find()->where('TYPE=:TYPE AND CONTENT=:CONTENT AND STARTED_AT>:STARTED_AT', [':TYPE'=>Queue::TYPE_FUNC, ':CONTENT'=>TaskFunc::class.'::autoSendDingTalkTable', ':STARTED_AT'=>Date::nowTime()])->asArray()->exists()){
  45. // 获取站点配置中的备份时间
  46. $config = Cache::getSystemConfig();
  47. $sendDingTalkTime = $config['sendDingTalkTime']['VALUE'];
  48. Queue::instance()->addTask(Queue::TYPE_FUNC, TaskFunc::class.'::autoSendDingTalkTable', [], Queue::LOOP_TYPE_DAY, $sendDingTalkTime, 0);
  49. }
  50. }
  51. /**
  52. * 自动送钉钉提醒
  53. */
  54. public static function autoSendDingTalkTable() {
  55. DingTalk::sendNotice('(NG)提醒:自动发送...');
  56. }
  57. }