Выгрузка балансов магазина #8

Open
opened 2024-11-14 01:15:23 +00:00 by NW · 0 comments
Owner

Описание задачи

Необходимо добавить в административный раздел управления кошельками кнопку для выгрузки балансов магазина в CSV файл. Эта кнопка будет доступна только в случае, если комиссионные по магазину на соответствующие кошельки были выплачены. Также перед выгрузкой необходимо будет обновить балансы всех кошельков, выполняя проверку на открытом блокчейне.

Требования

1. Проверка выплат комиссий

  • Кнопка для выгрузки должна быть активирована только в случае выполнения всех необходимых комиссионных выплат для магазина.
  • Проверка выплаты комиссии:
    • Для каждой криптовалюты должны быть проверены остатки на кошельках, чтобы общая сумма выплаты комиссии была равна или больше заранее настроенной величины (например, 2% от прибыли магазина).
    • После успешной выплаты комиссии кнопка выгрузки становится активной.

2. Выгрузка балансов в CSV

  • При нажатии на кнопку выгрузки, должен генерироваться CSV файл с информацией о балансе магазина.
  • В выгруженном файле должны быть следующие колонки:
    • Тип кошелька (например, Bitcoin, Litecoin, Ethereum).
    • Адрес кошелька.
    • Сид-фраза (или уникальный идентификатор кошелька, если по соображениям безопасности сид-фраза не может быть выгружена).
    • Баланс кошелька (в соответствующей криптовалюте).

3. Обновление балансов кошельков

Перед выгрузкой необходимо обновить балансы всех кошельков:

  • Для этого нужно использовать функционал проверки баланса на открытых блокчейнах (например, через публичные API).
  • Система должна проверить текущие балансы всех кошельков и пересчитать их в соответствии с данными на блокчейне.

4. Процесс выполнения выгрузки

  • Шаг 1: Проверка, что все комиссионные были выплачены.
  • Шаг 2: Обновление балансов кошельков с использованием API блокчейнов.
  • Шаг 3: Генерация CSV файла с текущими данными по кошелькам.
  • Шаг 4: Предоставление пользователю возможности скачать CSV файл.

Техническая реализация

1. Проверка выплат комиссий

Перед включением функционала выгрузки, необходимо проверить, что комиссия была выплачена.

Примерный алгоритм для проверки комиссий:

  • Определить минимальную сумму для выплаты (например, 2% от общей суммы).
  • Проверить балансы всех кошельков и вычислить, была ли выплачена нужная комиссия.

2. Обновление балансов через API

Для получения актуальных данных о балансе на кошельке, можно использовать API публичных блокчейнов. Пример таких API:

Пример кода для обновления баланса кошелька:

const axios = require('axios');

async function getBalance(crypto, address) {
  let url;
  if (crypto === 'bitcoin') {
    url = `https://blockchain.info/q/addressbalance/${address}`;
  } else if (crypto === 'ethereum') {
    url = `https://api.etherscan.io/api?module=account&action=balance&address=${address}&tag=latest`;
  } else if (crypto === 'litecoin') {
    url = `https://api.blockchair.com/litecoin/dashboards/address/${address}`;
  }

  try {
    const response = await axios.get(url);
    return response.data;
  } catch (error) {
    console.error('Error fetching balance:', error);
    return null;
  }
}

3. Генерация CSV файла

Для генерации CSV файла можно использовать библиотеку, например, json2csv.

Пример кода для генерации CSV:

const { parse } = require('json2csv');
const fs = require('fs');

function generateCSV(wallets) {
  const csv = parse(wallets);
  fs.writeFileSync('wallets.csv', csv);
}

// Пример данных кошельков
const wallets = [
  { type: 'Bitcoin', address: '1A1zP1eP5QGefi2DMPTfTL5SLmv7DivfNa', balance: '0.1234 BTC' },
  { type: 'Ethereum', address: '0x742d35Cc6634C0532925a3b844Bc454e4438f44e', balance: '1.2345 ETH' },
  { type: 'Litecoin', address: 'LZ52NK2kSf8zYSj6i7rskHq1b47j2MK1Uz', balance: '12.3456 LTC' },
];

