From 31e5c04e0ed5bfc9020a81064fa553b19db2130a Mon Sep 17 00:00:00 2001 From: FIRST_NAME LAST_NAME Date: Sun, 6 Apr 2025 12:29:45 +0300 Subject: [PATCH] fixed number formats, added rollback new endpoint --- src/lib/tools/requests/requests.js | 2 +- src/lib/tools/strings/Strings.js | 53 ++++++++++++------- src/routes/disputes/+page.svelte | 7 +-- src/routes/login/+page.svelte | 2 +- src/routes/merchants/+page.svelte | 11 ++-- src/routes/orders/+page.svelte | 40 +++++++++++++- src/routes/payouts/+page.svelte | 10 ++-- .../user/profile/[userToken]/+page.svelte | 14 +++-- src/routes/userslist/+page.svelte | 48 ++++++++++------- 9 files changed, 130 insertions(+), 57 deletions(-) diff --git a/src/lib/tools/requests/requests.js b/src/lib/tools/requests/requests.js index e5076fc..8899c0c 100644 --- a/src/lib/tools/requests/requests.js +++ b/src/lib/tools/requests/requests.js @@ -22,7 +22,7 @@ function defaultDataResponseProcessor(data) { export const API_PATH_MAIN = "https://hostapay.trade/api/v1/"; export const API_PATH_TEST = "https://test.0x000f.ru/api/v1/"; -export const API_PATH_VALUE = API_PATH_MAIN; +export const API_PATH_VALUE = API_PATH_TEST; async function makePost( url, diff --git a/src/lib/tools/strings/Strings.js b/src/lib/tools/strings/Strings.js index c63e346..9f3c908 100644 --- a/src/lib/tools/strings/Strings.js +++ b/src/lib/tools/strings/Strings.js @@ -1,23 +1,40 @@ - export function isStringEmptyOrSpaces(str) { - if (typeof str === "string") return str == null || str?.trim() === ""; - else if (typeof str === "object") { - if (Array.isArray(str)) { - for (const i of str) { - if (i == null || i?.trim() === "") return true; - } - } + if (typeof str === "string") return str == null || str?.trim() === ""; + else if (typeof str === "object") { + if (Array.isArray(str)) { + for (const i of str) { + if (i == null || i?.trim() === "") return true; + } } - return false; + } + return false; } export function truncateMiddle(str, n) { - if (str.length <= 2 * n) { - return str; // Если длина строки меньше или равна 2n, то ничего не обрезаем - } - - const leftPart = str.slice(0, n); // Первые n символов - const rightPart = str.slice(-n); // Последние n символов - - return leftPart + '...' + rightPart; // Соединяем с "..." -} \ No newline at end of file + if (str.length <= 2 * n) { + return str; // Если длина строки меньше или равна 2n, то ничего не обрезаем + } + + const leftPart = str.slice(0, n); // Первые n символов + const rightPart = str.slice(-n); // Последние n символов + + return leftPart + "..." + rightPart; // Соединяем с "..." +} + +/** + * + * @param {string | number} number + * @returns + */ +export function toValidNumberFormat(number) { + if (isNaN(Number(number))) { + return "0.00"; + } + + return Number(number) + .toLocaleString("ru-RU", { + minimumFractionDigits: 2, + maximumFractionDigits: 2, + }) + .replace(/,/g, "."); +} diff --git a/src/routes/disputes/+page.svelte b/src/routes/disputes/+page.svelte index e9091b6..779f2a6 100644 --- a/src/routes/disputes/+page.svelte +++ b/src/routes/disputes/+page.svelte @@ -10,6 +10,7 @@ import Pagination from "$lib/ui-components/pagination.svelte"; import { redirect } from "$lib/tools/url/URLTools"; import axios from "axios"; + import { toValidNumberFormat } from "$lib/tools/strings/Strings"; const disputesStatusMap = { "4": "Требует проверки", @@ -261,7 +262,7 @@ {dispute["requisite_cardnumber"]} {dispute["requisite_phone"]} - {dispute["amount"]} + {toValidNumberFormat(dispute["amount"])} {dispute["order_creationtime"]} { @@ -312,14 +313,14 @@

Сумма в споре

- {Number(selectedDispute.new_amount)} + {toValidNumberFormat(selectedDispute.new_amount)} {selectedDispute.out_code}

Сумма в заявке

- {Number(selectedDispute.amount)} + {toValidNumberFormat(selectedDispute.amount)} {selectedDispute.out_code}

diff --git a/src/routes/login/+page.svelte b/src/routes/login/+page.svelte index 3f2cd2a..e92c6fd 100644 --- a/src/routes/login/+page.svelte +++ b/src/routes/login/+page.svelte @@ -24,7 +24,7 @@ totpValid = true; showLoadingSpinner = true; const result = await makePost("client/login", { - user_token: input_token.value, + user_token: input_token.value.trim(), totp: input_totp.value, }); if (result.error) { diff --git a/src/routes/merchants/+page.svelte b/src/routes/merchants/+page.svelte index e435a11..20628bb 100644 --- a/src/routes/merchants/+page.svelte +++ b/src/routes/merchants/+page.svelte @@ -7,7 +7,10 @@ import Pagination from "$lib/ui-components/pagination.svelte"; import { redirect } from "$lib/tools/url/URLTools"; import axios from "axios"; - import { isStringEmptyOrSpaces } from "$lib/tools/strings/Strings"; + import { + isStringEmptyOrSpaces, + toValidNumberFormat, + } from "$lib/tools/strings/Strings"; import { ChevronLeftIcon, ChevronRightIcon, @@ -299,7 +302,7 @@ {merch["code"]} {merch["is_active"] === "t" ? "Активен" : "Отключен"} {merch["balance"]} + >{toValidNumberFormat(merch["balance"])} {merch["balance_type"] === "0" ? "USDT" : merch["code"]} @@ -423,10 +426,10 @@ {settle["code"]} - {settle["amount"]} USDT + {toValidNumberFormat(settle["amount"])} USDT - {settle["merchant_amount"]} USDT + {toValidNumberFormat(settle["merchant_amount"])} USDT

{settle["settle_address"]}

diff --git a/src/routes/orders/+page.svelte b/src/routes/orders/+page.svelte index 544007c..ab9846e 100644 --- a/src/routes/orders/+page.svelte +++ b/src/routes/orders/+page.svelte @@ -3,6 +3,7 @@ import { getAuthInfo, makeAuthHeaderForAxios } from "$lib/auth/Auth"; import { makePost } from "$lib/tools/requests/requests"; + import { toValidNumberFormat } from "$lib/tools/strings/Strings"; import { sayError, sayInfo } from "$lib/tools/toaster/Toaster"; const orderStatusMap = { @@ -113,6 +114,29 @@ showChangeSum = false; showFoundedOrderWindow = false; } + async function changeSumWithoutBalance(uuid) { + showLoadingChangeSum = true; + const res = await makePost( + "admin/rollbackOrderWithoutBalance", + { + id: uuid, + summa: newSum.toString(), + }, + makeAuthHeaderForAxios(getAuthInfo()?.a) + ); + if (res.error) { + if (res.status == 401) { + sayError("Данные авторизации устарели!"); + } + sayError("Не удалось изменить сумму"); + showLoadingChangeSum = false; + return; + } + sayInfo("Сумма успешно изменена!"); + showLoadingChangeSum = false; + showChangeSum = false; + showFoundedOrderWindow = false; + }
@@ -182,7 +206,7 @@ {/if}

Сумма

- {foundedDispute["summa"]} + {toValidNumberFormat(foundedDispute["summa"])} {foundedDispute["currency_code"]} - {payout["amount"]} {payout["code"]} + {toValidNumberFormat(payout["amount"])} {payout["code"]} {payout["pan"]} @@ -626,7 +630,7 @@

Сумма

- {selectedPayout.amount} + {toValidNumberFormat(selectedPayout.amount)} {selectedPayout.code}

diff --git a/src/routes/user/profile/[userToken]/+page.svelte b/src/routes/user/profile/[userToken]/+page.svelte index 413647a..7f39696 100644 --- a/src/routes/user/profile/[userToken]/+page.svelte +++ b/src/routes/user/profile/[userToken]/+page.svelte @@ -2,6 +2,7 @@ import { browser } from "$app/environment"; import { getAuthInfo, makeAuthHeaderForAxios } from "$lib/auth/Auth.js"; import { makePost } from "$lib/tools/requests/requests.js"; + import { toValidNumberFormat } from "$lib/tools/strings/Strings.js"; import { sayError } from "$lib/tools/toaster/Toaster.js"; import { redirect } from "$lib/tools/url/URLTools.js"; import Pagination from "$lib/ui-components/pagination.svelte"; @@ -212,7 +213,10 @@

Баланс:

-

{Number(userData.balance)} {userData?.code}

+

+ {toValidNumberFormat(userData.balance)} + {userData?.code} +

Страховка:

@@ -315,8 +319,8 @@ {requisite["phone"]} {requisite["name"]} {requisite["device_uuid"]} - {requisite["total_volume"]} - {requisite["daily_volume_limit"]} + {toValidNumberFormat(requisite["total_volume"])} + {toValidNumberFormat(requisite["daily_volume_limit"])} {order["uuid"]} {order["external_user_id"]} {order["status"]} - {order["summa"]} {userData?.code} + {toValidNumberFormat(order["summa"])} {userData?.code} {orderTypesMap[order["order_type"]]} @@ -457,7 +461,7 @@ {#each userDeposits as depo} {depoStatusMap[depo["pending"]]} - {Number(depo["amount"]).toFixed(4)} USDT + {toValidNumberFormat(depo["amount"])} USDT {depo["creationtime"]} - {#each users as user} - + {#each users as user} + {user["token"]} {user["name"]} {user["surname"]} - {(Number(user["balance"]))} {user["code"]} + {toValidNumberFormat(user["balance"])} {user["code"]} - Профиль + Профиль - {/each} + {/each} - {:else} + {:else}
- {/if} -
+ {/if} +