Files
boursecu_server/database/sql/goldali_database_settings.sql
T
2026-08-22 16:50:49 +03:30

176 lines
12 KiB
SQL
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
-- =============================================================================
-- گلد علی — تنظیم دیتابیس برای سرور برنچ Abshode_Khanegi (بدون تغییر کد per-client)
--
-- یک بار بعد از deploy: بکاپ بگیرید، USE دیتابیس گلد علی، این فایل را اجرا کنید.
-- جدول const اگر نامش cnt است، در پایین فایل جایگزین کنید.
-- =============================================================================
START TRANSACTION;
-- -----------------------------------------------------------------------------
-- ۱) قیمت — محصول اصلی (نه اتحادیه)؛ main_product اول settings بعد const
-- -----------------------------------------------------------------------------
-- [super-admin can_edit=0]
-- UPDATE `settings` SET `value` = 'main_product' WHERE `key` = 'price_provider';
INSERT INTO `settings` (`key`, `value`, `title_fa`, `can_edit`, `is_active`, `description`)
SELECT 'price_provider', 'main_product', 'منبع قیمت', 1, 1, 'montzar|main_product|taban_gohar'
WHERE NOT EXISTS (SELECT 1 FROM `settings` WHERE `key` = 'price_provider' LIMIT 1);
-- مقدار عددی id محصول (۱۳) — نه UUID تابلو؛ یا reading_method مثل estjt_41670...
INSERT INTO `settings` (`key`, `value`, `title_fa`, `can_edit`, `is_active`, `description`)
SELECT 'main_product', '13', 'محصول آبشده (id یا reading_method)', 1, 1, 'مثلاً 13 — نه UUID API'
WHERE NOT EXISTS (SELECT 1 FROM `settings` WHERE `key` = 'main_product' LIMIT 1);
-- [super-admin can_edit=0]
-- UPDATE `settings` SET `value` = '13' WHERE `key` = 'main_product';
-- نمایش buy/sell در /api/price/last (ریال — جدا از کارمزد سفارش)
INSERT INTO `settings` (`key`, `value`, `title_fa`, `can_edit`, `is_active`, `description`)
SELECT 'fee_single', '500000', 'اختلاف قیمت نمایش', 1, 1, NULL
WHERE NOT EXISTS (SELECT 1 FROM `settings` WHERE `key` = 'fee_single' LIMIT 1);
INSERT INTO `settings` (`key`, `value`, `title_fa`, `can_edit`, `is_active`, `description`)
SELECT 'buy_fee', '500000', 'اختلاف خرید نمایش', 1, 1, NULL
WHERE NOT EXISTS (SELECT 1 FROM `settings` WHERE `key` = 'buy_fee' LIMIT 1);
INSERT INTO `settings` (`key`, `value`, `title_fa`, `can_edit`, `is_active`, `description`)
SELECT 'sell_fee', '500000', 'اختلاف فروش نمایش', 1, 1, NULL
WHERE NOT EXISTS (SELECT 1 FROM `settings` WHERE `key` = 'sell_fee' LIMIT 1);
UPDATE `settings` SET `value` = '500000' WHERE `key` IN ('fee_single', 'buy_fee', 'sell_fee');
-- -----------------------------------------------------------------------------
-- ۲) کارمزد سفارش — مثل config/fee.php برنچ goldAliii (اجباری برای /customer/single/order)
-- -----------------------------------------------------------------------------
INSERT INTO `settings` (`key`, `value`, `title_fa`, `can_edit`, `is_active`, `description`)
SELECT 'fee_cash', '0', 'اختلاف ریالی هر گرم (سفارش)', 1, 1, 'مقدار نمونه: 0'
WHERE NOT EXISTS (SELECT 1 FROM `settings` WHERE `key` = 'fee_cash' LIMIT 1);
-- مثل محصول ۱۳ (percent_fee_buy=0.02) — نه 0.07؛ سفارش‌های قدیمی موفق هم 0.02 بودند
INSERT INTO `settings` (`key`, `value`, `title_fa`, `can_edit`, `is_active`, `description`)
SELECT 'fee_service_charge_percentage', '0.02', 'درصد کارمزد سفارش', 1, 1, 'هم‌تراز percent_fee_buy محصول'
WHERE NOT EXISTS (SELECT 1 FROM `settings` WHERE `key` = 'fee_service_charge_percentage' LIMIT 1);
UPDATE `settings` SET `value` = '0' WHERE `key` = 'fee_cash';
UPDATE `settings` SET `value` = '0.02' WHERE `key` = 'fee_service_charge_percentage';
-- -----------------------------------------------------------------------------
-- ۳) ثبت‌نام / معرف / APIها
-- -----------------------------------------------------------------------------
INSERT INTO `settings` (`key`, `value`, `title_fa`, `can_edit`, `is_active`, `description`)
SELECT 'referral_id', 'required', 'الزام کد معرف', 1, 1, 'required = اجباری؛ خالی = اختیاری|required,'
WHERE NOT EXISTS (SELECT 1 FROM `settings` WHERE `key` = 'referral_id' LIMIT 1);
INSERT INTO `settings` (`key`, `value`, `title_fa`, `can_edit`, `is_active`, `description`)
SELECT 'open_register', '1', 'ثبت‌نام باز', 1, 1, NULL
WHERE NOT EXISTS (SELECT 1 FROM `settings` WHERE `key` = 'open_register' LIMIT 1);
UPDATE `settings` SET `is_active` = 1 WHERE `key` = 'open_register';
-- [super-admin can_edit=0]
-- INSERT INTO `settings` (`key`, `value`, `title_fa`, `can_edit`, `is_active`, `description`)
-- SELECT 'profit_gold_api_enabled', 'true', 'API سود طلا', 0, 1, NULL
-- WHERE NOT EXISTS (SELECT 1 FROM `settings` WHERE `key` = 'profit_gold_api_enabled' LIMIT 1);
UPDATE `settings` SET `value` = 'true' WHERE `key` = 'profit_gold_api_enabled';
-- API خارجی HMAC (قبلاً فقط در .env: NODE_CLIENT_ID / NODE_SHARED_SECRET)
INSERT INTO `settings` (`key`, `value`, `title_fa`, `can_edit`, `is_active`, `description`)
SELECT 'node_client_id', '', 'شناسه کلاینت API خارجی', 1, 1, 'از .env کپی کنید'
WHERE NOT EXISTS (SELECT 1 FROM `settings` WHERE `key` = 'node_client_id' LIMIT 1);
INSERT INTO `settings` (`key`, `value`, `title_fa`, `can_edit`, `is_active`, `description`)
SELECT 'node_shared_secret', '', 'کلید HMAC API خارجی', 1, 1, 'از .env کپی کنید'
WHERE NOT EXISTS (SELECT 1 FROM `settings` WHERE `key` = 'node_shared_secret' LIMIT 1);
INSERT INTO `settings` (`key`, `value`, `title_fa`, `can_edit`, `is_active`, `description`)
SELECT 'external_order_api_enabled', 'true', 'API سفارش خارجی', 1, 1, NULL
WHERE NOT EXISTS (SELECT 1 FROM `settings` WHERE `key` = 'external_order_api_enabled' LIMIT 1);
-- [super-admin can_edit=0]
-- UPDATE `settings` SET `value` = 'true' WHERE `key` = 'external_order_api_enabled';
-- بعد از اجرا در پنل: node_client_id و node_shared_secret را با مقادیر .env پر کنید
-- [super-admin can_edit=0]
-- INSERT INTO `settings` (`key`, `value`, `title_fa`, `can_edit`, `is_active`, `description`)
-- SELECT 'balance_report_exclude_customer_id', '12', 'حذف مشتری از تراز ادمین', 0, 1, NULL
-- WHERE NOT EXISTS (SELECT 1 FROM `settings` WHERE `key` = 'balance_report_exclude_customer_id' LIMIT 1);
UPDATE `settings` SET `value` = '12' WHERE `key` = 'balance_report_exclude_customer_id';
-- [super-admin can_edit=0]
-- INSERT INTO `settings` (`key`, `value`, `title_fa`, `can_edit`, `is_active`, `description`)
-- SELECT 'send_to_tahesab', 'false', 'ارسال ته‌حساب', 0, 1, NULL
-- WHERE NOT EXISTS (SELECT 1 FROM `settings` WHERE `key` = 'send_to_tahesab' LIMIT 1);
-- [super-admin can_edit=0]
-- UPDATE `settings` SET `value` = 'false' WHERE `key` = 'send_to_tahesab';
-- -----------------------------------------------------------------------------
-- ۴) درگاه payment.goldaliii.com
-- -----------------------------------------------------------------------------
INSERT INTO `settings` (`key`, `value`, `title_fa`, `can_edit`, `is_active`, `description`)
SELECT 'payping_start_url', 'https://payment.goldaliii.com/payment/start', 'شروع درگاه', 1, 1, NULL
WHERE NOT EXISTS (SELECT 1 FROM `settings` WHERE `key` = 'payping_start_url' LIMIT 1);
INSERT INTO `settings` (`key`, `value`, `title_fa`, `can_edit`, `is_active`, `description`)
SELECT 'payping_verify_url', 'https://payment.goldaliii.com/payment/verify', 'تأیید درگاه', 1, 1, NULL
WHERE NOT EXISTS (SELECT 1 FROM `settings` WHERE `key` = 'payping_verify_url' LIMIT 1);
INSERT INTO `settings` (`key`, `value`, `title_fa`, `can_edit`, `is_active`, `description`)
SELECT 'payping_gateway_name', 'sepal', 'gateway', 1, 1, NULL
WHERE NOT EXISTS (SELECT 1 FROM `settings` WHERE `key` = 'payping_gateway_name' LIMIT 1);
INSERT INTO `settings` (`key`, `value`, `title_fa`, `can_edit`, `is_active`, `description`)
SELECT 'payping_gateway_items', 'sDsB,gp1Q,GPH4,AMAX,TbQl,AAQl', 'item چرخشی', 1, 1, NULL
WHERE NOT EXISTS (SELECT 1 FROM `settings` WHERE `key` = 'payping_gateway_items' LIMIT 1);
-- [super-admin can_edit=0]
-- INSERT INTO `settings` (`key`, `value`, `title_fa`, `can_edit`, `is_active`, `description`)
-- SELECT 'payping_round_toman', 'true', 'گرد تومان', 0, 1, NULL
-- WHERE NOT EXISTS (SELECT 1 FROM `settings` WHERE `key` = 'payping_round_toman' LIMIT 1);
-- [super-admin can_edit=0]
-- INSERT INTO `settings` (`key`, `value`, `title_fa`, `can_edit`, `is_active`, `description`)
-- SELECT 'payping_strict_failed_withdraw', 'true', 'اولویت ناموفق', 0, 1, NULL
-- WHERE NOT EXISTS (SELECT 1 FROM `settings` WHERE `key` = 'payping_strict_failed_withdraw' LIMIT 1);
UPDATE `settings` SET `value` = 'https://payment.goldaliii.com/payment/start' WHERE `key` = 'payping_start_url';
UPDATE `settings` SET `value` = 'https://payment.goldaliii.com/payment/verify' WHERE `key` = 'payping_verify_url';
UPDATE `settings` SET `value` = 'sepal' WHERE `key` = 'payping_gateway_name';
-- [super-admin can_edit=0]
-- UPDATE `settings` SET `value` = 'sDsB,gp1Q,GPH4,AMAX,TbQl,AAQl' WHERE `key` = 'payping_gateway_items';
UPDATE `settings` SET `value` = 'true' WHERE `key` IN ('payping_round_toman', 'payping_strict_failed_withdraw');
-- -----------------------------------------------------------------------------
-- ۵) const — fallback اگر settings.main_product نبود
-- -----------------------------------------------------------------------------
INSERT INTO `const` (`key`, `value`, `title_fa`)
SELECT 'main_product', '13', 'محصول آبشده پیش‌فرض (fallback)'
WHERE NOT EXISTS (SELECT 1 FROM `const` WHERE `key` = 'main_product' LIMIT 1);
UPDATE `const` SET `value` = '13' WHERE `key` = 'main_product';
INSERT INTO `const` (`key`, `value`, `title_fa`)
SELECT 'is_gateway_open', '1', 'باز بودن درگاه'
WHERE NOT EXISTS (SELECT 1 FROM `const` WHERE `key` = 'is_gateway_open' LIMIT 1);
INSERT INTO `const` (`key`, `value`, `title_fa`)
SELECT 'app_closed', 'false', 'بسته بودن اپ'
WHERE NOT EXISTS (SELECT 1 FROM `const` WHERE `key` = 'app_closed' LIMIT 1);
INSERT INTO `const` (`key`, `value`, `title_fa`)
SELECT 'limited_price', '0', 'سقف قیمت'
WHERE NOT EXISTS (SELECT 1 FROM `const` WHERE `key` = 'limited_price' LIMIT 1);
INSERT INTO `const` (`key`, `value`, `title_fa`)
SELECT 'header_banner', '', 'بنر'
WHERE NOT EXISTS (SELECT 1 FROM `const` WHERE `key` = 'header_banner' LIMIT 1);
INSERT INTO `const` (`key`, `value`, `title_fa`)
SELECT 'gram', '1', 'گرم ثبت‌نام'
WHERE NOT EXISTS (SELECT 1 FROM `const` WHERE `key` = 'gram' LIMIT 1);
INSERT INTO `const` (`key`, `value`, `title_fa`)
SELECT 'first_customer_wallet_value', '0', 'حداقل اولین خرید'
WHERE NOT EXISTS (SELECT 1 FROM `const` WHERE `key` = 'first_customer_wallet_value' LIMIT 1);
COMMIT;
-- -----------------------------------------------------------------------------
-- ۵b) اسکیما — ستون type در settings (اختیاری؛ کد بدون آن هم کار می‌کند)
-- اگر Duplicate column name → قبلاً اضافه شده.
-- -----------------------------------------------------------------------------
-- ALTER TABLE `settings`
-- ADD COLUMN `type` VARCHAR(64) NULL DEFAULT NULL COMMENT 'نوع فیلد در پنل ادمین' AFTER `description`;
-- -----------------------------------------------------------------------------
-- ۶) اختیاری — حذف کلیدهای legacy (بعد از تست)
-- فایل جدا: goldali_cleanup_legacy_keys.sql
-- -----------------------------------------------------------------------------
-- اگر مبلغ سفارش ~۱۰ برابر اپ است، آخرین قیمت جدول prices غلط/قدیمی است:
-- SELECT id, price, created_at FROM prices ORDER BY id DESC LIMIT 5;
-- بعد deploy: GET /api/price/last — buy/sell از prices (مثل سفارش)؛ API خام در prices ذخیره می‌شود.
-- بررسی:
-- SELECT `key`, `value` FROM `settings` WHERE `key` IN (
-- 'price_provider','main_product','fee_cash','fee_service_charge_percentage',
-- 'fee_single','payping_start_url','profit_gold_api_enabled'
-- );
-- SELECT `key`, `value` FROM `const` WHERE `key` IN ('main_product','is_gateway_open');