]> gitweb.erp-flowers.ru Git - erp24_rep/yii-erp24/.git/commitdiff
сохранение файла
authorfomichev <vladimir.fomichev@erp-flowers.ru>
Wed, 23 Apr 2025 09:14:41 +0000 (12:14 +0300)
committerfomichev <vladimir.fomichev@erp-flowers.ru>
Wed, 23 Apr 2025 09:14:41 +0000 (12:14 +0300)
erp24/media/config/media.config.php
erp24/media/controllers/MarketplaceController.php
erp24/records/MarketplaceOrders.php

index 19b1f6489c8d5f8eabd5f35adfd628363274df68..cdc2700ffff627a5f555898c585f7f96b388bfae 100644 (file)
@@ -29,6 +29,7 @@ return [
             'rules' => [
                 'GET media/view-image/<id:\d+>' => 'media/view-image',
                 'flowwow/feed/<id:\d+>' => 'flowwow/feed',
+                'marketplace/upload-photo/<id:\d+>' => '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, // Время для выполнения задания
index 23b9f64b3a58c654f36b8114eb62225a34a5bca3..a8469c9789841786c894524b3d8afeb34960bf36 100644 (file)
@@ -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];
         }
 
     }
index 2e9a6a43d00aa97c4ecbcf96a7d49f2f332d3b4f..70fab86f9471aeccc177f477b7879c5caaa630b9 100644 (file)
@@ -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;
+    }
 }