generateCSV(wallets);

4. Реализация кнопки и логики выгрузки

Для реализации кнопки в административной панели нужно добавить новый элемент в интерфейсе. После нажатия на кнопку, система проверяет выплату комиссий, затем обновляет балансы всех кошельков и генерирует CSV файл.

Пример кнопки и её функционала:

<button id="export-balances" disabled>Выгрузить балансы</button>

<script>
document.getElementById('export-balances').addEventListener('click', async () => {
  // Проверка выплат комиссий
  const commissionPaid = await checkCommissionPaid();
  if (!commissionPaid) {
    alert('Комиссии еще не выплачены');
    return;
  }

  // Обновление балансов кошельков
  const wallets = await updateWalletBalances();

  // Генерация и скачивание CSV
  generateCSV(wallets);
});
</script>

Чек-лист выполнения

  • Проверка комиссий перед выгрузкой балансов.
  • Реализация обновления балансов кошельков через публичные API блокчейнов.
  • Разработка функционала генерации CSV файла с данными кошельков.
  • Создание кнопки для выгрузки балансов в административном интерфейсе.
  • Оповещения для администратора о статусе выполнения выгрузки.

Ожидаемый результат

  1. Кнопка для выгрузки балансов появляется в административном разделе только после выплаты комиссий.
  2. В случае нажатия кнопки генерируется CSV файл с актуальными данными по кошелькам.
  3. Балансы кошельков обновляются через публичные блокчейн API перед генерацией выгрузки.
  4. CSV файл содержит правильную информацию по типу кошелька, адресу, сид-фразе и балансу.
