FileController.php 4.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143
  1. <?php
  2. /**
  3. * Created by PhpStorm.
  4. * User: leo
  5. * Date: 2018/2/24
  6. * Time: 下午12:48
  7. */
  8. namespace backendApi\modules\v1\controllers;
  9. use backendApi\modules\v1\models\Admin;
  10. use common\helpers\Cache;
  11. use common\helpers\Excel;
  12. use common\helpers\http\RemoteUploadApi;
  13. use common\models\ExcelImport;
  14. use common\models\Export;
  15. use common\models\ExportFile;
  16. use common\models\forms\UploadForm;
  17. use common\models\forms\WithdrawForm;
  18. use common\models\Uploads;
  19. use common\models\UserInfo;
  20. use common\models\Withdraw;
  21. use Yii;
  22. use common\helpers\Bonus;
  23. use common\helpers\bonus\BonusCalc;
  24. use common\helpers\Form;
  25. use common\models\FlowBonus;
  26. use common\models\forms\PeriodForm;
  27. use common\models\Period;
  28. use yii\web\UploadedFile;
  29. class FileController extends BaseController
  30. {
  31. public $modelClass = Uploads::class;
  32. public function behaviors() {
  33. $behaviors = parent::behaviors();
  34. //$behaviors['contentNegotiator']['formats']['text/html'] = Response::FORMAT_JSON;
  35. return $behaviors;
  36. }
  37. /**
  38. * 导出文件管理
  39. * @return mixed
  40. * @throws \yii\web\HttpException
  41. */
  42. public function actionExport(){
  43. $filter = $this->filterCondition([
  44. 'moduleName' => 'MODULE_NAME',
  45. 'createdAt' => 'CREATED_AT',
  46. 'EXPORT_NAME' => 'EXPORT_NAME',
  47. 'STARTED_AT' => 'STARTED_AT',
  48. 'ENDED_AT' => 'ENDED_AT',
  49. ]);
  50. $condition = $filter['condition'];
  51. $params = $filter['params'];
  52. $roleId = Yii::$app->user->userInfo['roleId'];
  53. if ( $roleId !== Yii::$app->params['superAdminRoleId'] ) {
  54. $condition .= ' AND ADMIN_ID=:ADMIN_ID';
  55. $params['ADMIN_ID'] = Yii::$app->user->id;
  56. }
  57. $data = Export::lists($condition, $params, [
  58. 'useSlaves' => true,
  59. 'orderBy' => 'CREATED_AT DESC',
  60. ]);
  61. if($data){
  62. foreach($data['list'] as $key => $value){
  63. $data['list'][$key]['ADMIN_NAME'] = Admin::getAdminNameById($value['ADMIN_ID']);
  64. }
  65. }
  66. // 全部模块
  67. $data['allModuleName'] = Yii::$app->params['exportModule'];
  68. return static::notice($data);
  69. }
  70. /**
  71. * 删除已导出文件
  72. * @return mixed
  73. * @throws \yii\db\Exception
  74. * @throws \yii\web\HttpException
  75. */
  76. public function actionExportDelete() {
  77. return false;
  78. return static::delete(Export::class, function ($selected) {
  79. // 通过Id查找文件并删除他们
  80. foreach ($selected as $id) {
  81. if ($fileData = Export::findOneAsArray('ID=:ID', [':ID' => $id])) {
  82. if ($fileData['REMOTE_URL']) {
  83. $remoteUploadApi = RemoteUploadApi::instance();
  84. $remoteUploadApi->delete($fileData['REMOTE_URL']);
  85. }
  86. if ($fileData['FILE_NAME']) {
  87. $file=$fileData['FILE_NAME'];
  88. $basePath = \Yii::getAlias('@backendApi') . __DS__ . 'web' . __DS__ . 'upload' . __DS__ . \Yii::$app->params['excelLocalDir'];
  89. if(strpos($file, $basePath) === false){
  90. $file = $basePath . __DS__ . ltrim($file , __DS__);
  91. }
  92. if(file_exists($file)) unlink($file);
  93. }
  94. }
  95. }
  96. }, null, true);
  97. }
  98. /**
  99. * 获取上传token
  100. * @return mixed
  101. * @throws \yii\base\Exception
  102. * @throws \yii\web\HttpException
  103. */
  104. public function actionToken(){
  105. $token = Cache::setUploadToken();
  106. return static::notice($token);
  107. }
  108. /**
  109. * 上传excel文件
  110. * @return mixed
  111. * @throws \yii\db\Exception
  112. * @throws \yii\web\HttpException
  113. */
  114. public function actionUploadExcel(){
  115. if(\Yii::$app->request->isPost){
  116. $formModel = new UploadForm();
  117. $formModel->scenario = 'excel';
  118. $formModel->file = UploadedFile::getInstanceByName('file');
  119. //$formModel->token = \Yii::$app->request->post('uploadToken');
  120. $formModel->token = \Yii::$app->request->request('uploadToken');
  121. $formModel->excelOption = \Yii::$app->request->request('excelOption');
  122. if($formModel->file && $uploads = $formModel->upload()){
  123. // 通过upload的id获取excelImport的Id
  124. $excelImport = ExcelImport::findOneAsArray('UPLOAD_ID=:UPLOAD_ID', [':UPLOAD_ID'=>$uploads['ID']], 'ID');
  125. return static::notice([
  126. 'fileName'=>$uploads['FILE_NAME'],
  127. 'excelImportId' => $excelImport['ID'],
  128. ]);
  129. } else {
  130. return static::notice(Form::formatErrorsForApi($formModel->getErrors()), 400);
  131. }
  132. }
  133. }
  134. }