From 722652f0158707eeebad22e7ba83c8eb4641512f Mon Sep 17 00:00:00 2001 From: fomichev Date: Wed, 23 Apr 2025 19:05:55 +0300 Subject: [PATCH] =?utf8?q?=D0=A4=D0=BE=D1=80=D0=BC=D0=B0=20=D0=B7=D0=B0?= =?utf8?q?=D0=B3=D1=80=D1=83=D0=B7=D0=BA=D0=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit --- erp24/composer.json | 6 +- erp24/media/config/media.config.php | 21 +- .../controllers/MarketplaceController.php | 60 ++++ erp24/media/index.php | 6 +- erp24/media/views/layouts/_____main.php | 83 ++++++ erp24/media/views/layouts/api2_menu.php | 7 + erp24/media/views/layouts/footer.php | 22 ++ erp24/media/views/layouts/header.php | 274 ++++++++++++++++++ erp24/media/views/layouts/main.php | 90 ++++++ erp24/media/views/layouts/menu.php | 53 ++++ erp24/media/views/marketplace/upload.php | 23 ++ erp24/views/marketplace-orders/view.php | 8 + 12 files changed, 646 insertions(+), 7 deletions(-) create mode 100644 erp24/media/views/layouts/_____main.php create mode 100644 erp24/media/views/layouts/api2_menu.php create mode 100755 erp24/media/views/layouts/footer.php create mode 100755 erp24/media/views/layouts/header.php create mode 100755 erp24/media/views/layouts/main.php create mode 100755 erp24/media/views/layouts/menu.php create mode 100644 erp24/media/views/marketplace/upload.php diff --git a/erp24/composer.json b/erp24/composer.json index 3ebdc316..a5ef737e 100644 --- a/erp24/composer.json +++ b/erp24/composer.json @@ -65,7 +65,11 @@ "squizlabs/php_codesniffer": "@stable" }, "autoload": { - "psr-4": { "yii_app\\": "", "OpenAPI\\Client\\" : "lib/yandex_market_api/" } + "psr-4": { + "app\\": "", + "yii_app\\": "", + "OpenAPI\\Client\\" : "lib/yandex_market_api/" + } }, "config": { "allow-plugins": { diff --git a/erp24/media/config/media.config.php b/erp24/media/config/media.config.php index cdc2700f..74448dac 100644 --- a/erp24/media/config/media.config.php +++ b/erp24/media/config/media.config.php @@ -1,5 +1,6 @@ [ 'assetManager' => [ 'appendTimestamp' => true, - 'basePath' => '@webroot/cache/assets', - 'baseUrl' => '@web/cache/assets', + 'basePath' => '@webroot/assets', + 'baseUrl' => '@web/assets', ], 'formatter' => [ // fallback if no ext-intl php extension 'timeZone' => 'Europe/Moscow', @@ -30,6 +31,8 @@ return [ 'GET media/view-image/' => 'media/view-image', 'flowwow/feed/' => 'flowwow/feed', 'marketplace/upload-photo/' => 'marketplace/upload-photo', + 'marketplace/upload' => 'marketplace/upload', + ], ], 'request' => [ @@ -61,7 +64,8 @@ return [ 'exchangeName' => 'telegram-exchange', ], 'user' => [ - 'identityClass' => \yii\web\IdentityInterface::class, + 'identityClass' => \yii_app\records\Admin::class, + 'enableAutoLogin' => false, ], 'db' => require __DIR__ . '/../../config/db.php', 'log' => [ @@ -76,7 +80,12 @@ return [ 'yii\web\HttpException:403', 'yii\web\HttpException:401', ], - ] + ], + [ + 'class' => 'app\log\TelegramTarget', + 'levels' => ['error', 'warning'], + // 'categories' => ['api.error', 'js.error', 'command.error'], + ], ], ], 'cache' => [ @@ -87,7 +96,9 @@ return [ '@bower' => '@vendor/bower-asset', '@npm' => '@vendor/npm-asset', '@dist' => '@app/dist', - '@uploads' => "@app/uploads", + '@uploads' => "@yii_app/uploads", + + ], 'params' => require dirname(__DIR__, 2) . '/config/params.php', 'timeZone' => 'Europe/Moscow', diff --git a/erp24/media/controllers/MarketplaceController.php b/erp24/media/controllers/MarketplaceController.php index a8469c97..388ea99b 100644 --- a/erp24/media/controllers/MarketplaceController.php +++ b/erp24/media/controllers/MarketplaceController.php @@ -31,6 +31,7 @@ class MarketplaceController extends Controller $targetFile = $uploads . $target_dir. "/" . $file->baseName . '.' . $file->extension; Yii::warning('Saved file: ' . json_encode($targetFile, JSON_UNESCAPED_UNICODE)); $file->saveAs($targetFile); + Files::deleteAll(['file_type' => $type, 'entity_id' => $order->id, 'entity' => $entity]); $fileRecord = new Files; $fileRecord->created_at = date("Y-m-d H:i:s", time() + 1); $fileRecord->entity_id = $order->id; @@ -56,4 +57,63 @@ class MarketplaceController extends Controller } } + + public function actionUpload() + { + Yii::$app->response->format = Response::FORMAT_HTML; + $guid = Yii::$app->request->get('guid') ?? Yii::$app->request->post('guid'); + //var_dump($guid); die(); + if (!$guid) { + return $this->redirect(['/']); + } + $entity = MarketplaceOrders::PHOTO_ORDER; + $type = MarketplaceOrders::PHOTO_TYPE; + $order = MarketplaceOrders::find()->where(['guid' => $guid])->one(); + // var_dump($order); die(); + if (!$order) { + throw new \yii\web\NotFoundHttpException("Заказ не найден."); + } + if (Yii::$app->request->isPost) { + Yii::error('Ошибка' ); + $files = UploadedFile::getInstancesByName('files'); + Files::deleteAll(['entity_id' => $order->id, 'entity' => $entity]); + $uploads = Yii::getAlias("@uploads"); + $target_dir = '/' . $order->id . '/' . date("Y") . "/" . date("m") . "/" . date("d") . "/"; + + foreach ($files as $file) { + $filePath = $uploads . $target_dir; + if (!is_dir($filePath)) { + mkdir($filePath, 0777, true); + } + $targetFile = $filePath . $file->baseName . '.' . $file->extension; + $file->saveAs($targetFile); + + $fileRecord = new Files(); + $fileRecord->created_at = date("Y-m-d H:i:s"); + $fileRecord->entity_id = $order->id; + $fileRecord->entity = $entity; + $fileRecord->file_type = $file->type; + $fileRecord->url = '/uploads' . $target_dir . $file->baseName . '.' . $file->extension; + if (!$fileRecord->save()) { + Yii::error('Ошибка сохранения файла: ' . json_encode($fileRecord->getErrors(), JSON_UNESCAPED_UNICODE)); + } + } + $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' => 'Ошибка сохранения заказа']; + } + } + Yii::$app->session->setFlash('success', 'Файлы успешно загружены.'); + return $this->render('upload', [ + 'guid' => $guid, + ]); + } + + return $this->render('upload', [ + 'guid' => $guid, + ]); + } } \ No newline at end of file diff --git a/erp24/media/index.php b/erp24/media/index.php index dc83619b..abd42f99 100644 --- a/erp24/media/index.php +++ b/erp24/media/index.php @@ -9,7 +9,11 @@ require __DIR__ . '/../vendor/yiisoft/yii2/Yii.php'; $config = require __DIR__.'/config/media.config.php'; Yii::setAlias('@yii_app', dirname(__DIR__)); - +Yii::setAlias('@webroot', dirname(__DIR__, 3) . '/web'); +Yii::setAlias('@web', '/'); +Yii::setAlias('@uploads', dirname(__DIR__, 3) . '/uploads'); +// echo Yii::getAlias('@webroot'); // Должно вывести путь до web/ +// exit; $application = new yii\web\Application($config); $exitCode = $application->run(); exit($exitCode); diff --git a/erp24/media/views/layouts/_____main.php b/erp24/media/views/layouts/_____main.php new file mode 100644 index 00000000..047fa9a1 --- /dev/null +++ b/erp24/media/views/layouts/_____main.php @@ -0,0 +1,83 @@ +registerCsrfMetaTags(); +$this->registerMetaTag(['charset' => Yii::$app->charset], 'charset'); +$this->registerMetaTag(['name' => 'viewport', 'content' => 'width=device-width, initial-scale=1, shrink-to-fit=no']); +$this->registerMetaTag(['name' => 'description', 'content' => $this->params['meta_description'] ?? '']); +$this->registerMetaTag(['name' => 'keywords', 'content' => $this->params['meta_keywords'] ?? '']); +$this->registerLinkTag(['rel' => 'icon', 'type' => 'image/x-icon', 'href' => Yii::getAlias('@web/favicon.ico')]); +?> +beginPage() ?> + + + + <?= Html::encode($this->title) ?> + head() ?> + + +beginBody() ?> + + + +
+
+ params['breadcrumbs'])): ?> + $this->params['breadcrumbs']]) ?> + + + +
+
+ +
+
+
+
© My Company
+
+
+
+
+ +endBody() ?> + + +endPage() ?> diff --git a/erp24/media/views/layouts/api2_menu.php b/erp24/media/views/layouts/api2_menu.php new file mode 100644 index 00000000..18e16f09 --- /dev/null +++ b/erp24/media/views/layouts/api2_menu.php @@ -0,0 +1,7 @@ +registerJS(" + var ADMIN_ID = " . (Yii::$app->user->id ?? 0) . "; +", \yii\web\View::POS_BEGIN, 'api2_menu_init_global_vars'); + +$this->registerJsFile('/js/site/get_menu.js', ['position' => \yii\web\View::POS_END]); diff --git a/erp24/media/views/layouts/footer.php b/erp24/media/views/layouts/footer.php new file mode 100755 index 00000000..b9cbac8a --- /dev/null +++ b/erp24/media/views/layouts/footer.php @@ -0,0 +1,22 @@ +getDbProfiling(); +global $modul, $act, $tstart; + +$totalTime=round((microtime(1)-$tstart),4); +?> + diff --git a/erp24/media/views/layouts/header.php b/erp24/media/views/layouts/header.php new file mode 100755 index 00000000..a3673896 --- /dev/null +++ b/erp24/media/views/layouts/header.php @@ -0,0 +1,274 @@ +registerCssFile('/css/timetable/style.css'); +?> +
+ + +
+
+
+
+ + + +
+
+
+
+ + + +
+
+
+ + +
+ " height=40 alt="img" class="avatar"> +
+ + + + + +
+ + + +
+
+
+
+
+ + diff --git a/erp24/media/views/layouts/main.php b/erp24/media/views/layouts/main.php new file mode 100755 index 00000000..edcf0f5f --- /dev/null +++ b/erp24/media/views/layouts/main.php @@ -0,0 +1,90 @@ + +beginPage() ?> + + + + + + registerCsrfMetaTags() ?> + <?= $this->title ? $this->title : \yii_app\records\CrmMenu::getTitle(parse_url($_SERVER['REQUEST_URI'], PHP_URL_PATH)) ?> + head(); ?> + + + + beginBody(); ?> +
+
+ +
+ render('header.php'); ?> + + isset($this->params['breadcrumbs']) ? $this->params['breadcrumbs'] : [], + ]) */?> + +
+
+ render('footer.php'); ?> +
+ + + + endBody(); ?> + + +endPage() ?> diff --git a/erp24/media/views/layouts/menu.php b/erp24/media/views/layouts/menu.php new file mode 100755 index 00000000..122108a2 --- /dev/null +++ b/erp24/media/views/layouts/menu.php @@ -0,0 +1,53 @@ + \ No newline at end of file diff --git a/erp24/media/views/marketplace/upload.php b/erp24/media/views/marketplace/upload.php new file mode 100644 index 00000000..fe4596b2 --- /dev/null +++ b/erp24/media/views/marketplace/upload.php @@ -0,0 +1,23 @@ +title = 'Загрузка фотографий заказа (GUID: ' . $guid . ')'; +?> + +

title) ?>

+ +session->hasFlash('success')): ?> +
+ session->getFlash('success') ?> +
+ + +
+ + + +
\ No newline at end of file diff --git a/erp24/views/marketplace-orders/view.php b/erp24/views/marketplace-orders/view.php index e7437724..43b35992 100644 --- a/erp24/views/marketplace-orders/view.php +++ b/erp24/views/marketplace-orders/view.php @@ -84,6 +84,14 @@ $this->params['breadcrumbs'][] = $this->title; return $model->status1c->status ?? null; } ], + [ + 'label' => 'Фото заказа', + 'format' => 'raw', + 'value' => function ($model) { + + return Html::img($model->order_photo, ['width' => '100px']); + } + ], [ 'label' => 'Товары', 'format' => 'raw', -- 2.39.5