## Описание задачи Необходимо добавить в административный раздел управления кошельками кнопку для **выгрузки балансов магазина** в **CSV файл**. Эта кнопка будет доступна только в случае, если **комиссионные по магазину** на соответствующие кошельки были **выплачены**. Также перед выгрузкой необходимо будет обновить балансы всех кошельков, выполняя проверку на **открытом блокчейне**. ## Требования ### 1. **Проверка выплат комиссий** - Кнопка для выгрузки должна быть **активирована только в случае** выполнения всех необходимых комиссионных выплат для магазина. - Проверка выплаты комиссии: - Для каждой криптовалюты должны быть проверены остатки на кошельках, чтобы общая сумма выплаты комиссии была равна или больше заранее настроенной величины (например, 2% от прибыли магазина). - После успешной выплаты комиссии кнопка выгрузки становится активной. ### 2. **Выгрузка балансов в CSV** - При нажатии на кнопку выгрузки, должен генерироваться **CSV файл** с информацией о балансе магазина. - В выгруженном файле должны быть следующие колонки: - **Тип кошелька** (например, Bitcoin, Litecoin, Ethereum). - **Адрес кошелька**. - **Сид-фраза** (или уникальный идентификатор кошелька, если по соображениям безопасности сид-фраза не может быть выгружена). - **Баланс кошелька** (в соответствующей криптовалюте). ### 3. **Обновление балансов кошельков** Перед выгрузкой необходимо **обновить балансы всех кошельков**: - Для этого нужно использовать **функционал проверки баланса на открытых блокчейнах** (например, через публичные API). - Система должна проверить текущие балансы всех кошельков и пересчитать их в соответствии с данными на блокчейне. ### 4. **Процесс выполнения выгрузки** - **Шаг 1**: Проверка, что все комиссионные были выплачены. - **Шаг 2**: Обновление балансов кошельков с использованием API блокчейнов. - **Шаг 3**: Генерация CSV файла с текущими данными по кошелькам. - **Шаг 4**: Предоставление пользователю возможности **скачать CSV файл**. --- ## Техническая реализация ### 1. **Проверка выплат комиссий** Перед включением функционала выгрузки, необходимо проверить, что комиссия была выплачена. Примерный алгоритм для проверки комиссий: - Определить минимальную сумму для выплаты (например, 2% от общей суммы). - Проверить балансы всех кошельков и вычислить, была ли выплачена нужная комиссия. ### 2. **Обновление балансов через API** Для получения актуальных данных о балансе на кошельке, можно использовать API публичных блокчейнов. Пример таких API: - **Bitcoin**: [Blockchain API](https://www.blockchain.com/api) - **Ethereum**: [Etherscan API](https://etherscan.io/apis) - **Litecoin**: [Blockchair API](https://blockchair.com/api) Пример кода для обновления баланса кошелька: ```javascript const axios = require('axios'); async function getBalance(crypto, address) { let url; if (crypto === 'bitcoin') { url = `https://blockchain.info/q/addressbalance/${address}`; } else if (crypto === 'ethereum') { url = `https://api.etherscan.io/api?module=account&action=balance&address=${address}&tag=latest`; } else if (crypto === 'litecoin') { url = `https://api.blockchair.com/litecoin/dashboards/address/${address}`; } try { const response = await axios.get(url); return response.data; } catch (error) { console.error('Error fetching balance:', error); return null; } } ``` ### 3. **Генерация CSV файла** Для генерации CSV файла можно использовать библиотеку, например, **json2csv**. Пример кода для генерации CSV: ```javascript const { parse } = require('json2csv'); const fs = require('fs'); function generateCSV(wallets) { const csv = parse(wallets); fs.writeFileSync('wallets.csv', csv); } // Пример данных кошельков const wallets = [ { type: 'Bitcoin', address: '1A1zP1eP5QGefi2DMPTfTL5SLmv7DivfNa', balance: '0.1234 BTC' }, { type: 'Ethereum', address: '0x742d35Cc6634C0532925a3b844Bc454e4438f44e', balance: '1.2345 ETH' }, { type: 'Litecoin', address: 'LZ52NK2kSf8zYSj6i7rskHq1b47j2MK1Uz', balance: '12.3456 LTC' }, ]; generateCSV(wallets); ``` ### 4. **Реализация кнопки и логики выгрузки** Для реализации кнопки в административной панели нужно добавить новый элемент в интерфейсе. После нажатия на кнопку, система проверяет выплату комиссий, затем обновляет балансы всех кошельков и генерирует CSV файл. Пример кнопки и её функционала: ```html <button id="export-balances" disabled>Выгрузить балансы</button> <script> document.getElementById('export-balances').addEventListener('click', async () => { // Проверка выплат комиссий const commissionPaid = await checkCommissionPaid(); if (!commissionPaid) { alert('Комиссии еще не выплачены'); return; } // Обновление балансов кошельков const wallets = await updateWalletBalances(); // Генерация и скачивание CSV generateCSV(wallets); }); </script> ``` --- ## Чек-лист выполнения - [ ] Проверка комиссий перед выгрузкой балансов. - [ ] Реализация обновления балансов кошельков через публичные API блокчейнов. - [ ] Разработка функционала генерации CSV файла с данными кошельков. - [ ] Создание кнопки для выгрузки балансов в административном интерфейсе. - [ ] Оповещения для администратора о статусе выполнения выгрузки. --- ## Ожидаемый результат 1. Кнопка для выгрузки балансов появляется в административном разделе только после выплаты комиссий. 2. В случае нажатия кнопки генерируется CSV файл с актуальными данными по кошелькам. 3. Балансы кошельков обновляются через публичные блокчейн API перед генерацией выгрузки. 4. CSV файл содержит правильную информацию по типу кошелька, адресу, сид-фразе и балансу.
NW added this to the Оптимизация и новый функционал milestone 2024-11-14 01:15:23 +00:00
NW added this to the Универсальный телеграмм магазин project 2024-11-14 01:15:23 +00:00
Sign in to join this conversation.
No Label
No Assignees
1 Participants
Notifications
Due Date
The due date is invalid or out of range. Please use the format 'yyyy-mm-dd'.

No due date set.

Dependencies

No dependencies set.

Reference: Telegram-Market/telegram-shop#8
No description provided.