FileController.php 6.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175
  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\helpers\Tool;
  14. use common\models\ExcelImport;
  15. use common\models\Export;
  16. use common\models\ExportFile;
  17. use common\models\forms\UploadForm;
  18. use common\models\forms\WithdrawForm;
  19. use common\models\Uploads;
  20. use common\models\UserInfo;
  21. use common\models\Withdraw;
  22. use Yii;
  23. use common\helpers\Bonus;
  24. use common\helpers\bonus\BonusCalc;
  25. use common\helpers\Form;
  26. use common\models\FlowBonus;
  27. use common\models\forms\PeriodForm;
  28. use common\models\Period;
  29. use yii\web\UploadedFile;
  30. class FileController extends BaseController
  31. {
  32. public $modelClass = Uploads::class;
  33. public function behaviors() {
  34. $behaviors = parent::behaviors();
  35. //$behaviors['contentNegotiator']['formats']['text/html'] = Response::FORMAT_JSON;
  36. return $behaviors;
  37. }
  38. /**
  39. * 导出文件管理
  40. * @return mixed
  41. * @throws \yii\web\HttpException
  42. */
  43. public function actionExport(){
  44. $filter = $this->filterCondition([
  45. 'moduleName' => 'MODULE_NAME',
  46. 'createdAt' => 'CREATED_AT',
  47. 'EXPORT_NAME' => 'EXPORT_NAME',
  48. 'STARTED_AT' => 'STARTED_AT',
  49. 'ENDED_AT' => 'ENDED_AT',
  50. ]);
  51. $condition = $filter['condition'];
  52. $params = $filter['params'];
  53. $roleId = Yii::$app->user->userInfo['roleId'];
  54. if ( $roleId !== Yii::$app->params['superAdminRoleId'] ) {
  55. $condition .= ' AND ADMIN_ID=:ADMIN_ID';
  56. $params['ADMIN_ID'] = Yii::$app->user->id;
  57. }
  58. $data = Export::lists($condition, $params, [
  59. 'useSlaves' => true,
  60. 'orderBy' => 'CREATED_AT DESC',
  61. ]);
  62. if($data){
  63. foreach($data['list'] as $key => $value){
  64. $data['list'][$key]['ADMIN_NAME'] = Admin::getAdminNameById($value['ADMIN_ID']);
  65. }
  66. }
  67. // 全部模块
  68. //$data['allModuleName'] = Yii::$app->params['exportModule'];
  69. $data['allModuleName'] = $this->returnAllModuleNameTranslate(Tool::paramConvert(\Yii::$app->params['exportModule']));
  70. return static::notice($data);
  71. }
  72. /**
  73. * 多语言
  74. */
  75. public function returnAllModuleNameTranslate($allModuleName = []){
  76. foreach($allModuleName as $k=>$v){
  77. switch ($k)
  78. {
  79. case 'shop':
  80. $allModuleName[$k]['label'] = \Yii::t('ctx', 'mallManagement');
  81. break;
  82. case 'user':
  83. $allModuleName[$k]['label'] = Yii::t('ctx', 'memberManagement');
  84. break;
  85. case 'atlas':
  86. $allModuleName[$k]['label'] = Yii::t('ctx', 'networkChart');
  87. break;
  88. case 'reconsume':
  89. $allModuleName[$k]['label'] = Yii::t('ctx', 'resaleManagement');
  90. break;
  91. case 'bonus':
  92. $allModuleName[$k]['label'] = Yii::t('ctx', 'bonusManagement');
  93. break;
  94. case 'finance':
  95. $allModuleName[$k]['label'] = Yii::t('ctx', 'financialManagement');
  96. break;
  97. }
  98. }
  99. return $allModuleName;
  100. }
  101. /**
  102. * 删除已导出文件
  103. * @return mixed
  104. * @throws \yii\db\Exception
  105. * @throws \yii\web\HttpException
  106. */
  107. public function actionExportDelete() {
  108. return false;
  109. return static::delete(Export::class, function ($selected) {
  110. // 通过Id查找文件并删除他们
  111. foreach ($selected as $id) {
  112. if ($fileData = Export::findOneAsArray('ID=:ID', [':ID' => $id])) {
  113. if ($fileData['REMOTE_URL']) {
  114. $remoteUploadApi = RemoteUploadApi::instance();
  115. $remoteUploadApi->delete($fileData['REMOTE_URL']);
  116. }
  117. if ($fileData['FILE_NAME']) {
  118. $file=$fileData['FILE_NAME'];
  119. $basePath = \Yii::getAlias('@backendApi') . __DS__ . 'web' . __DS__ . 'upload' . __DS__ . \Yii::$app->params['excelLocalDir'];
  120. if(strpos($file, $basePath) === false){
  121. $file = $basePath . __DS__ . ltrim($file , __DS__);
  122. }
  123. if(file_exists($file)) unlink($file);
  124. }
  125. }
  126. }
  127. }, null, true);
  128. }
  129. /**
  130. * 获取上传token
  131. * @return mixed
  132. * @throws \yii\base\Exception
  133. * @throws \yii\web\HttpException
  134. */
  135. public function actionToken(){
  136. $token = Cache::setUploadToken();
  137. return static::notice($token);
  138. }
  139. /**
  140. * 上传excel文件
  141. * @return mixed
  142. * @throws \yii\db\Exception
  143. * @throws \yii\web\HttpException
  144. */
  145. public function actionUploadExcel(){
  146. if(\Yii::$app->request->isPost){
  147. $formModel = new UploadForm();
  148. $formModel->scenario = 'excel';
  149. $formModel->file = UploadedFile::getInstanceByName('file');
  150. //$formModel->token = \Yii::$app->request->post('uploadToken');
  151. $formModel->token = \Yii::$app->request->request('uploadToken');
  152. $formModel->excelOption = \Yii::$app->request->request('excelOption');
  153. if($formModel->file && $uploads = $formModel->upload()){
  154. // 通过upload的id获取excelImport的Id
  155. $excelImport = ExcelImport::findOneAsArray('UPLOAD_ID=:UPLOAD_ID', [':UPLOAD_ID'=>$uploads['ID']], 'ID');
  156. return static::notice([
  157. 'fileName'=>$uploads['FILE_NAME'],
  158. 'excelImportId' => $excelImport['ID'],
  159. ]);
  160. } else {
  161. return static::notice(Form::formatErrorsForApi($formModel->getErrors()), 400);
  162. }
  163. }
  164. }
  165. }