Files

176 lines
12 KiB
SQL
Raw Permalink Normal View History

2026-06-04 13:48:37 +03:30
-- =============================================================================
-- گلد علی — تنظیم دیتابیس برای سرور برنچ Abshode_Khanegi (بدون تغییر کد per-client)
--
-- یک بار بعد از deploy: بکاپ بگیرید، USE دیتابیس گلد علی، این فایل را اجرا کنید.
-- جدول const اگر نامش cnt است، در پایین فایل جایگزین کنید.
-- =============================================================================
START TRANSACTION;
-- -----------------------------------------------------------------------------
2026-06-04 14:19:54 +03:30
-- ۱) قیمت — محصول اصلی (نه اتحادیه)؛ main_product اول settings بعد const
2026-06-04 13:48:37 +03:30
-- -----------------------------------------------------------------------------
2026-08-22 16:50:49 +03:30
-- [super-admin can_edit=0]
-- UPDATE `settings` SET `value` = 'main_product' WHERE `key` = 'price_provider';
2026-06-04 13:48:37 +03:30
INSERT INTO `settings` (`key`, `value`, `title_fa`, `can_edit`, `is_active`, `description`)
2026-06-04 14:19:54 +03:30
SELECT 'price_provider', 'main_product', 'منبع قیمت', 1, 1, 'montzar|main_product|taban_gohar'
2026-06-04 13:48:37 +03:30
WHERE NOT EXISTS (SELECT 1 FROM `settings` WHERE `key` = 'price_provider' LIMIT 1);
2026-06-04 14:19:54 +03:30
2026-06-04 14:40:02 +03:30
-- مقدار عددی id محصول (۱۳) — نه UUID تابلو؛ یا reading_method مثل estjt_41670...
2026-06-04 14:19:54 +03:30
INSERT INTO `settings` (`key`, `value`, `title_fa`, `can_edit`, `is_active`, `description`)
2026-06-04 14:40:02 +03:30
SELECT 'main_product', '13', 'محصول آبشده (id یا reading_method)', 1, 1, 'مثلاً 13 — نه UUID API'
2026-06-04 14:19:54 +03:30
WHERE NOT EXISTS (SELECT 1 FROM `settings` WHERE `key` = 'main_product' LIMIT 1);
2026-08-22 16:50:49 +03:30
-- [super-admin can_edit=0]
-- UPDATE `settings` SET `value` = '13' WHERE `key` = 'main_product';
2026-06-04 13:48:37 +03:30
-- نمایش 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`)
2026-06-06 16:05:40 +03:30
SELECT 'fee_cash', '0', 'اختلاف ریالی هر گرم (سفارش)', 1, 1, 'مقدار نمونه: 0'
2026-06-04 13:48:37 +03:30
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`)
2026-06-06 16:05:40 +03:30
SELECT 'referral_id', 'required', 'الزام کد معرف', 1, 1, 'required = اجباری؛ خالی = اختیاری|required,'
2026-06-04 13:48:37 +03:30
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';
2026-08-22 16:50:49 +03:30
-- [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);
2026-06-04 13:48:37 +03:30
UPDATE `settings` SET `value` = 'true' WHERE `key` = 'profit_gold_api_enabled';
2026-06-04 17:39:06 +03:30
-- 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);
2026-08-22 16:50:49 +03:30
-- [super-admin can_edit=0]
-- UPDATE `settings` SET `value` = 'true' WHERE `key` = 'external_order_api_enabled';
2026-06-04 17:39:06 +03:30
-- بعد از اجرا در پنل: node_client_id و node_shared_secret را با مقادیر .env پر کنید
2026-08-22 16:50:49 +03:30
-- [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);
2026-06-04 13:48:37 +03:30
UPDATE `settings` SET `value` = '12' WHERE `key` = 'balance_report_exclude_customer_id';
2026-08-22 16:50:49 +03:30
-- [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';
2026-06-04 13:48:37 +03:30
-- -----------------------------------------------------------------------------
-- ۴) درگاه 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);
2026-08-22 16:50:49 +03:30
-- [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);
2026-06-04 13:48:37 +03:30
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';
2026-08-22 16:50:49 +03:30
-- [super-admin can_edit=0]
-- UPDATE `settings` SET `value` = 'sDsB,gp1Q,GPH4,AMAX,TbQl,AAQl' WHERE `key` = 'payping_gateway_items';
2026-06-04 13:48:37 +03:30
UPDATE `settings` SET `value` = 'true' WHERE `key` IN ('payping_round_toman', 'payping_strict_failed_withdraw');
-- -----------------------------------------------------------------------------
2026-06-04 14:19:54 +03:30
-- ۵) const — fallback اگر settings.main_product نبود
2026-06-04 13:48:37 +03:30
-- -----------------------------------------------------------------------------
INSERT INTO `const` (`key`, `value`, `title_fa`)
2026-06-04 14:19:54 +03:30
SELECT 'main_product', '13', 'محصول آبشده پیش‌فرض (fallback)'
2026-06-04 13:48:37 +03:30
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;
2026-06-04 14:19:54 +03:30
-- -----------------------------------------------------------------------------
-- ۵b) اسکیما — ستون type در settings (اختیاری؛ کد بدون آن هم کار می‌کند)
-- اگر Duplicate column name → قبلاً اضافه شده.
-- -----------------------------------------------------------------------------
-- ALTER TABLE `settings`
-- ADD COLUMN `type` VARCHAR(64) NULL DEFAULT NULL COMMENT 'نوع فیلد در پنل ادمین' AFTER `description`;
2026-06-04 13:48:37 +03:30
-- -----------------------------------------------------------------------------
-- ۶) اختیاری — حذف کلیدهای 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 (
2026-06-04 14:19:54 +03:30
-- 'price_provider','main_product','fee_cash','fee_service_charge_percentage',
2026-06-04 13:48:37 +03:30
-- 'fee_single','payping_start_url','profit_gold_api_enabled'
-- );
-- SELECT `key`, `value` FROM `const` WHERE `key` IN ('main_product','is_gateway_open');