Server IP : 80.87.202.40 / Your IP : 216.73.216.169 Web Server : Apache System : Linux rospirotorg.ru 5.14.0-539.el9.x86_64 #1 SMP PREEMPT_DYNAMIC Thu Dec 5 22:26:13 UTC 2024 x86_64 User : bitrix ( 600) PHP Version : 8.2.27 Disable Function : NONE MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : OFF | Sudo : ON | Pkexec : ON Directory : /home/bitrix/ext_www/rospirotorg.ru/bitrix/modules/yandex.market/lib/trading/procedure/ |
Upload File : |
<?php namespace Yandex\Market\Trading\Procedure; use Yandex\Market; use Bitrix\Main; class QueueTable extends Market\Reference\Storage\Table { public static function getTableName() { return 'yamarket_trading_queue'; } public static function getMap() { return [ new Main\Entity\IntegerField('ID', [ 'primary' => true, 'autocomplete' => true, ]), new Main\Entity\IntegerField('CAMPAIGN_ID', [ 'required' => true, ]), new Main\Entity\StringField('PATH', [ 'required' => true, 'validation' => function() { return [ new Main\Entity\Validator\Length(null, 50) ]; }, ]), new Main\Entity\TextField('DATA', [ 'required' => true, 'serialized' => true, ]), new Main\Entity\EnumField('ENTITY_TYPE', [ 'required' => true, 'values' => [ Market\Trading\Entity\Registry::ENTITY_TYPE_ORDER, ], ]), new Main\Entity\StringField('ENTITY_ID', [ 'required' => true, 'validation' => function() { return [ new Main\Entity\Validator\Length(null, 50) ]; }, ]), new Main\Entity\DatetimeField('EXEC_DATE', [ 'required' => true, ]), new Main\Entity\IntegerField('EXEC_COUNT', [ 'default_value' => 0, ]), new Main\Entity\IntegerField('INTERVAL', [ 'required' => true, 'default_value' => 3600, ]), ]; } public static function migrate(Main\DB\Connection $connection) { $tableFields = $connection->getTableFields(self::getTableName()); self::migrateSetupId($connection, $tableFields); } private static function migrateSetupId(Main\DB\Connection $connection, $tableFields) { if (!isset($tableFields['SETUP_ID'])) { return; } self::migrateSetupIdToCampaignIdValue($connection); Market\Migration\StorageFacade::renameColumn($connection, self::getEntity(), 'SETUP_ID', 'CAMPAIGN_ID'); } private static function migrateSetupIdToCampaignIdValue(Main\DB\Connection $connection) { /** @var class-string<Market\Reference\Storage\Table> $compatibleTable */ $compatibleTable = Main\Entity\Base::compileEntity( 'QueueCompatibleTable', [ new Main\Entity\IntegerField('ID', [ 'primary' => true ]), new Main\Entity\IntegerField('SETUP_ID'), ], [ 'table_name' => self::getTableName(), 'namespace' => __NAMESPACE__, ] )->getDataClass(); $tradingIds = array_column($compatibleTable::getList([ 'select' => [ 'SETUP_ID' ], 'group' => [ 'SETUP_ID' ], ])->fetchAll(), 'SETUP_ID', 'SETUP_ID'); if (empty($tradingIds)) { return; } Market\Trading\Setup\Table::migrate($connection); $tradings = Market\Trading\Setup\Model::loadList([ 'filter' => [ '=ID' => $tradingIds ], ]); foreach ($tradings as $trading) { $tradingId = $trading->getId(); if (!$trading->isActive()) { (new Market\Reference\Storage\Batch\DeleteBatch($compatibleTable))->run([ 'filter' => [ '=SETUP_ID' => $tradingId ], ]); continue; } $campaignId = (int)($trading->getCampaignId() ?: $trading->getSettings()->getValue('CAMPAIGN_ID')); if ($campaignId > 0) { (new Market\Reference\Storage\Batch\UpdateBatch($compatibleTable))->run([ 'filter' => [ '=SETUP_ID' => $tradingId ], ], [ 'SETUP_ID' => $campaignId, ]); } else { (new Market\Reference\Storage\Batch\DeleteBatch($compatibleTable))->run([ 'filter' => [ '=SETUP_ID' => $tradingId ], ]); } } } }