From: fomichev Date: Wed, 23 Apr 2025 09:14:41 +0000 (+0300) Subject: сохранение файла X-Git-Url: https://gitweb.erp-flowers.ru/?a=commitdiff_plain;h=be95e92997150fa3a63486a49e1a3d09f2d85146;p=erp24_rep%2Fyii-erp24%2F.git сохранение файла --- diff --git a/erp24/media/config/media.config.php b/erp24/media/config/media.config.php index 19b1f648..cdc2700f 100644 --- a/erp24/media/config/media.config.php +++ b/erp24/media/config/media.config.php @@ -29,6 +29,7 @@ return [ 'rules' => [ 'GET media/view-image/' => 'media/view-image', 'flowwow/feed/' => 'flowwow/feed', + 'marketplace/upload-photo/' => 'marketplace/upload-photo', ], ], 'request' => [ @@ -51,8 +52,8 @@ return [ ], 'queue' => [ 'class' => Queue::class, - //'dsn' => 'amqp://admin:3qqHK2MRgGgxUdVT61@rabbitmq-yii_erp24:5672', - 'dsn' => 'amqp://admin:3qqHK2MRgGgxUdVT61@localhost:5672', + 'dsn' => 'amqp://admin:3qqHK2MRgGgxUdVT61@rabbitmq-yii_erp24:5672', + //'dsn' => 'amqp://admin:3qqHK2MRgGgxUdVT61@localhost:5672', 'queueName' => 'telegram-queue', 'as log' => \yii\queue\LogBehavior::class, 'ttr' => 300, // Время для выполнения задания diff --git a/erp24/media/controllers/MarketplaceController.php b/erp24/media/controllers/MarketplaceController.php index 23b9f64b..a8469c97 100644 --- a/erp24/media/controllers/MarketplaceController.php +++ b/erp24/media/controllers/MarketplaceController.php @@ -3,23 +3,56 @@ namespace app\controllers; use Yii; +use yii\rest\Controller; use yii\web\Response; use yii\web\UploadedFile; +use yii_app\records\Files; use yii_app\records\MarketplaceOrders; use yii_app\services\FileService; -class MarketplaceController +class MarketplaceController extends Controller { public function actionUploadPhoto($id) { Yii::$app->response->format = Response::FORMAT_JSON; if (Yii::$app->request->isPost) { - $order = MarketplaceOrders::find()->where(['id`' => $id])->one(); - $entity = 'marketplace_order/order_phpto'; - $uploadedFile = UploadedFile::getInstanceByName('file'); - if ($uploadedFile && $order) { - FileService::saveUploadedFile($uploadedFile, $entity, $order->id); + $order = MarketplaceOrders::find()->where(['marketplace_order_id' => $id])->one(); + $entity = MarketplaceOrders::PHOTO_ORDER; + $type = MarketplaceOrders::PHOTO_TYPE; + $file = UploadedFile::getInstanceByName('file'); + if ($file && $order) { + // FileService::saveUploadedFile($uploadedFile, $entity, $order->id); + $uploads = Yii::getAlias("@uploads"); + $target_dir = '/' . $order->marketplace_order_id . '/' . date("Y") . "/" . date("m") . "/" . date("d") . "/"; + $filePath = $uploads . $target_dir; + if (!is_dir($filePath)) { + mkdir($filePath, 0777, true); + } + $targetFile = $uploads . $target_dir. "/" . $file->baseName . '.' . $file->extension; + Yii::warning('Saved file: ' . json_encode($targetFile, JSON_UNESCAPED_UNICODE)); + $file->saveAs($targetFile); + $fileRecord = new Files; + $fileRecord->created_at = date("Y-m-d H:i:s", time() + 1); + $fileRecord->entity_id = $order->id; + $fileRecord->entity = $entity; + $fileRecord->file_type = $type; + $fileRecord->url = '/uploads' . $target_dir . $file->baseName . '.' . $file->extension; + if (!$fileRecord->save()) { + Yii::error('Ошибка сохранения файла' . json_encode($fileRecord->getErrors(), JSON_UNESCAPED_UNICODE)); + return ['error' => 'Ошибка сохранения файла']; + } } + $photos = $order->getFiles(); + if (count($photos) > 0 && isset($photos[0]->url)) { + $order->order_photo = $photos[0]->url; + if (!$order->save()) { + Yii::error('Ошибка сохранения заказа' . json_encode($order->getErrors(), JSON_UNESCAPED_UNICODE)); + return ['error' => 'Ошибка сохранения заказа']; + } else { + return ['success' => true]; + } + } + return ['success' => true]; } } diff --git a/erp24/records/MarketplaceOrders.php b/erp24/records/MarketplaceOrders.php index 2e9a6a43..70fab86f 100644 --- a/erp24/records/MarketplaceOrders.php +++ b/erp24/records/MarketplaceOrders.php @@ -55,6 +55,8 @@ class MarketplaceOrders extends \yii\db\ActiveRecord self::STATUSES_1C_CREATED_IN_1C => 'Создан в 1C', self::STATUSES_1C_ERROR_1C => 'Ошибка в 1C', ]; + public const PHOTO_TYPE = 'image'; + public const PHOTO_ORDER = 'marketplace_order/order_photo'; public const STATUSES_TO_CODE = [ @@ -172,4 +174,24 @@ class MarketplaceOrders extends \yii\db\ActiveRecord { return self::STATUSES_TO_CODE[$status] ?? []; } + + /** + * Возвращает связанные файлы букета. + * + * @return array Ассоциативный массив файлов (photo, video, process) + */ + public function getFiles(): array + { + $photo = Files::find() + ->where( + ['entity_id' => $this->id, + 'file_type' => self::PHOTO_TYPE, + 'entity' => self::PHOTO_ORDER + ] + ) + ->orderBy(['created_at' => SORT_ASC]) + ->all(); + + return $photo; + } }