-- ============================================================================= -- گلد علی — اسکریپت محافظه‌کارانه (بعد از deploy کد Abshode_Khanegi مرج‌شده) -- -- اصول: -- • هیچ ردیفی DELETE نمی‌شود -- • value ردیف‌های موجود عمداً عوض نمی‌شود (فقط INSERT اگر key نبود) -- • استثنا: price_provider (کلید جدید) + montzar_price اگر وجود داشت → false -- • title_fa فقط جایی که NULL یا خالی است پر می‌شود -- -- قبل از اجرا: بکاپ + USE دیتابیس -- ============================================================================= -- USE `goldali_db`; START TRANSACTION; -- ============================================================================= -- بخش ۱ — عنوان فارسی (بدون تغییر value) -- ============================================================================= UPDATE `settings` SET `title_fa` = 'نام فارسی اپ' WHERE `key` = 'name_fa' AND (`title_fa` IS NULL OR TRIM(`title_fa`) = ''); UPDATE `settings` SET `title_fa` = 'نام انگلیسی اپ' WHERE `key` = 'name_en' AND (`title_fa` IS NULL OR TRIM(`title_fa`) = ''); UPDATE `settings` SET `title_fa` = 'آدرس اپ (کاربر)' WHERE `key` = 'app_url' AND (`title_fa` IS NULL OR TRIM(`title_fa`) = ''); UPDATE `settings` SET `title_fa` = 'آدرس پایه' WHERE `key` = 'bace_url' AND (`title_fa` IS NULL OR TRIM(`title_fa`) = ''); UPDATE `settings` SET `title_fa` = 'لوگوی صفحه ورود' WHERE `key` = 'logo_register' AND (`title_fa` IS NULL OR TRIM(`title_fa`) = ''); UPDATE `settings` SET `title_fa` = 'آدرس پنل ادمین' WHERE `key` = 'admin_url' AND (`title_fa` IS NULL OR TRIM(`title_fa`) = ''); UPDATE `settings` SET `title_fa` = 'عنوان PWA' WHERE `key` = 'title_pwa' AND (`title_fa` IS NULL OR TRIM(`title_fa`) = ''); UPDATE `settings` SET `title_fa` = 'عنوان favicon' WHERE `key` = 'title_fav' AND (`title_fa` IS NULL OR TRIM(`title_fa`) = ''); UPDATE `settings` SET `title_fa` = 'متن قوانین' WHERE `key` = 'text_rule' AND (`title_fa` IS NULL OR TRIM(`title_fa`) = ''); UPDATE `settings` SET `title_fa` = 'متن درباره ما' WHERE `key` = 'text_about' AND (`title_fa` IS NULL OR TRIM(`title_fa`) = ''); UPDATE `settings` SET `title_fa` = 'صفحه کسب درآمد' WHERE `key` = 'has_page_earn_money' AND (`title_fa` IS NULL OR TRIM(`title_fa`) = ''); UPDATE `settings` SET `title_fa` = 'صفحه صندوق' WHERE `key` = 'has_page_fund' AND (`title_fa` IS NULL OR TRIM(`title_fa`) = ''); UPDATE `settings` SET `title_fa` = 'صفحه مجوزها' WHERE `key` = 'has_page_permission' AND (`title_fa` IS NULL OR TRIM(`title_fa`) = ''); UPDATE `settings` SET `title_fa` = 'صفحه هشدار قیمت' WHERE `key` = 'has_page_price_trigger' AND (`title_fa` IS NULL OR TRIM(`title_fa`) = ''); UPDATE `settings` SET `title_fa` = 'صفحه طلای فیزیکی' WHERE `key` = 'has_page_physical_gold' AND (`title_fa` IS NULL OR TRIM(`title_fa`) = ''); UPDATE `settings` SET `title_fa` = 'رنگ اصلی' WHERE `key` = 'color_primary' AND (`title_fa` IS NULL OR TRIM(`title_fa`) = ''); UPDATE `settings` SET `title_fa` = 'رنگ ثانویه' WHERE `key` = 'color_secondary' AND (`title_fa` IS NULL OR TRIM(`title_fa`) = ''); UPDATE `settings` SET `title_fa` = 'کارمزد (قدیمی — درصد)' WHERE `key` = 'fee' AND (`title_fa` IS NULL OR TRIM(`title_fa`) = ''); UPDATE `settings` SET `title_fa` = 'چت پشتیبانی' WHERE `key` = 'has_chat' AND (`title_fa` IS NULL OR TRIM(`title_fa`) = ''); UPDATE `settings` SET `title_fa` = 'آدرس API سرور' WHERE `key` = 'server_url' AND (`title_fa` IS NULL OR TRIM(`title_fa`) = ''); UPDATE `settings` SET `title_fa` = 'کلید داخلی اپ' WHERE `key` = 'key' AND (`title_fa` IS NULL OR TRIM(`title_fa`) = ''); UPDATE `settings` SET `title_fa` = 'تعداد معرف برای هدیه' WHERE `key` = 'referral_count_for_gift' AND (`title_fa` IS NULL OR TRIM(`title_fa`) = ''); UPDATE `settings` SET `title_fa` = 'مبلغ پاداش معرف' WHERE `key` = 'referral_bonus_amount' AND (`title_fa` IS NULL OR TRIM(`title_fa`) = ''); UPDATE `settings` SET `title_fa` = 'حداقل برداشت (ریال)' WHERE `key` = 'min_withdraw' AND (`title_fa` IS NULL OR TRIM(`title_fa`) = ''); UPDATE `settings` SET `title_fa` = 'حداقل اولین خرید (ریال)' WHERE `key` = 'min_first_buy' AND (`title_fa` IS NULL OR TRIM(`title_fa`) = ''); UPDATE `const` SET `title_fa` = 'سقف قیمت محدود' WHERE `key` = 'limited_price' AND (`title_fa` IS NULL OR TRIM(`title_fa`) = ''); UPDATE `const` SET `title_fa` = 'باز بودن درگاه پرداخت' WHERE `key` = 'is_gateway_open' AND (`title_fa` IS NULL OR TRIM(`title_fa`) = ''); UPDATE `const` SET `title_fa` = 'بنر بالای صفحه' WHERE `key` = 'header_banner' AND (`title_fa` IS NULL OR TRIM(`title_fa`) = ''); -- ============================================================================= -- بخش ۲ — کلیدهای جدید کد (فقط INSERT اگر نبودند؛ value فعلی دست نخورده) -- ============================================================================= -- منبع قیمت: اتحادیه (تنها منبع فعال در کد مرج‌شده) INSERT INTO `settings` (`key`, `value`, `title_fa`, `can_edit`, `is_active`, `description`) SELECT 'price_provider', 'main_product', 'منبع قیمت', 1, 1, 'montzar | taban_gohar | main_product | zaarbox' WHERE NOT EXISTS (SELECT 1 FROM `settings` WHERE `key` = 'price_provider' LIMIT 1); INSERT INTO `settings` (`key`, `value`, `title_fa`, `can_edit`, `is_active`, `description`) SELECT 'main_product', '13', 'شناسه محصول آبشده', 1, 1, 'اول settings، بعد const' WHERE NOT EXISTS (SELECT 1 FROM `settings` WHERE `key` = 'main_product' LIMIT 1); -- کارمزد نمایش buy/sell در /api/price/last — کد fee_single می‌خواند (نه fee) -- مقدار 500000 = پیش‌فرض config/fee.php؛ اگر برای گلد علی عدد دیگری دارید بعداً در پنل عوض کنید INSERT INTO `settings` (`key`, `value`, `title_fa`, `can_edit`, `is_active`, `description`) SELECT 'fee_single', '500000', 'اختلاف قیمت پایه (ریال)', 1, 1, 'پیش‌فرض Laravel fee.single' 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, 'اگر خالی باشد از fee_single' 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, 'اگر خالی باشد از fee_single' WHERE NOT EXISTS (SELECT 1 FROM `settings` WHERE `key` = 'sell_fee' LIMIT 1); -- ثبت‌نام: فقط referral_id (required = اجباری) 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); UPDATE `settings` SET `can_edit` = 1, `description` = 'required = اجباری؛ خالی = اختیاری|required,' WHERE `key` = 'referral_id'; -- legacy is_requaire_referral → referral_id UPDATE `settings` AS r SET r.`value` = 'required', r.`is_active` = 1, r.`updated_at` = NOW() WHERE r.`key` = 'referral_id' AND EXISTS ( SELECT 1 FROM ( SELECT `value`, `is_active` FROM `settings` WHERE `key` = 'is_requaire_referral' LIMIT 1 ) AS leg WHERE leg.`is_active` = 1 AND LOWER(TRIM(COALESCE(leg.`value`, ''))) IN ('true', '1', 'yes') ) AND TRIM(COALESCE(r.`value`, '')) <> 'required'; DELETE FROM `settings` WHERE `key` = 'is_requaire_referral'; 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); 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); 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 مطمئن (کلیدهای مربوط به کد جدید) -- ============================================================================= UPDATE `settings` SET `value` = 'main_product', `title_fa` = COALESCE(NULLIF(TRIM(`title_fa`), ''), 'منبع قیمت') WHERE `key` = 'price_provider'; UPDATE `settings` SET `value` = '13' WHERE `key` = 'main_product'; UPDATE `settings` SET `value` = 'true' WHERE `key` = 'profit_gold_api_enabled'; UPDATE `settings` SET `is_active` = 1 WHERE `key` = 'open_register'; UPDATE `settings` SET `value` = '12' WHERE `key` = 'balance_report_exclude_customer_id'; 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 '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); -- legacy price_method حذف شد — از price_provider + zaarbox_price_key استفاده کنید. -- ============================================================================= -- بخش ۳ب — درگاه پرداخت گلد علی (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, 'مثال: sepal' 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); 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); 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'; 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 (حداقلی) -- ============================================================================= UPDATE `const` SET `title_fa` = 'بسته بودن اپ' WHERE `key` = 'app_closed' AND (`title_fa` IS NULL OR TRIM(`title_fa`) = ''); INSERT INTO `const` (`key`, `value`, `title_fa`) SELECT 'app_closed', 'false', 'بسته بودن اپ' WHERE NOT EXISTS (SELECT 1 FROM `const` WHERE `key` = 'app_closed' LIMIT 1); -- ============================================================================= -- بخش ۵ — products: محدودیت مبلغ سفارش (فقط ستون؛ مقدار از پنل ادمین) -- patch: database/sql/add_product_order_limit_columns.sql -- ============================================================================= SET @db = DATABASE(); SET @sql = IF( (SELECT COUNT(*) FROM information_schema.COLUMNS WHERE TABLE_SCHEMA = @db AND TABLE_NAME = 'products' AND COLUMN_NAME = 'order_limit_enabled') = 0, 'ALTER TABLE `products` ADD COLUMN `order_limit_enabled` TINYINT(1) NOT NULL DEFAULT 0 AFTER `percent_fee_buy`', 'SELECT 1' ); PREPARE stmt FROM @sql; EXECUTE stmt; DEALLOCATE PREPARE stmt; SET @sql = IF( (SELECT COUNT(*) FROM information_schema.COLUMNS WHERE TABLE_SCHEMA = @db AND TABLE_NAME = 'products' AND COLUMN_NAME = 'min_order_cash') = 0, 'ALTER TABLE `products` ADD COLUMN `min_order_cash` BIGINT UNSIGNED NULL DEFAULT NULL AFTER `order_limit_enabled`', 'SELECT 1' ); PREPARE stmt FROM @sql; EXECUTE stmt; DEALLOCATE PREPARE stmt; SET @sql = IF( (SELECT COUNT(*) FROM information_schema.COLUMNS WHERE TABLE_SCHEMA = @db AND TABLE_NAME = 'products' AND COLUMN_NAME = 'max_order_cash') = 0, 'ALTER TABLE `products` ADD COLUMN `max_order_cash` BIGINT UNSIGNED NULL DEFAULT NULL AFTER `min_order_cash`', 'SELECT 1' ); PREPARE stmt FROM @sql; EXECUTE stmt; DEALLOCATE PREPARE stmt; -- ============================================================================= -- بررسی — بعد از COMMIT این‌ها را بزن -- ============================================================================= -- SELECT `key`, `title_fa`, `value` FROM `settings` -- WHERE `key` IN ( -- 'price_provider', 'profit_gold_api_enabled', -- 'fee_single', 'buy_fee', 'sell_fee', -- 'referral_id', -- 'payping_start_url', 'payping_verify_url', 'payping_gateway_name' -- ) -- ORDER BY `key`; COMMIT; -- اگر جدولت `setting` است نه `settings`، همه `settings` را به `setting` عوض کن.