FileController.php 6.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174
  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. $data['allModuleName'] = $this->returnAllModuleNameTranslate(Yii::$app->params['exportModule']);
  69. return static::notice($data);
  70. }
  71. /**
  72. * 多语言
  73. */
  74. public function returnAllModuleNameTranslate($allModuleName = []){
  75. foreach($allModuleName as $k=>$v){
  76. switch ($k)
  77. {
  78. case 'shop':
  79. $allModuleName[$k]['label'] = \Yii::t('ctx', 'mallManagement');
  80. break;
  81. case 'user':
  82. $allModuleName[$k]['label'] = Yii::t('ctx', 'memberManagement');
  83. break;
  84. case 'atlas':
  85. $allModuleName[$k]['label'] = Yii::t('ctx', 'networkChart');
  86. break;
  87. case 'reconsume':
  88. $allModuleName[$k]['label'] = Yii::t('ctx', 'resaleManagement');
  89. break;
  90. case 'bonus':
  91. $allModuleName[$k]['label'] = Yii::t('ctx', 'bonusManagement');
  92. break;
  93. case 'finance':
  94. $allModuleName[$k]['label'] = Yii::t('ctx', 'financialManagement');
  95. break;
  96. }
  97. }
  98. return $allModuleName;
  99. }
  100. /**
  101. * 删除已导出文件
  102. * @return mixed
  103. * @throws \yii\db\Exception
  104. * @throws \yii\web\HttpException
  105. */
  106. public function actionExportDelete() {
  107. return false;
  108. return static::delete(Export::class, function ($selected) {
  109. // 通过Id查找文件并删除他们
  110. foreach ($selected as $id) {
  111. if ($fileData = Export::findOneAsArray('ID=:ID', [':ID' => $id])) {
  112. if ($fileData['REMOTE_URL']) {
  113. $remoteUploadApi = RemoteUploadApi::instance();
  114. $remoteUploadApi->delete($fileData['REMOTE_URL']);
  115. }
  116. if ($fileData['FILE_NAME']) {
  117. $file=$fileData['FILE_NAME'];
  118. $basePath = \Yii::getAlias('@backendApi') . __DS__ . 'web' . __DS__ . 'upload' . __DS__ . \Yii::$app->params['excelLocalDir'];
  119. if(strpos($file, $basePath) === false){
  120. $file = $basePath . __DS__ . ltrim($file , __DS__);
  121. }
  122. if(file_exists($file)) unlink($file);
  123. }
  124. }
  125. }
  126. }, null, true);
  127. }
  128. /**
  129. * 获取上传token
  130. * @return mixed
  131. * @throws \yii\base\Exception
  132. * @throws \yii\web\HttpException
  133. */
  134. public function actionToken(){
  135. $token = Cache::setUploadToken();
  136. return static::notice($token);
  137. }
  138. /**
  139. * 上传excel文件
  140. * @return mixed
  141. * @throws \yii\db\Exception
  142. * @throws \yii\web\HttpException
  143. */
  144. public function actionUploadExcel(){
  145. if(\Yii::$app->request->isPost){
  146. $formModel = new UploadForm();
  147. $formModel->scenario = 'excel';
  148. $formModel->file = UploadedFile::getInstanceByName('file');
  149. //$formModel->token = \Yii::$app->request->post('uploadToken');
  150. $formModel->token = \Yii::$app->request->request('uploadToken');
  151. $formModel->excelOption = \Yii::$app->request->request('excelOption');
  152. if($formModel->file && $uploads = $formModel->upload()){
  153. // 通过upload的id获取excelImport的Id
  154. $excelImport = ExcelImport::findOneAsArray('UPLOAD_ID=:UPLOAD_ID', [':UPLOAD_ID'=>$uploads['ID']], 'ID');
  155. return static::notice([
  156. 'fileName'=>$uploads['FILE_NAME'],
  157. 'excelImportId' => $excelImport['ID'],
  158. ]);
  159. } else {
  160. return static::notice(Form::formatErrorsForApi($formModel->getErrors()), 400);
  161. }
  162. }
  163. }
  164. }