'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' => [
],
'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, // Время для выполнения задания
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];
}
}
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 = [
{
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;
+ }
}