Commit 1c9309e166175cedfaf5e44bf9263fe071fbce78
1 parent
387be185
add view for details in price change form
Showing
7 changed files
with
360 additions
and
107 deletions
Show diff stats
| 1 | +<?php | ||
| 2 | +namespace backend\controllers; | ||
| 3 | + | ||
| 4 | +use Yii; | ||
| 5 | +use yii\bootstrap\Modal; | ||
| 6 | +use yii\data\ActiveDataProvider; | ||
| 7 | +use yii\filters\AccessControl; | ||
| 8 | +use backend\components\base\BaseController; | ||
| 9 | +use yii\filters\VerbFilter; | ||
| 10 | +use backend\models\UploadFileParsingForm; | ||
| 11 | +use yii\web\UploadedFile; | ||
| 12 | +use yii\data\ArrayDataProvider; | ||
| 13 | +use yii\multiparser\DynamicFormHelper; | ||
| 14 | +use backend\components\parsers\CustomParserConfigurator; | ||
| 15 | +use backend\models\Details; | ||
| 16 | +use backend\models\ImporterFiles; | ||
| 17 | +use backend\models\Importer; | ||
| 18 | +use yii\base\ErrorException; | ||
| 19 | +use yii\db\Query; | ||
| 20 | + | ||
| 21 | +use common\components\CustomVarDamp; | ||
| 22 | + | ||
| 23 | +/** | ||
| 24 | + * Parser controller | ||
| 25 | + */ | ||
| 26 | +class Check_priceController extends BaseController | ||
| 27 | +{ | ||
| 28 | + public $layout = "/column"; | ||
| 29 | + | ||
| 30 | + /** | ||
| 31 | + * @inheritdoc | ||
| 32 | + */ | ||
| 33 | + public function behaviors() | ||
| 34 | + { | ||
| 35 | + return [ | ||
| 36 | + 'access' => [ | ||
| 37 | + 'class' => AccessControl::className(), | ||
| 38 | + 'rules' => [ | ||
| 39 | + [ | ||
| 40 | + 'actions' => ['index', 'view'], | ||
| 41 | + 'allow' => true, | ||
| 42 | + 'roles' => ['@'], | ||
| 43 | + ], | ||
| 44 | + ], | ||
| 45 | + ], | ||
| 46 | +// 'verbs' => [ | ||
| 47 | +// 'class' => VerbFilter::className(), | ||
| 48 | +// 'actions' => [ | ||
| 49 | +// 'logout' => ['post'], | ||
| 50 | +// ], | ||
| 51 | +// ], | ||
| 52 | + ]; | ||
| 53 | + } | ||
| 54 | + | ||
| 55 | + /** | ||
| 56 | + * @inheritdoc | ||
| 57 | + */ | ||
| 58 | + public function actions() | ||
| 59 | + { | ||
| 60 | + return [ | ||
| 61 | + 'error' => [ | ||
| 62 | + 'class' => 'yii\web\ErrorAction', | ||
| 63 | + ], | ||
| 64 | + ]; | ||
| 65 | + } | ||
| 66 | + | ||
| 67 | + | ||
| 68 | + public function actionIndex() | ||
| 69 | + { | ||
| 70 | + | ||
| 71 | + if(Yii::$app->request->isAjax){ | ||
| 72 | + CustomVarDamp::dumpAndDie(1); | ||
| 73 | + } | ||
| 74 | + | ||
| 75 | + //$query = (new Query())->select('*')->from('{{%importer_files}}')->where(['not', ['time_end' => null]])->orderBy(['upload_time' => SORT_DESC]); | ||
| 76 | + $query = Importer::find()->where(['active' => true])->orderBy(['price_date_update' => SORT_DESC]); | ||
| 77 | + | ||
| 78 | + $provider = new ActiveDataProvider([ | ||
| 79 | + 'query' => $query, | ||
| 80 | + 'pagination' => [ | ||
| 81 | + 'pageSize' => 10, | ||
| 82 | + ], | ||
| 83 | + ]); | ||
| 84 | + return $this->render('index', | ||
| 85 | + [ | ||
| 86 | + 'dataProvider' => $provider, | ||
| 87 | + ]); | ||
| 88 | + } | ||
| 89 | + | ||
| 90 | + | ||
| 91 | + public function actionView ($id) | ||
| 92 | + { | ||
| 93 | + | ||
| 94 | + | ||
| 95 | + | ||
| 96 | + | ||
| 97 | + $query = Details::find()->where(['IMPORT_ID' => $id])->orderBy(['timestamp' => SORT_DESC]); | ||
| 98 | + | ||
| 99 | + $provider = new ActiveDataProvider([ | ||
| 100 | + 'query' => $query, | ||
| 101 | + 'pagination' => [ | ||
| 102 | + 'pageSize' => 16, | ||
| 103 | + ], | ||
| 104 | + ]); | ||
| 105 | + return $this->render('view', | ||
| 106 | + ['dataProvider' => $provider]); | ||
| 107 | + } | ||
| 108 | +} |
backend/controllers/ParserController.php
| @@ -166,7 +166,7 @@ class ParserController extends BaseController | @@ -166,7 +166,7 @@ class ParserController extends BaseController | ||
| 166 | 166 | ||
| 167 | 167 | ||
| 168 | // 2. запишем полученные данные в таблицу товаров (Details) | 168 | // 2. запишем полученные данные в таблицу товаров (Details) |
| 169 | - $details_model = new Details('web'); | 169 | + $details_model = new Details(); |
| 170 | // проверим все ли обязательные колонки были указаны пользователем | 170 | // проверим все ли обязательные колонки были указаны пользователем |
| 171 | $details_model->load(['Details' => $data[0]]); | 171 | $details_model->load(['Details' => $data[0]]); |
| 172 | if ($details_model->validate()) { | 172 | if ($details_model->validate()) { |
| @@ -176,7 +176,7 @@ class ParserController extends BaseController | @@ -176,7 +176,7 @@ class ParserController extends BaseController | ||
| 176 | try { | 176 | try { |
| 177 | //@todo add transaction | 177 | //@todo add transaction |
| 178 | // попытаемся вставить данные в БД с апдейтом по ключам | 178 | // попытаемся вставить данные в БД с апдейтом по ключам |
| 179 | - $details_model->save($data); | 179 | + $details_model->ManualInsert($data); |
| 180 | 180 | ||
| 181 | // 3. зафиксируем дату начала и конца загрузки в файлах поставщика (для ручной загрузки начало приравниваем time_start и update_date) | 181 | // 3. зафиксируем дату начала и конца загрузки в файлах поставщика (для ручной загрузки начало приравниваем time_start и update_date) |
| 182 | $files_model->time_start = $update_date; | 182 | $files_model->time_start = $update_date; |
| @@ -219,19 +219,19 @@ class ParserController extends BaseController | @@ -219,19 +219,19 @@ class ParserController extends BaseController | ||
| 219 | 219 | ||
| 220 | } | 220 | } |
| 221 | 221 | ||
| 222 | - public function actionCheck_price () | ||
| 223 | - { | ||
| 224 | - //$query = (new Query())->select('*')->from('{{%importer_files}}')->where(['not', ['time_end' => null]])->orderBy(['upload_time' => SORT_DESC]); | ||
| 225 | - $query = Importer::find()->where(['active' => true])->orderBy(['price_date_update' => SORT_DESC]); | ||
| 226 | - | ||
| 227 | - $provider = new ActiveDataProvider([ | ||
| 228 | - 'query' => $query, | ||
| 229 | - 'pagination' => [ | ||
| 230 | - 'pageSize' => 10, | ||
| 231 | - ], | ||
| 232 | - ]); | ||
| 233 | - return $this->render('checkPrice', | ||
| 234 | - [ | ||
| 235 | - 'dataProvider' => $provider]); | ||
| 236 | - } | 222 | +// public function actionCheck_price () |
| 223 | +// { | ||
| 224 | +// //$query = (new Query())->select('*')->from('{{%importer_files}}')->where(['not', ['time_end' => null]])->orderBy(['upload_time' => SORT_DESC]); | ||
| 225 | +// $query = Importer::find()->where(['active' => true])->orderBy(['price_date_update' => SORT_DESC]); | ||
| 226 | +// | ||
| 227 | +// $provider = new ActiveDataProvider([ | ||
| 228 | +// 'query' => $query, | ||
| 229 | +// 'pagination' => [ | ||
| 230 | +// 'pageSize' => 10, | ||
| 231 | +// ], | ||
| 232 | +// ]); | ||
| 233 | +// return $this->render('check_price', | ||
| 234 | +// [ | ||
| 235 | +// 'dataProvider' => $provider]); | ||
| 236 | +// } | ||
| 237 | } | 237 | } |
backend/models/Details.php
| 1 | <?php | 1 | <?php |
| 2 | -/** | ||
| 3 | - * Created by PhpStorm. | ||
| 4 | - * User: Cibermag | ||
| 5 | - * Date: 15.09.2015 | ||
| 6 | - * Time: 16:49 | ||
| 7 | - */ | ||
| 8 | 2 | ||
| 9 | namespace backend\models; | 3 | namespace backend\models; |
| 10 | 4 | ||
| 11 | -use yii\base\Model; | ||
| 12 | use Yii; | 5 | use Yii; |
| 6 | +use backend\components\base\BaseActiveRecord; | ||
| 13 | 7 | ||
| 14 | -class Details extends Model{ | 8 | +/** |
| 9 | + * This is the model class for table "{{%details}}". | ||
| 10 | + * | ||
| 11 | + * @property string $ID | ||
| 12 | + * @property string $IMPORT_ID | ||
| 13 | + * @property string $BRAND | ||
| 14 | + * @property string $ARTICLE | ||
| 15 | + * @property string $FULL_ARTICLE | ||
| 16 | + * @property double $PRICE | ||
| 17 | + * @property string $DESCR | ||
| 18 | + * @property string $BOX | ||
| 19 | + * @property string $ADD_BOX | ||
| 20 | + * @property string $GROUP | ||
| 21 | + * @property string $timestamp | ||
| 22 | + */ | ||
| 23 | +class Details extends BaseActiveRecord | ||
| 24 | +{ | ||
| 15 | const KEY_COLUMN = ['IMPORT_ID','BRAND','ARTICLE']; | 25 | const KEY_COLUMN = ['IMPORT_ID','BRAND','ARTICLE']; |
| 16 | const BATCH = 500; | 26 | const BATCH = 500; |
| 17 | - | ||
| 18 | - private $mode; | ||
| 19 | - | ||
| 20 | - // обязательные поля модели | ||
| 21 | - public $BRAND; | ||
| 22 | - public $ARTICLE; | ||
| 23 | - public $PRICE; | ||
| 24 | - public $BOX; | ||
| 25 | - | ||
| 26 | - function __construct($mode) | 27 | + /** |
| 28 | + * @inheritdoc | ||
| 29 | + */ | ||
| 30 | + public static function tableName() | ||
| 27 | { | 31 | { |
| 28 | - $this->mode = $mode; | 32 | + return '{{%details}}'; |
| 29 | } | 33 | } |
| 30 | 34 | ||
| 35 | + /** | ||
| 36 | + * @inheritdoc | ||
| 37 | + */ | ||
| 31 | public function rules() | 38 | public function rules() |
| 32 | { | 39 | { |
| 33 | return [ | 40 | return [ |
| 34 | - [['BRAND','ARTICLE', 'PRICE', 'BOX'], 'required' ], | 41 | + [[ 'BRAND', 'ARTICLE', 'PRICE', 'DESCR', 'BOX'], 'required'], |
| 42 | + // [['IMPORT_ID', 'BOX', 'ADD_BOX'], 'integer'], | ||
| 43 | + [['PRICE'], 'number'], | ||
| 44 | + [['timestamp'], 'safe'], | ||
| 45 | + [['BRAND', 'ARTICLE'], 'string', 'max' => 100], | ||
| 46 | + [['FULL_ARTICLE'], 'string', 'max' => 150], | ||
| 47 | + [['DESCR', 'GROUP'], 'string', 'max' => 200] | ||
| 35 | ]; | 48 | ]; |
| 36 | } | 49 | } |
| 37 | 50 | ||
| 38 | - public function formName() | ||
| 39 | - { | ||
| 40 | - return 'Details'; | ||
| 41 | - } | ||
| 42 | - | ||
| 43 | - | ||
| 44 | - public static function tableName() | 51 | + /** |
| 52 | + * @inheritdoc | ||
| 53 | + */ | ||
| 54 | + public function attributeLabels() | ||
| 45 | { | 55 | { |
| 46 | - return '{{%details}}'; | 56 | + return [ |
| 57 | + 'ID' => Yii::t('app', 'ID'), | ||
| 58 | + 'IMPORT_ID' => Yii::t('app', 'Import ID'), | ||
| 59 | + 'BRAND' => Yii::t('app', 'Brand'), | ||
| 60 | + 'ARTICLE' => Yii::t('app', 'Article'), | ||
| 61 | + 'FULL_ARTICLE' => Yii::t('app', 'Full Article'), | ||
| 62 | + 'PRICE' => Yii::t('app', 'Price'), | ||
| 63 | + 'DESCR' => Yii::t('app', 'Descr'), | ||
| 64 | + 'BOX' => Yii::t('app', 'Box'), | ||
| 65 | + 'ADD_BOX' => Yii::t('app', 'Add Box'), | ||
| 66 | + 'GROUP' => Yii::t('app', 'Group'), | ||
| 67 | + 'timestamp' => Yii::t('app', 'Timestamp'), | ||
| 68 | + ]; | ||
| 47 | } | 69 | } |
| 48 | 70 | ||
| 49 | -// //@todo вероятно этой функции не место здесь | ||
| 50 | -// public function prepareData ( $data, $configuration ) | ||
| 51 | -// { | ||
| 52 | -// if ( isset($configuration['importer_id']) && $configuration['importer_id']) { | ||
| 53 | -// $data = \Yii::$app->multiparser->addColumn( $data, 'IMPORT_ID', $configuration['importer_id'] ); | ||
| 54 | -// } | ||
| 55 | -// // \common\components\CustomVarDamp::dumpAndDie($data); | ||
| 56 | -// return $data; | ||
| 57 | -// } | ||
| 58 | - | ||
| 59 | - /** | ||
| 60 | - * @param $data - двумерный массив данных для записи в таблицу details | ||
| 61 | - * @throws \yii\db\Exception | ||
| 62 | - * вставляет записи с апдейтом при дубляже ключей | ||
| 63 | - */ | ||
| 64 | - public function save ($data) | 71 | + public function ManualInsert ($data) |
| 65 | { | 72 | { |
| 66 | $table_name = self::tableName(); | 73 | $table_name = self::tableName(); |
| 67 | $keys_arr = array_keys( $data[0] ); | 74 | $keys_arr = array_keys( $data[0] ); |
| @@ -85,51 +92,10 @@ class Details extends Model{ | @@ -85,51 +92,10 @@ class Details extends Model{ | ||
| 85 | $query_insert = Yii::$app->db->createCommand()->batchInsert($table_name, $keys_arr, $current_batch_array)->sql; | 92 | $query_insert = Yii::$app->db->createCommand()->batchInsert($table_name, $keys_arr, $current_batch_array)->sql; |
| 86 | // добавим фрагмент с апдейтом при дубляже | 93 | // добавим фрагмент с апдейтом при дубляже |
| 87 | $query = "{$query_insert} {$query_update}"; | 94 | $query = "{$query_insert} {$query_update}"; |
| 88 | - // \common\components\CustomVarDamp::dumpAndDie($query); | 95 | + // \common\components\CustomVarDamp::dumpAndDie($query); |
| 89 | $res = Yii::$app->db->createCommand($query)->execute(); | 96 | $res = Yii::$app->db->createCommand($query)->execute(); |
| 90 | 97 | ||
| 91 | } | 98 | } |
| 92 | 99 | ||
| 93 | } | 100 | } |
| 94 | } | 101 | } |
| 95 | - | ||
| 96 | -// | ||
| 97 | - | ||
| 98 | -//$q = " INSERT INTO {$table_name} ({$keys_string}) VALUES ("; | ||
| 99 | - | ||
| 100 | -//$q .= " on duplicate key update `FULL_ARTICLE` = values (`FULL_ARTICLE`), | ||
| 101 | -// `PRICE` = values (`PRICE`), | ||
| 102 | -// `DESCR` = values(`DESCR`), | ||
| 103 | -// `BOX` = values(`BOX`), | ||
| 104 | -// `ADD_BOX` = values(`ADD_BOX`), | ||
| 105 | -// `GROUP` = values(`GROUP`);"; | ||
| 106 | - | ||
| 107 | -// INSERT INTO table (a,b,c) VALUES (1,2,3),(4,5,6) | ||
| 108 | -// ON DUPLICATE KEY UPDATE c=VALUES(a)+VALUES(b); | ||
| 109 | - | ||
| 110 | - | ||
| 111 | - | ||
| 112 | -//INSERT INTO `books` (`UserId`, `BookId`, `Count`) VALUES (13, 1001, 3) | ||
| 113 | -//ON DUPLICATE KEY UPDATE `Count` = `Count` + VALUES(`Count`); | ||
| 114 | - | ||
| 115 | -//$values_string = ''; | ||
| 116 | -//$keys_arr = array_keys( $data[0] ); | ||
| 117 | -//$keys_string = implode( ',', $keys_arr); | ||
| 118 | -//$table_name = self::tableName(); | ||
| 119 | -//$current_batch = 0; | ||
| 120 | -//for ($i = $current_batch; $i < $this::BATCH AND $i < count($data); $i++) { | ||
| 121 | -// $values_string .= '(' . implode( ',', $data[$i]) . '),'; | ||
| 122 | -//} | ||
| 123 | -// for ($current_batch = $this::BATCH; $current_batch<count($data); $current_batch + $this::BATCH ) | ||
| 124 | -//// удалим последнюю запятую | ||
| 125 | -//$values_string = substr($values_string, 0, strlen($values_string) - 1) . ' '; | ||
| 126 | -////\common\components\CustomVarDamp::dumpAndDie($values_string); | ||
| 127 | -//// $query = "INSERT INTO {$table_name}({$keys_string}) VALUES {$values_string}"; | ||
| 128 | -//// on duplicate key update `PRICE` = values (`PRICE`),`DESCR` = values(`DESCR`),`BOX` = values(`BOX`)"; | ||
| 129 | -//$query_insert = Yii::$app->db->createCommand()->batchInsert($table_name, $keys_arr, $data)->sql; | ||
| 130 | -//$query = "{$query_insert} on duplicate key update `PRICE` = values (`PRICE`),`DESCR` = values(`DESCR`),`BOX` = values(`BOX`)"; | ||
| 131 | -//$res = Yii::$app->db->createCommand($query)->execute(); | ||
| 132 | - | ||
| 133 | - | ||
| 134 | - | ||
| 135 | -// Yii::$app->db->createCommand()->batchInsert($table_name, $keys_arr, $data)->sql execute(); | ||
| 136 | \ No newline at end of file | 102 | \ No newline at end of file |
| 1 | +<?php | ||
| 2 | +/** | ||
| 3 | + * Created by PhpStorm. | ||
| 4 | + * User: Cibermag | ||
| 5 | + * Date: 15.09.2015 | ||
| 6 | + * Time: 16:49 | ||
| 7 | + */ | ||
| 8 | + | ||
| 9 | +namespace backend\models; | ||
| 10 | + | ||
| 11 | +use yii\base\Model; | ||
| 12 | +use Yii; | ||
| 13 | + | ||
| 14 | +class Details_old extends Model{ | ||
| 15 | + const KEY_COLUMN = ['IMPORT_ID','BRAND','ARTICLE']; | ||
| 16 | + const BATCH = 500; | ||
| 17 | + | ||
| 18 | + private $mode; | ||
| 19 | + | ||
| 20 | + // обязательные поля модели | ||
| 21 | + public $BRAND; | ||
| 22 | + public $ARTICLE; | ||
| 23 | + public $PRICE; | ||
| 24 | + public $BOX; | ||
| 25 | + | ||
| 26 | + function __construct($mode) | ||
| 27 | + { | ||
| 28 | + $this->mode = $mode; | ||
| 29 | + } | ||
| 30 | + | ||
| 31 | + public function rules() | ||
| 32 | + { | ||
| 33 | + return [ | ||
| 34 | + [['BRAND','ARTICLE', 'PRICE', 'BOX'], 'required' ], | ||
| 35 | + ]; | ||
| 36 | + } | ||
| 37 | + | ||
| 38 | + public function formName() | ||
| 39 | + { | ||
| 40 | + return 'Details'; | ||
| 41 | + } | ||
| 42 | + | ||
| 43 | + | ||
| 44 | + public static function tableName() | ||
| 45 | + { | ||
| 46 | + return '{{%details}}'; | ||
| 47 | + } | ||
| 48 | + | ||
| 49 | +// //@todo вероятно этой функции не место здесь | ||
| 50 | +// public function prepareData ( $data, $configuration ) | ||
| 51 | +// { | ||
| 52 | +// if ( isset($configuration['importer_id']) && $configuration['importer_id']) { | ||
| 53 | +// $data = \Yii::$app->multiparser->addColumn( $data, 'IMPORT_ID', $configuration['importer_id'] ); | ||
| 54 | +// } | ||
| 55 | +// // \common\components\CustomVarDamp::dumpAndDie($data); | ||
| 56 | +// return $data; | ||
| 57 | +// } | ||
| 58 | + | ||
| 59 | + /** | ||
| 60 | + * @param $data - двумерный массив данных для записи в таблицу details | ||
| 61 | + * @throws \yii\db\Exception | ||
| 62 | + * вставляет записи с апдейтом при дубляже ключей | ||
| 63 | + */ | ||
| 64 | + public function save ($data) | ||
| 65 | + { | ||
| 66 | + $table_name = self::tableName(); | ||
| 67 | + $keys_arr = array_keys( $data[0] ); | ||
| 68 | + // найдем те поля которые не являются ключами. Их нужно будет при дубляже апдейтить | ||
| 69 | + $fields_arr_to_update = array_diff( $keys_arr, $this::KEY_COLUMN ); | ||
| 70 | + | ||
| 71 | + $query_update = ' on duplicate key update '; | ||
| 72 | + foreach ($fields_arr_to_update as $field) { | ||
| 73 | + $query_update .= "{$field} = values({$field}),"; | ||
| 74 | + } | ||
| 75 | + // удалим последнюю запятую | ||
| 76 | + $query_update = substr($query_update, 0, strlen($query_update) - 1); | ||
| 77 | + | ||
| 78 | + // запросы будем выполнять пакетами | ||
| 79 | + // размер пакета установлен в константе | ||
| 80 | + // разобъем массив на пакеты и будем их проходить | ||
| 81 | + $data = array_chunk($data, $this::BATCH ); | ||
| 82 | + foreach( $data as $current_batch_array ){ | ||
| 83 | + | ||
| 84 | + //воспользуемся пакетной вставкой от фреймворка, плюс сразу с экранированием и защитой от инъекций | ||
| 85 | + $query_insert = Yii::$app->db->createCommand()->batchInsert($table_name, $keys_arr, $current_batch_array)->sql; | ||
| 86 | + // добавим фрагмент с апдейтом при дубляже | ||
| 87 | + $query = "{$query_insert} {$query_update}"; | ||
| 88 | + // \common\components\CustomVarDamp::dumpAndDie($query); | ||
| 89 | + $res = Yii::$app->db->createCommand($query)->execute(); | ||
| 90 | + | ||
| 91 | + } | ||
| 92 | + | ||
| 93 | + } | ||
| 94 | +} | ||
| 95 | + | ||
| 96 | +// | ||
| 97 | + | ||
| 98 | +//$q = " INSERT INTO {$table_name} ({$keys_string}) VALUES ("; | ||
| 99 | + | ||
| 100 | +//$q .= " on duplicate key update `FULL_ARTICLE` = values (`FULL_ARTICLE`), | ||
| 101 | +// `PRICE` = values (`PRICE`), | ||
| 102 | +// `DESCR` = values(`DESCR`), | ||
| 103 | +// `BOX` = values(`BOX`), | ||
| 104 | +// `ADD_BOX` = values(`ADD_BOX`), | ||
| 105 | +// `GROUP` = values(`GROUP`);"; | ||
| 106 | + | ||
| 107 | +// INSERT INTO table (a,b,c) VALUES (1,2,3),(4,5,6) | ||
| 108 | +// ON DUPLICATE KEY UPDATE c=VALUES(a)+VALUES(b); | ||
| 109 | + | ||
| 110 | + | ||
| 111 | + | ||
| 112 | +//INSERT INTO `books` (`UserId`, `BookId`, `Count`) VALUES (13, 1001, 3) | ||
| 113 | +//ON DUPLICATE KEY UPDATE `Count` = `Count` + VALUES(`Count`); | ||
| 114 | + | ||
| 115 | +//$values_string = ''; | ||
| 116 | +//$keys_arr = array_keys( $data[0] ); | ||
| 117 | +//$keys_string = implode( ',', $keys_arr); | ||
| 118 | +//$table_name = self::tableName(); | ||
| 119 | +//$current_batch = 0; | ||
| 120 | +//for ($i = $current_batch; $i < $this::BATCH AND $i < count($data); $i++) { | ||
| 121 | +// $values_string .= '(' . implode( ',', $data[$i]) . '),'; | ||
| 122 | +//} | ||
| 123 | +// for ($current_batch = $this::BATCH; $current_batch<count($data); $current_batch + $this::BATCH ) | ||
| 124 | +//// удалим последнюю запятую | ||
| 125 | +//$values_string = substr($values_string, 0, strlen($values_string) - 1) . ' '; | ||
| 126 | +////\common\components\CustomVarDamp::dumpAndDie($values_string); | ||
| 127 | +//// $query = "INSERT INTO {$table_name}({$keys_string}) VALUES {$values_string}"; | ||
| 128 | +//// on duplicate key update `PRICE` = values (`PRICE`),`DESCR` = values(`DESCR`),`BOX` = values(`BOX`)"; | ||
| 129 | +//$query_insert = Yii::$app->db->createCommand()->batchInsert($table_name, $keys_arr, $data)->sql; | ||
| 130 | +//$query = "{$query_insert} on duplicate key update `PRICE` = values (`PRICE`),`DESCR` = values(`DESCR`),`BOX` = values(`BOX`)"; | ||
| 131 | +//$res = Yii::$app->db->createCommand($query)->execute(); | ||
| 132 | + | ||
| 133 | + | ||
| 134 | + | ||
| 135 | +// Yii::$app->db->createCommand()->batchInsert($table_name, $keys_arr, $data)->sql execute(); | ||
| 0 | \ No newline at end of file | 136 | \ No newline at end of file |
backend/views/parser/checkPrice.php renamed to backend/views/check_price/index.php
| @@ -2,7 +2,8 @@ | @@ -2,7 +2,8 @@ | ||
| 2 | use yii\helpers\Html; | 2 | use yii\helpers\Html; |
| 3 | use yii\grid\GridView; | 3 | use yii\grid\GridView; |
| 4 | use yii\grid\SerialColumn; | 4 | use yii\grid\SerialColumn; |
| 5 | -use yii\grid\DataColumn; | 5 | +use yii\grid\ActionColumn; |
| 6 | +use yii\widgets\Pjax; | ||
| 6 | 7 | ||
| 7 | 8 | ||
| 8 | /* @var $this yii\web\View */ | 9 | /* @var $this yii\web\View */ |
| @@ -16,9 +17,17 @@ $this->params['breadcrumbs'][] = $this->title; | @@ -16,9 +17,17 @@ $this->params['breadcrumbs'][] = $this->title; | ||
| 16 | 17 | ||
| 17 | <h1><?= Html::encode($this->title) ?></h1> | 18 | <h1><?= Html::encode($this->title) ?></h1> |
| 18 | 19 | ||
| 20 | + | ||
| 19 | <?= GridView::widget( ['dataProvider' => $dataProvider, | 21 | <?= GridView::widget( ['dataProvider' => $dataProvider, |
| 20 | 'columns' => [['class' => SerialColumn::className()], | 22 | 'columns' => [['class' => SerialColumn::className()], |
| 21 | [ | 23 | [ |
| 24 | + 'class' => ActionColumn::className(), | ||
| 25 | + 'template'=>'{view}', | ||
| 26 | + 'contentOptions' => function ($model, $key, $index, $column){ | ||
| 27 | + return ['data' => ['id' => $model->id, 'date' => $model->price_date_update]]; | ||
| 28 | + } | ||
| 29 | + ], | ||
| 30 | + [ | ||
| 22 | 'label' =>'Поставщик', | 31 | 'label' =>'Поставщик', |
| 23 | 'value' => function ($data) { | 32 | 'value' => function ($data) { |
| 24 | return '№ ' .$data->id . ' ' . $data->name; | 33 | return '№ ' .$data->id . ' ' . $data->name; |
| @@ -34,13 +43,16 @@ $this->params['breadcrumbs'][] = $this->title; | @@ -34,13 +43,16 @@ $this->params['breadcrumbs'][] = $this->title; | ||
| 34 | // уберем первый символ - там знак "+" | 43 | // уберем первый символ - там знак "+" |
| 35 | $quo_days = substr( $quo_days, 1, strlen($quo_days) ); | 44 | $quo_days = substr( $quo_days, 1, strlen($quo_days) ); |
| 36 | $quo_days = (int) $quo_days; | 45 | $quo_days = (int) $quo_days; |
| 37 | - | 46 | + |
| 38 | if($quo_days > 15) | 47 | if($quo_days > 15) |
| 39 | $quo_days = '>15'; | 48 | $quo_days = '>15'; |
| 40 | 49 | ||
| 41 | return $quo_days; | 50 | return $quo_days; |
| 42 | } | 51 | } |
| 43 | - ] | 52 | + ], |
| 44 | ]] );?> | 53 | ]] );?> |
| 45 | 54 | ||
| 55 | + | ||
| 56 | + | ||
| 57 | + | ||
| 46 | </div> | 58 | </div> |
| 47 | \ No newline at end of file | 59 | \ No newline at end of file |
| 1 | +<?php | ||
| 2 | +use yii\helpers\Html; | ||
| 3 | +use yii\grid\GridView; | ||
| 4 | +use yii\grid\SerialColumn; | ||
| 5 | +use yii\bootstrap\Modal; | ||
| 6 | + | ||
| 7 | + | ||
| 8 | +/* @var $this yii\web\View */ | ||
| 9 | +/* @var $searchModel backend\models\CatalogSearch */ | ||
| 10 | +/* @var $dataProvider yii\data\ActiveDataProvider */ | ||
| 11 | + | ||
| 12 | +$this->title = 'Проверка прайсов'; | ||
| 13 | +$this->params['breadcrumbs'][] = $this->title; | ||
| 14 | + | ||
| 15 | +?> | ||
| 16 | +<div class="catalog-index"> | ||
| 17 | + | ||
| 18 | + <h1><?= Html::encode($this->title) ?></h1> | ||
| 19 | + | ||
| 20 | + <?= GridView::widget( ['dataProvider' => $dataProvider, | ||
| 21 | + | ||
| 22 | + ] ); | ||
| 23 | + | ||
| 24 | + | ||
| 25 | + ?> | ||
| 26 | + | ||
| 27 | + | ||
| 28 | + | ||
| 29 | +</div> | ||
| 30 | +<?php | ||
| 31 | + | ||
| 32 | +?> | ||
| 0 | \ No newline at end of file | 33 | \ No newline at end of file |
backend/views/layouts/column.php
| @@ -284,7 +284,7 @@ $this->beginContent('@app/views/layouts/main.php'); | @@ -284,7 +284,7 @@ $this->beginContent('@app/views/layouts/main.php'); | ||
| 284 | 'items' => [ | 284 | 'items' => [ |
| 285 | ['label' => "Загрузка файлов", 'url' => ['#'], 'items' => [ | 285 | ['label' => "Загрузка файлов", 'url' => ['#'], 'items' => [ |
| 286 | ['label' => 'Ручная загрузка', 'url' => ['parser/index']], | 286 | ['label' => 'Ручная загрузка', 'url' => ['parser/index']], |
| 287 | - ['label' => 'Проверка прайс файлов', 'url' => ['parser/check_price']], | 287 | + ['label' => 'Проверка прайс файлов', 'url' => ['check_price/index']], |
| 288 | ], | 288 | ], |
| 289 | ], | 289 | ], |
| 290 | ['label' => 'Управление ролями', 'url' => ['#'], 'items' => [ | 290 | ['label' => 'Управление ролями', 'url' => ['#'], 'items' => [ |