Добрый вечер. Остался у кого нибудь запрос на обновление BILLING.
Нужно чтобы с tbl_rfaccount перенес аккаунты которых нету в BILLING.
А то был на форуме найти не могу. Поделитесь у кого есть.
нужен запрос на обновление базы BILLING, чтобы обновило на недостающие аккаунт из базы RF_USER таблица tbl_rfaccount, в базу BILLING таблицы tbl_user, tbl_personal_billing с проверкой если там есть аккаунт совпадение то его не дописывать снова.
Последний раз редактировалось УбийцаСмерть; 27.04.2026 в 18:35.
insert into BILLING.dbo.tbl_personal_billing (id)
select id from RF_USER.dbo.tbl_rfaccount
update RF_User.dbo.tbl_rfaccount
set accounttype = 1
where accounttype = 0
ADD_ACCOUNT_BILLING
Код:
DECLARE @name VARCHAR(13)
DECLARE @pw VARCHAR(13)
DECLARE @birth smalldatetime
DECLARE @email varchar(255)
DECLARE @status int
DECLARE @cash int
DECLARE @lama int
/****** Login ******/
SET @name = 'Admin'
/****** Password ******/
SET @pw = '0381956z'
/****** Birthday ******/
SET @birth = '2024-01-20 20:25:00'
/****** Your Email ******/
SET @email = 'Test@gmail.com'
/****** Set 2 for turn on Premium or Set 1 for turn off Premium ******/
SET @status = '2'
/****** How long players get premium service (in days) exemple : 1 for 1 days, 2 for 2 days, 3 for 3days. ******/
SET @lama = '5'
/****** Cashpoint amount ******/
SET @cash = '900000'
INSERT INTO [RF_USER].[dbo].[tbl_rfaccount] ([id],[password],[birthdate],[Email])
VALUES(CONVERT(BINARY(13),@name),CONVERT(BINARY(13),@pw),@birth,@email)
INSERT INTO [BILLING].[dbo].[tbl_UserStatus] ([id],[Status],[DTStartPrem],[DTEndPrem],[Cash])
VALUES(@name,@status,CONVERT(datetime,GETDATE()),CONVERT(datetime,GETDATE()+@lama),@cash)
При желании подправишь как нужно.
DevProtect 2.2.3.2 , Aop 4.15 , 4.55 Комплексная система защиты для вашего сервера RF Online.
Добрый вечер. Остался у кого нибудь запрос на обновление BILLING.
Нужно чтобы с tbl_rfaccount перенес аккаунты которых нету в BILLING.
А то был на форуме найти не могу. Поделитесь у кого есть.
нужен запрос на обновление базы BILLING, чтобы обновило на недостающие аккаунт из базы RF_USER таблица tbl_rfaccount, в базу BILLING таблицы tbl_user, tbl_personal_billing с проверкой если там есть аккаунт совпадение то его не дописывать снова.
Сделал решение на nodejs:
1. Создать папку с любым названием.
2. Создать внутри файл index.js
3. Вставить следующее содержимое и сохранить:
Код:
const sql = require('mssql');
const configRF_Billing = {
server: 'localhost',
user: 'sa',
password: 'pass',
encrypt: false
};
const configRF_User = {
server: 'localhost',
user: 'sa',
password: 'pass',
encrypt: false
};
function prepareKey(value) {
if (value === null) {
return 'null';
}
if (typeof value === 'string') {
return value;
}
let resultBytes = [];
for (let i = 0; i < value.length; i++) {
if (value[i]) {
resultBytes.push(value[i]);
}
}
if (resultBytes.length === 0) {
return '0';
}
return Buffer.from(resultBytes).toString();
}
async function getAccounts() {
try {
const poolBilling = await sql.connect(configRF_Billing);
const poolUser = await sql.connect(configRF_User);
const accountsResponse = await poolUser.request().query('SELECT [id] FROM RF_User.dbo.tbl_rfaccount');
let allAccounts = accountsResponse.recordset;
for (let account of allAccounts) {
const userId = account['UserID'] = prepareKey(account.id);
const billingUserResponse = await poolBilling.request().query('SELECT [UserID] FROM BILLING.dbo.tbl_user WHERE UserID = \'' + userId + '\'');
let billingUser = billingUserResponse.recordset;
if (!billingUser[0]) {
const billingUserInsertResponse = await poolBilling.request().query('INSERT INTO BILLING.dbo.tbl_user (UserID, Cash) VALUES (\'' + userId + '\', 0)');
if (billingUserInsertResponse.rowsAffected && billingUserInsertResponse.rowsAffected[0] > 0) {
console.log(`Успешно вставлено ${billingUserInsertResponse.rowsAffected[0]} записей`);
} else {
console.log('Ничего не было вставлено');
}
}
const billingPersBillResponse = await poolBilling.request().query('SELECT [ID] FROM BILLING.dbo.tbl_personal_billing WHERE ID = \'' + account.id + '\'');
let billingPersBill = billingPersBillResponse.recordset;
if (!billingPersBill[0]) {
const billingPersBillInsertResponse = await poolBilling.request().query('INSERT INTO BILLING.dbo.tbl_personal_billing (ID, BillingType, EndDate, RemainTime) VALUES (0x' + account.id.toString('hex') + ', 2, (CONVERT(datetime,GETDATE()+30)), 30)');
if (billingPersBillInsertResponse.rowsAffected && billingPersBillInsertResponse.rowsAffected[0] > 0) {
console.log(`Успешно вставлено ${billingPersBillInsertResponse.rowsAffected[0]} записей`);
} else {
console.log('Ничего не было вставлено');
}
}
}
// console.log(allAccounts);
await poolBilling.close();
await poolUser.close();
} catch (err) {
console.error('SQL error', err);
}
}
getAccounts();
4. В коде в configRF_Billing и в configRF_User указать логин, пароль и хост для подключения к вашей БД.
5. Для SQL запросов необходимо поправить названия баз BILLING, RF_User на те названия, какие имеют ваши данные базы.
6. Создать внутри папки файл package.json. Вставить следующее содержимое:
1. После выполнения пунктов выше. Перейти в папку с кодом.
2. Открыть terminal или cmd. Прописать следующую команду:
Windows (CMD):
Код:
cd "<путь до папки с файлом index.js и package.json>"
npm install
npm run start
Linux/MacOs (Terminal):
Код:
cd "<путь до папки с файлом index.js и package.json>"
npm install
npm run start
Описание:
Скрипт возьмет все записи из базы RF_User таблицы tbl_rfaccount и добавит данные в таблицы tbl_user и tbl_personal_billing базы BILLING. Уже существующие значения затронуты не будут.
По умолчанию аккаунты в BILLING добавляются с премиумом на 30 дней. Для таблицы tbl_user в BILLING новые аккаунты добавляются с CashShop равным 0.
Последний раз редактировалось rule-z; 29.04.2026 в 11:21.