MailerController.php 2.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677
  1. <?php
  2. namespace app\commands;
  3. use yii\console\Controller;
  4. use app\modules\doc\models\DocReal;
  5. use app\modules\doc\models\DocRealData;
  6. use app\modules\doc\models\DocMail;
  7. use app\common\components\Emailer;
  8. use Yii;
  9. class MailerController extends Controller
  10. {
  11. public $logFile;
  12. public function init()
  13. {
  14. parent::init();
  15. $this->logFile = Yii::getAlias('@runtime').DIRECTORY_SEPARATOR.'logs'.DIRECTORY_SEPARATOR.'mailer_'.date("Ymd").'.log';
  16. }
  17. public function actionIndex()
  18. {
  19. $task = DocMail::find()->where("status=0")->orderBy(['id'=>SORT_ASC])->one();
  20. if(empty($task))return;
  21. $doc = DocReal::findOne($task->doc_id);
  22. $docData = DocRealData::findOne($task->doc_id);
  23. //处理文件
  24. $docConfigResult = Yii::$app->db->createCommand("select * from {{%config}} where name='doc'")->queryOne();
  25. $docConfig = string2array($docConfigResult['value']);
  26. $file = sys_auth($docData->file,'DECODE',$docData->hash);
  27. if($doc->doc_type==1)
  28. {
  29. $tempFile = locateFile(getFileUrl($file),'download');
  30. $file = initBigfileTorent($tempFile,$doc,$docConfig);
  31. $bigFileTip = '【下载说明】';
  32. }
  33. else if($doc->doc_type==3)//网盘资源
  34. {
  35. $file = initPanfile($doc,$docConfig);
  36. $bigFileTip = '【提取说明】';
  37. }
  38. else if($doc->doc_type==2)//合辑文档
  39. {
  40. $allsize = 0;
  41. $docIds = Yii::$app->db->createCommand("SELECT doc_id FROM {{%doc_col}} where col_id=".$doc->id)->queryColumn();
  42. $resultList = DocReal::findAll($docIds);
  43. foreach($resultList as $result)
  44. {
  45. $allsize += $result->filesize;
  46. $contentList[] = array('title'=>$result->title,'ext'=>$result->ext,'file'=>sys_auth($result->data->file,'DECODE',$result->data->hash));
  47. }
  48. $tempFile = locateColFile($doc,$contentList);
  49. $file = initBigfileTorent($tempFile,$doc,$docConfig);
  50. $bigFileTip = '【下载说明】';
  51. }
  52. $msg = https_request($file);
  53. $mailer = new Emailer();
  54. if($mailer->send('download',$task->email,['title'=>$doc->title,'msg'=>$msg]))
  55. {
  56. $task->status = 1;
  57. $task->send_time = time();
  58. $task->save();
  59. $this->_saveLog($task->email,$doc);
  60. }
  61. }
  62. //写日志
  63. private function _saveLog($email,$doc)
  64. {
  65. file_put_contents($this->logFile,$email."(".$doc->title."-".get_date(time(),'Y-m-d H:i:s').")\r\n",FILE_APPEND);
  66. }
  67. }