| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687 |
- <?php
- /**
- * @Desc:导出
- * @Author: hua
- * @DateTime: 2021/10/11 10:56
- * @Copyright: copyright (c) 2021 广东七件事集团
- */
- namespace common\helpers\csv;
- use common\components\export\CsvTool;
- use common\enums\DownloadEnum;
- use common\enums\RabbitMqEnum;
- use common\helpers\TaskHelper;
- use common\helpers\UploadHelper;
- use common\models\common\Download;
- use Exception;
- use PhpAmqpLib\Message\AMQPMessage;
- use Yii;
- class CsvExportHelper
- {
- /**
- *
- * @Author bing
- * @DateTime 2021-10-23 16:22:58
-
- * @return boolean
- */
- /**
- * @copyright: Copyright (c) 2020 广东七件事集团
- * @msg: 导出数据到下载中心
- * @param {int} $mall_id 商城 ID
- * @param {string} $filename 导出文件文件名
- * @param {string} $type 导出数据的分类
- * @param {string} $query 用于查询导出数据的查询对象,该对象内保持精简,不要带 asArray子句,where条件在 params 参数传入,如果有需要一起导出其他的表数据,使用关联查询并且先处理好各个查询字段
- * @param {array} $headers 导出的字段,键值对形式,格式如:[['key'=> 'id', 'value' => '订单id'],['key'=> 'mall_id', 'value' => '商城ID'], ... ]
- * @param {array} $params 用于查询导出数据的查询条件,格式参照使用 listPage 方法时的写法
- * @param {string} $handler_class 用于过滤/处理导出数据的类
- * @param {string} $method 用于过滤/处理导出数据的类中的方法
- * @return {*}
- */
- public static function exportDownLoadCenter(int $mall_id, string $filename, int $type, object $query, array $headers, array $params = [], string $handler_class = '', string $method = '')
- {
- try {
- $name = $filename;
- $header_list = json_encode($headers, JSON_UNESCAPED_UNICODE);
- $query = serialize($query);
- $model = Download::setData(compact('mall_id', 'name', 'type', 'query', 'params', 'header_list', 'handler_class', 'method'));
- if ($model === false) throw new Exception(Download::getStaticError());
- $data['download_id'] = $model->id;
- // 添加异步队列
- TaskHelper::pushTaskQueue(RabbitMqEnum::EXCHANGE_TASK, RabbitMqEnum::TASK_QUEUE, $data, CsvTool::class, 'makeDownloadFile', function (AMQPMessage $message) {
- // 生产错误
- Yii::error('异步生成下载任务失败');
- });
- return true;
- } catch (Exception $e) {
- Yii::error('添加任务到下载中心失败:' . $e->getMessage());
- return false;
- }
- }
- /**
- * @name:
- * @msg: 重新生成数据文件
- * @param {int} $download_id 下载中心任务 ID
- * @return {boolean}
- */
- public static function regenerateDownloadFile(int $download_id)
- {
- try {
- // 添加异步队列
- TaskHelper::pushTaskQueue(RabbitMqEnum::EXCHANGE_TASK, RabbitMqEnum::TASK_QUEUE, ['download_id' => $download_id], CsvTool::class, 'makeDownloadFile', function (AMQPMessage $message) {
- // 生产错误
- Yii::error('异步生成下载任务失败');
- });
- return true;
- } catch (Exception $e) {
- Yii::error('生成下载任务失败:' . $e->getMessage());
- return false;
- }
- }
- }
|