diff --git a/app/Http/Controllers/Admin/SmsPanelController.php b/app/Http/Controllers/Admin/SmsPanelController.php index 02ccb8e..9cac108 100644 --- a/app/Http/Controllers/Admin/SmsPanelController.php +++ b/app/Http/Controllers/Admin/SmsPanelController.php @@ -36,13 +36,49 @@ class SmsPanelController extends Controller private function depositFromChargeInfo(array $chargeInfo): array { return [ - 'card_number' => (string) ($chargeInfo['card'] ?? ''), - 'sheba' => (string) ($chargeInfo['iban'] ?? ''), - 'account_holder' => (string) ($chargeInfo['account_holder'] ?? ''), - 'note' => (string) ($chargeInfo['instruction'] ?? ''), + 'card_number' => trim((string) ($chargeInfo['card'] ?? $chargeInfo['card_number'] ?? '')), + 'sheba' => trim((string) ($chargeInfo['iban'] ?? $chargeInfo['sheba'] ?? '')), + 'account_holder' => trim((string) ($chargeInfo['account_holder'] ?? $chargeInfo['accountHolder'] ?? '')), + 'note' => trim((string) ($chargeInfo['instruction'] ?? $chargeInfo['note'] ?? '')), ]; } + /** @param array $deposit */ + private function depositHasAny(array $deposit): bool + { + foreach (['card_number', 'sheba', 'account_holder', 'note'] as $field) { + if (trim((string) ($deposit[$field] ?? '')) !== '') { + return true; + } + } + + return false; + } + + /** + * اگر سوپرادمین کارت/شبا خالی بدهد، دیفالت محلی را نگه دار — وگرنه هر رفرش هدر تنظیمات را خالی می‌کند. + * + * @param array|null $chargeInfo + * @return array{card_number: string, sheba: string, account_holder: string, note: string} + */ + private function resolveDeposit(?array $chargeInfo): array + { + $fromSa = is_array($chargeInfo) ? $this->depositFromChargeInfo($chargeInfo) : [ + 'card_number' => '', + 'sheba' => '', + 'account_holder' => '', + 'note' => '', + ]; + $local = SmsWalletService::getDepositInfo(); + $out = []; + foreach (['card_number', 'sheba', 'account_holder', 'note'] as $field) { + $saVal = trim((string) ($fromSa[$field] ?? '')); + $out[$field] = $saVal !== '' ? $saVal : $local[$field]; + } + + return $out; + } + /** * @param array $data */ @@ -79,10 +115,15 @@ class SmsPanelController extends Controller app(SmsWalletService::class)->mirrorFromSuperAdmin($balance, $price, $blocked); if (isset($data['charge_info']) && is_array($data['charge_info'])) { - SmsWalletService::setDepositInfo($this->depositFromChargeInfo($data['charge_info'])); + $fromCharge = $this->depositFromChargeInfo($data['charge_info']); + if ($this->depositHasAny($fromCharge)) { + SmsWalletService::setDepositInfo($fromCharge); + } } if (isset($data['deposit']) && is_array($data['deposit'])) { - SmsWalletService::setDepositInfo($data['deposit']); + if ($this->depositHasAny($data['deposit'])) { + SmsWalletService::setDepositInfo($data['deposit']); + } } } catch (\Throwable $e) { report($e); @@ -98,7 +139,7 @@ class SmsPanelController extends Controller } $charge = is_array($data['charge_info'] ?? null) ? $data['charge_info'] : []; - $data['deposit'] = $this->depositFromChargeInfo($charge); + $data['deposit'] = $this->resolveDeposit($charge); $this->mirrorLocalFromSa($data); return response()->json($data); @@ -162,12 +203,9 @@ class SmsPanelController extends Controller $charge = $this->sa()->chargeInfo(); if ($balanceData !== null) { - $deposit = is_array($charge) - ? $this->depositFromChargeInfo($charge) - : SmsWalletService::getDepositInfo(); + $deposit = $this->resolveDeposit(is_array($charge) ? $charge : null); $this->mirrorLocalFromSa(array_merge($balanceData, [ - 'charge_info' => is_array($charge) ? $charge : [], 'deposit' => $deposit, ])); diff --git a/app/Services/SettingsRuntimeCanEditSync.php b/app/Services/SettingsRuntimeCanEditSync.php index 9468a56..e6e8658 100644 --- a/app/Services/SettingsRuntimeCanEditSync.php +++ b/app/Services/SettingsRuntimeCanEditSync.php @@ -52,6 +52,10 @@ class SettingsRuntimeCanEditSync 'payping_gateway_name', 'payping_fin_customer_id', 'payping_fin_url', + 'sms_charge_card_number', + 'sms_charge_sheba', + 'sms_charge_account_holder', + 'sms_charge_note', ]; /** @return list */ diff --git a/app/Services/SmsBilling/SmsWalletService.php b/app/Services/SmsBilling/SmsWalletService.php index 964d01f..7438a25 100644 --- a/app/Services/SmsBilling/SmsWalletService.php +++ b/app/Services/SmsBilling/SmsWalletService.php @@ -29,7 +29,7 @@ class SmsWalletService /** مقادیر پیش‌فرض اطلاعات واریز. */ public const DEPOSIT_DEFAULTS = [ 'card_number' => '6219861961033817', - 'sheba' => 'IR080560611828005603604401', + 'sheba' => 'IR080560611828005603604201', 'account_holder' => 'حسین منتظر', 'note' => 'لطفا مبلغ مورد نظر خود جهت شارژ سامانه پیامکی را به شماره کارت یا حساب زیر واریز نمایید و تصویر فیش پرداختی را برای پشتیبانی بفرستید.', ]; @@ -331,7 +331,14 @@ class SmsWalletService } $setting = Setting::firstOrNew(['key' => $key]); - $setting->value = (string) ($data[$field] ?? ''); + $incoming = trim((string) ($data[$field] ?? '')); + if ($incoming === '') { + if ($setting->exists && trim((string) $setting->value) !== '') { + continue; + } + $incoming = self::DEPOSIT_DEFAULTS[$field]; + } + $setting->value = $incoming; if ($setting->title_fa === null || $setting->title_fa === '') { $setting->title_fa = self::depositFieldTitle($field); diff --git a/database/migrations/2026_09_01_000002_unlock_referral_bonus_amount_setting.php b/database/migrations/2026_09_01_000002_unlock_referral_bonus_amount_setting.php new file mode 100644 index 0000000..b124791 --- /dev/null +++ b/database/migrations/2026_09_01_000002_unlock_referral_bonus_amount_setting.php @@ -0,0 +1,58 @@ + 'مقدار پاداش معرف', + 'description' => 'مبلغ یا مقدار پاداش معرف برای نمایش در پیامک‌ها و متن‌های دعوت.', + 'type' => 'text', + ]; + + $exists = DB::table('settings')->where('key', $key)->exists(); + if (! $exists) { + $row = [ + 'key' => $key, + 'value' => '', + 'title_fa' => $meta['title_fa'], + 'can_edit' => 1, + 'is_active' => 1, + 'description' => $meta['description'], + 'type' => $meta['type'], + ]; + if (Schema::hasColumn('settings', 'menu')) { + $row['menu'] = 'referral'; + } + DB::table('settings')->insert($row); + + return; + } + + $update = [ + 'title_fa' => $meta['title_fa'], + 'description' => $meta['description'], + 'type' => $meta['type'], + 'can_edit' => 1, + 'is_active' => 1, + ]; + if (Schema::hasColumn('settings', 'menu')) { + $update['menu'] = 'referral'; + } + DB::table('settings')->where('key', $key)->update($update); + } + + public function down(): void + { + // کلید را حذف نمی‌کنیم + } +}; diff --git a/database/migrations/2026_09_01_000003_seed_sms_charge_deposit_settings.php b/database/migrations/2026_09_01_000003_seed_sms_charge_deposit_settings.php new file mode 100644 index 0000000..6a14362 --- /dev/null +++ b/database/migrations/2026_09_01_000003_seed_sms_charge_deposit_settings.php @@ -0,0 +1,88 @@ + [ + 'value' => '6219861961033817', + 'title_fa' => 'شماره کارت شارژ پیامک', + 'description' => 'شماره کارت برای واریز شارژ سامانه پیامکی (مودال اعتبار پیامک).', + 'type' => 'text', + ], + 'sms_charge_sheba' => [ + 'value' => 'IR080560611828005603604201', + 'title_fa' => 'شماره شبا شارژ پیامک', + 'description' => 'شماره شبا برای واریز شارژ سامانه پیامکی.', + 'type' => 'text', + ], + 'sms_charge_account_holder' => [ + 'value' => 'حسین منتظر', + 'title_fa' => 'نام صاحب حساب شارژ پیامک', + 'description' => 'نام صاحب حساب واریز شارژ سامانه پیامکی.', + 'type' => 'text', + ], + 'sms_charge_note' => [ + 'value' => 'لطفا مبلغ مورد نظر خود جهت شارژ سامانه پیامکی را به شماره کارت یا حساب زیر واریز نمایید و تصویر فیش پرداختی را برای پشتیبانی بفرستید.', + 'title_fa' => 'متن راهنمای شارژ پیامک', + 'description' => 'متن راهنمای مودال شارژ اعتبار پیامک در پنل ادمین.', + 'type' => 'longtext', + ], + ]; + + $hasMenu = Schema::hasColumn('settings', 'menu'); + + foreach ($rows as $key => $meta) { + $exists = DB::table('settings')->where('key', $key)->exists(); + if (! $exists) { + $row = [ + 'key' => $key, + 'value' => $meta['value'], + 'title_fa' => $meta['title_fa'], + 'can_edit' => 0, + 'is_active' => 1, + 'description' => $meta['description'], + 'type' => $meta['type'], + ]; + if ($hasMenu) { + $row['menu'] = 'sms_charge'; + } + DB::table('settings')->insert($row); + + continue; + } + + $update = [ + 'title_fa' => $meta['title_fa'], + 'description' => $meta['description'], + 'type' => $meta['type'], + 'can_edit' => 0, + 'is_active' => 1, + ]; + if ($hasMenu) { + $update['menu'] = 'sms_charge'; + } + DB::table('settings')->where('key', $key)->update($update); + + DB::table('settings') + ->where('key', $key) + ->where(function ($q) { + $q->whereNull('value')->orWhereRaw("TRIM(`value`) = ''"); + }) + ->update(['value' => $meta['value']]); + } + } + + public function down(): void + { + // کلید را حذف نمی‌کنیم + } +}; diff --git a/database/sql/deploy_settings_const.sql b/database/sql/deploy_settings_const.sql index 05dbf53..e302add 100644 --- a/database/sql/deploy_settings_const.sql +++ b/database/sql/deploy_settings_const.sql @@ -64,6 +64,9 @@ SET @deposit_guide_desc = CONCAT( 'فاصله بعد از % اختیاری است.', CHAR(10), 'خالی = متن پیش‌فرض اپ.' ); +SET @sms_charge_note = 'لطفا مبلغ مورد نظر خود جهت شارژ سامانه پیامکی را به شماره کارت یا حساب زیر واریز نمایید و تصویر فیش پرداختی را برای پشتیبانی بفرستید.'; +SET @sms_charge_note_desc = 'متن راهنمای مودال شارژ اعتبار پیامک در پنل ادمین.'; + SET @deposit_support_msg_desc = CONCAT( 'متن پیام هنگام کلیک «پیام به پشتیبانی» در مودال واریز.', CHAR(10), CHAR(10), @@ -915,6 +918,37 @@ SELECT 'deposit_sheba', '', 'شبا واریز', 1, 1, 'شماره شبا واریز — در متن‌ها با ٪شبا یا %شبا جایگزین می‌شود.', 'text' WHERE NOT EXISTS (SELECT 1 FROM `settings` WHERE `key` = 'deposit_sheba' LIMIT 1); +-- شارژ سامانه پیامکی (مودال اعتبار پیامک) — can_edit=0 +-- value ردیف موجود فقط اگر خالی باشد پر می‌شود (ویجت هدر نباید مقدار خالی سوپرادمین را نگه دارد) +INSERT INTO `settings` (`key`, `value`, `title_fa`, `can_edit`, `is_active`, `description`, `type`) +SELECT 'sms_charge_card_number', '6219861961033817', 'شماره کارت شارژ پیامک', 0, 1, + 'شماره کارت برای واریز شارژ سامانه پیامکی (مودال اعتبار پیامک).', 'text' +WHERE NOT EXISTS (SELECT 1 FROM `settings` WHERE `key` = 'sms_charge_card_number' LIMIT 1); + +INSERT INTO `settings` (`key`, `value`, `title_fa`, `can_edit`, `is_active`, `description`, `type`) +SELECT 'sms_charge_sheba', 'IR080560611828005603604201', 'شماره شبا شارژ پیامک', 0, 1, + 'شماره شبا برای واریز شارژ سامانه پیامکی.', 'text' +WHERE NOT EXISTS (SELECT 1 FROM `settings` WHERE `key` = 'sms_charge_sheba' LIMIT 1); + +INSERT INTO `settings` (`key`, `value`, `title_fa`, `can_edit`, `is_active`, `description`, `type`) +SELECT 'sms_charge_account_holder', 'حسین منتظر', 'نام صاحب حساب شارژ پیامک', 0, 1, + 'نام صاحب حساب واریز شارژ سامانه پیامکی.', 'text' +WHERE NOT EXISTS (SELECT 1 FROM `settings` WHERE `key` = 'sms_charge_account_holder' LIMIT 1); + +INSERT INTO `settings` (`key`, `value`, `title_fa`, `can_edit`, `is_active`, `description`, `type`) +SELECT 'sms_charge_note', @sms_charge_note, 'متن راهنمای شارژ پیامک', 0, 1, + @sms_charge_note_desc, 'longtext' +WHERE NOT EXISTS (SELECT 1 FROM `settings` WHERE `key` = 'sms_charge_note' LIMIT 1); + +UPDATE `settings` SET `value` = '6219861961033817' +WHERE `key` = 'sms_charge_card_number' AND (`value` IS NULL OR TRIM(`value`) = ''); +UPDATE `settings` SET `value` = 'IR080560611828005603604201' +WHERE `key` = 'sms_charge_sheba' AND (`value` IS NULL OR TRIM(`value`) = ''); +UPDATE `settings` SET `value` = 'حسین منتظر' +WHERE `key` = 'sms_charge_account_holder' AND (`value` IS NULL OR TRIM(`value`) = ''); +UPDATE `settings` SET `value` = @sms_charge_note +WHERE `key` = 'sms_charge_note' AND (`value` IS NULL OR TRIM(`value`) = ''); + -- روش‌های واریز (قابل ویرایش؛ کارت به کارت پیش‌فرض روشن) INSERT INTO `settings` (`key`, `value`, `title_fa`, `can_edit`, `is_active`, `description`, `type`) SELECT 'deposit_method_card_to_card', 'true', 'فعال‌سازی کارت به کارت', 1, 1, @@ -1124,7 +1158,7 @@ WHERE NOT EXISTS (SELECT 1 FROM `settings` WHERE `key` = 'minimum_sell' LIMIT 1) -- [super-admin can_edit=0] -- INSERT INTO `settings` (`key`, `value`, `title_fa`, `can_edit`, `is_active`, `description`, `type`) --- SELECT 'referral_bonus_amount', '', 'مقدار پاداش معرف', 0, 1, NULL, 'text' +-- SELECT 'referral_bonus_amount', '', 'مقدار پاداش معرف', 1, 1, NULL, 'text' -- WHERE NOT EXISTS (SELECT 1 FROM `settings` WHERE `key` = 'referral_bonus_amount' LIMIT 1); INSERT INTO `settings` (`key`, `value`, `title_fa`, `can_edit`, `is_active`, `description`, `type`) @@ -1289,7 +1323,8 @@ WHERE `key` = 'main_product'; UPDATE `settings` SET `type` = 'longtext' WHERE `key` IN ( 'text_rule', 'text_about', 'about_software', 'support_messenger_text', 'invite_link_text', 'deposit_support_message_text', 'price_channel_message_text', - 'montzar_order_response', 'montzar_last_product_log', 'tracking_systems' + 'montzar_order_response', 'montzar_last_product_log', 'tracking_systems', + 'sms_charge_note' ); -- select (+ گزینه‌ها در description) @@ -1364,7 +1399,8 @@ UPDATE `settings` SET `type` = 'text' WHERE `key` IN ( 'tahesab_bank_account', 'telegram_bot_token', 'bale_bot_token', 'support_messenger_id', 'referral_bonus_amount', 'balance_report_exclude_customer_id', 'metal_type', 'main_metal', 'montify_name', 'price_extreme_date', 'liman_token', - 'products_site_link_url', 'products_site_link_text' + 'products_site_link_url', 'products_site_link_text', + 'sms_charge_card_number', 'sms_charge_sheba', 'sms_charge_account_holder' ); -- پیش‌فرض برای ردیف‌های بدون type @@ -1602,6 +1638,34 @@ UPDATE `settings` SET `description` = 'شماره شبا واریز — در متن‌ها با ٪شبا یا %شبا جایگزین می‌شود.' WHERE `key` = 'deposit_sheba'; +UPDATE `settings` SET + `title_fa` = 'شماره کارت شارژ پیامک', + `type` = 'text', + `can_edit` = 0, + `description` = 'شماره کارت برای واریز شارژ سامانه پیامکی (مودال اعتبار پیامک).' +WHERE `key` = 'sms_charge_card_number'; + +UPDATE `settings` SET + `title_fa` = 'شماره شبا شارژ پیامک', + `type` = 'text', + `can_edit` = 0, + `description` = 'شماره شبا برای واریز شارژ سامانه پیامکی.' +WHERE `key` = 'sms_charge_sheba'; + +UPDATE `settings` SET + `title_fa` = 'نام صاحب حساب شارژ پیامک', + `type` = 'text', + `can_edit` = 0, + `description` = 'نام صاحب حساب واریز شارژ سامانه پیامکی.' +WHERE `key` = 'sms_charge_account_holder'; + +UPDATE `settings` SET + `title_fa` = 'متن راهنمای شارژ پیامک', + `type` = 'longtext', + `can_edit` = 0, + `description` = @sms_charge_note_desc +WHERE `key` = 'sms_charge_note'; + UPDATE `settings` SET `title_fa` = 'متن دعوتنامه اشتراک‌گذاری', `type` = 'longtext', @@ -1768,8 +1832,12 @@ UPDATE `settings` SET `description` = 'روشن: اگر منبع قیمت montzar باشد، قبل از واریز پاداش معرف/معرف‌شونده همان وزن از همکار خرید می‌شود؛ شکست خرید = واریز نمی‌شود. خاموش: مثل قبل فقط به کیف واریز می‌شود بدون خرید از همکار.' WHERE `key` = 'referral_gift_buy_from_montzar'; UPDATE `settings` SET `description` = 'حداکثر تعداد دعوت‌های مجاز برای هر کاربر. خالی = بدون محدودیت.' WHERE `key` = 'referral_limit'; --- [super-admin can_edit=0] --- UPDATE `settings` SET `description` = 'مبلغ یا مقدار پاداش معرف (متن آزاد — بسته به پیاده‌سازی پیامک/اعتبار). برای نمایش در پیام‌ها.' WHERE `key` = 'referral_bonus_amount'; +UPDATE `settings` SET + `title_fa` = 'مقدار پاداش معرف', + `can_edit` = 1, + `type` = 'text', + `description` = 'مبلغ یا مقدار پاداش معرف برای نمایش در پیامک‌ها و متن‌های دعوت.' +WHERE `key` = 'referral_bonus_amount'; UPDATE `settings` SET `description` = 'روشن: تطبیق شماره کارت بانکی کاربر با سرویس احراز هویت جیبیت هنگام ثبت/ویرایش کارت.' WHERE `key` = 'jibit_verification'; UPDATE `settings` SET `description` = 'روشن: تطبیق کد ملی و موبایل در فرآیند ثبت‌نام از طریق سرویس جیبیت.' WHERE `key` = 'register_jibit_verify'; -- [super-admin can_edit=0] @@ -2195,6 +2263,10 @@ UPDATE `settings` SET `title_fa` = 'نام صاحب حساب واریز' WHERE ` UPDATE `settings` SET `title_fa` = 'شماره کارت واریز' WHERE `key` = 'deposit_card_number'; UPDATE `settings` SET `title_fa` = 'شماره حساب واریز' WHERE `key` = 'deposit_account_number'; UPDATE `settings` SET `title_fa` = 'شبا واریز' WHERE `key` = 'deposit_sheba'; +UPDATE `settings` SET `title_fa` = 'شماره کارت شارژ پیامک' WHERE `key` = 'sms_charge_card_number'; +UPDATE `settings` SET `title_fa` = 'شماره شبا شارژ پیامک' WHERE `key` = 'sms_charge_sheba'; +UPDATE `settings` SET `title_fa` = 'نام صاحب حساب شارژ پیامک' WHERE `key` = 'sms_charge_account_holder'; +UPDATE `settings` SET `title_fa` = 'متن راهنمای شارژ پیامک' WHERE `key` = 'sms_charge_note'; UPDATE `settings` SET `title_fa` = 'فعال‌سازی کارت به کارت' WHERE `key` = 'deposit_method_card_to_card'; UPDATE `settings` SET `title_fa` = 'فعال‌سازی درگاه پرداخت' WHERE `key` = 'deposit_method_gateway'; UPDATE `settings` SET `title_fa` = 'فعال‌سازی شناسه واریز' WHERE `key` = 'deposit_method_identified'; @@ -2254,7 +2326,6 @@ UPDATE `settings` SET `title_fa` = 'شناسه ردیف تابلو (key یا UUI -- 'external_payment_webhook_url', -- 'wallet_payment_provider', -- 'fee_deduct_from_gold', --- 'referral_bonus_amount', -- 'group_sms', -- 'customer_special_pricing', -- 'customer_direct_sms', @@ -2317,7 +2388,7 @@ UPDATE `settings` SET `can_edit` = 1 WHERE `key` IN ( 'montzar_password', 'montzar_product_id', 'montzar_account_zarin', 'montzar_account_tahesab', 'montzar_account_pargar', 'open_register', - 'referral_id', 'referral_show', 'referral_limit', 'referral_gift_on_first_order', 'referral_gift_buy_from_montzar', + 'referral_id', 'referral_show', 'referral_limit', 'referral_gift_on_first_order', 'referral_gift_buy_from_montzar', 'referral_bonus_amount', 'register_jibit_verify', 'register_referral_bonus_message', 'register_referral_sms_to_referrer', 'sell_fee', 'show_last_price', 'show_home_price_when_closed', 'show_gold_ounce_price', 'show_product_details', 'show_product_trade_status', 'show_product_card_meta', @@ -2348,7 +2419,8 @@ UPDATE `settings` SET `can_edit` = 0 WHERE `key` IN ( 'deposit_method_gateway', 'deposit_method_identified', 'deposit_method_shetab', 'payping_verify_url', 'payping_start_url', 'payping_strict_failed_withdraw', 'payping_fin_token', 'chart_id', 'payping_round_toman', 'payping_gateway_items', - 'payping_gateway_name', 'payping_fin_customer_id', 'payping_fin_url' + 'payping_gateway_name', 'payping_fin_customer_id', 'payping_fin_url', + 'sms_charge_card_number', 'sms_charge_sheba', 'sms_charge_account_holder', 'sms_charge_note' ); -- کلید runtime باقی‌مانده — can_edit=1 @@ -2529,7 +2601,8 @@ UPDATE `settings` SET `can_edit` = 0 WHERE `key` IN ( 'deposit_method_gateway', 'deposit_method_identified', 'deposit_method_shetab', 'payping_verify_url', 'payping_start_url', 'payping_strict_failed_withdraw', 'payping_fin_token', 'chart_id', 'payping_round_toman', 'payping_gateway_items', - 'payping_gateway_name', 'payping_fin_customer_id', 'payping_fin_url' + 'payping_gateway_name', 'payping_fin_customer_id', 'payping_fin_url', + 'sms_charge_card_number', 'sms_charge_sheba', 'sms_charge_account_holder', 'sms_charge_note' ); UPDATE `settings` SET `can_edit` = 1 WHERE `key` = 'chart_use_local_data'; diff --git a/database/sql/deploy_settings_const_preserve_value_sync_can_edit.sql b/database/sql/deploy_settings_const_preserve_value_sync_can_edit.sql index 4c5e11f..a06c1eb 100644 --- a/database/sql/deploy_settings_const_preserve_value_sync_can_edit.sql +++ b/database/sql/deploy_settings_const_preserve_value_sync_can_edit.sql @@ -42,6 +42,9 @@ SET @invite_link_desc = 'متن پیام اشتراک‌گذاری دعوت در SET @deposit_guide_desc = 'متن راهنمای واریز در مودال شارژ حساب. متغیرها: ٪نام یا %نام = نام صاحب حساب؛ ٪کارت یا %کارت = شماره کارت؛ ٪شبا یا %شبا = شبا. فاصله بعد از ٪ اختیاری است. اگر خالی باشد از متن پیش‌فرض اپ استفاده می‌شود.'; SET @deposit_support_msg_desc = 'متن پیام هنگام کلیک روی «پیام به پشتیبانی» و «پیام به پشتیبانی (sms)» در مودال واریز. فقط متغیر ٪نام یا %نام = نام صاحب حساب (deposit_account_holder). پیش‌فرض: «شماره حساب».'; +SET @sms_charge_note = 'لطفا مبلغ مورد نظر خود جهت شارژ سامانه پیامکی را به شماره کارت یا حساب زیر واریز نمایید و تصویر فیش پرداختی را برای پشتیبانی بفرستید.'; +SET @sms_charge_note_desc = 'متن راهنمای مودال شارژ اعتبار پیامک در پنل ادمین.'; + SET @price_channel_message_desc = CONCAT( 'متن پیامی که با تغییر قیمت به کانال فرستاده می‌شود. هر متغیر را دقیقاً همین‌طور بنویسید (با ٪ یا %).', CHAR(10), CHAR(10), @@ -663,6 +666,37 @@ SELECT 'deposit_sheba', '', 'شبا واریز', 1, 1, 'شماره شبا واریز — در متن‌ها با ٪شبا یا %شبا جایگزین می‌شود.', 'text' WHERE NOT EXISTS (SELECT 1 FROM `settings` WHERE `key` = 'deposit_sheba' LIMIT 1); +-- شارژ سامانه پیامکی (مودال اعتبار پیامک) — can_edit=0 +-- value ردیف موجود فقط اگر خالی باشد پر می‌شود +INSERT INTO `settings` (`key`, `value`, `title_fa`, `can_edit`, `is_active`, `description`, `type`) +SELECT 'sms_charge_card_number', '6219861961033817', 'شماره کارت شارژ پیامک', 0, 1, + 'شماره کارت برای واریز شارژ سامانه پیامکی (مودال اعتبار پیامک).', 'text' +WHERE NOT EXISTS (SELECT 1 FROM `settings` WHERE `key` = 'sms_charge_card_number' LIMIT 1); + +INSERT INTO `settings` (`key`, `value`, `title_fa`, `can_edit`, `is_active`, `description`, `type`) +SELECT 'sms_charge_sheba', 'IR080560611828005603604201', 'شماره شبا شارژ پیامک', 0, 1, + 'شماره شبا برای واریز شارژ سامانه پیامکی.', 'text' +WHERE NOT EXISTS (SELECT 1 FROM `settings` WHERE `key` = 'sms_charge_sheba' LIMIT 1); + +INSERT INTO `settings` (`key`, `value`, `title_fa`, `can_edit`, `is_active`, `description`, `type`) +SELECT 'sms_charge_account_holder', 'حسین منتظر', 'نام صاحب حساب شارژ پیامک', 0, 1, + 'نام صاحب حساب واریز شارژ سامانه پیامکی.', 'text' +WHERE NOT EXISTS (SELECT 1 FROM `settings` WHERE `key` = 'sms_charge_account_holder' LIMIT 1); + +INSERT INTO `settings` (`key`, `value`, `title_fa`, `can_edit`, `is_active`, `description`, `type`) +SELECT 'sms_charge_note', @sms_charge_note, 'متن راهنمای شارژ پیامک', 0, 1, + @sms_charge_note_desc, 'longtext' +WHERE NOT EXISTS (SELECT 1 FROM `settings` WHERE `key` = 'sms_charge_note' LIMIT 1); + +UPDATE `settings` SET `value` = '6219861961033817' +WHERE `key` = 'sms_charge_card_number' AND (`value` IS NULL OR TRIM(`value`) = ''); +UPDATE `settings` SET `value` = 'IR080560611828005603604201' +WHERE `key` = 'sms_charge_sheba' AND (`value` IS NULL OR TRIM(`value`) = ''); +UPDATE `settings` SET `value` = 'حسین منتظر' +WHERE `key` = 'sms_charge_account_holder' AND (`value` IS NULL OR TRIM(`value`) = ''); +UPDATE `settings` SET `value` = @sms_charge_note +WHERE `key` = 'sms_charge_note' AND (`value` IS NULL OR TRIM(`value`) = ''); + INSERT INTO `settings` (`key`, `value`, `title_fa`, `can_edit`, `is_active`, `description`, `type`) SELECT 'deposit_support_message_text', 'شماره حساب', 'متن پیام به پشتیبانی (واریز)', 1, 1, @deposit_support_msg_desc, 'longtext' WHERE NOT EXISTS (SELECT 1 FROM `settings` WHERE `key` = 'deposit_support_message_text' LIMIT 1); @@ -790,7 +824,7 @@ WHERE NOT EXISTS (SELECT 1 FROM `settings` WHERE `key` = 'minimum_sell' LIMIT 1) -- [super-admin can_edit=0] -- INSERT INTO `settings` (`key`, `value`, `title_fa`, `can_edit`, `is_active`, `description`, `type`) --- SELECT 'referral_bonus_amount', '', 'مقدار پاداش معرف', 0, 1, NULL, 'text' +-- SELECT 'referral_bonus_amount', '', 'مقدار پاداش معرف', 1, 1, NULL, 'text' -- WHERE NOT EXISTS (SELECT 1 FROM `settings` WHERE `key` = 'referral_bonus_amount' LIMIT 1); INSERT INTO `settings` (`key`, `value`, `title_fa`, `can_edit`, `is_active`, `description`, `type`) @@ -955,7 +989,7 @@ WHERE `key` = 'main_product'; -- ============================================================================= -- longtext -UPDATE `settings` SET `type` = 'longtext' WHERE `key` IN ('text_rule', 'text_about', 'support_messenger_text', 'invite_link_text', 'deposit_support_message_text', 'montzar_order_response', 'tracking_systems'); +UPDATE `settings` SET `type` = 'longtext' WHERE `key` IN ('text_rule', 'text_about', 'support_messenger_text', 'invite_link_text', 'deposit_support_message_text', 'montzar_order_response', 'tracking_systems', 'sms_charge_note'); -- select (+ گزینه‌ها در description) -- [super-admin can_edit=0] @@ -1018,7 +1052,8 @@ UPDATE `settings` SET `type` = 'text' WHERE `key` IN ( 'sse_path', 'tahesab_bank_account', 'telegram_bot_token', 'bale_bot_token', 'support_messenger_id', 'referral_bonus_amount', 'balance_report_exclude_customer_id', 'metal_type', 'main_metal', 'montify_name', 'price_extreme_date', - 'liman_token' + 'liman_token', + 'sms_charge_card_number', 'sms_charge_sheba', 'sms_charge_account_holder' ); -- پیش‌فرض برای ردیف‌های بدون type @@ -1221,6 +1256,34 @@ UPDATE `settings` SET `description` = 'شماره شبا واریز — در متن‌ها با ٪شبا یا %شبا جایگزین می‌شود.' WHERE `key` = 'deposit_sheba'; +UPDATE `settings` SET + `title_fa` = 'شماره کارت شارژ پیامک', + `type` = 'text', + `can_edit` = 0, + `description` = 'شماره کارت برای واریز شارژ سامانه پیامکی (مودال اعتبار پیامک).' +WHERE `key` = 'sms_charge_card_number'; + +UPDATE `settings` SET + `title_fa` = 'شماره شبا شارژ پیامک', + `type` = 'text', + `can_edit` = 0, + `description` = 'شماره شبا برای واریز شارژ سامانه پیامکی.' +WHERE `key` = 'sms_charge_sheba'; + +UPDATE `settings` SET + `title_fa` = 'نام صاحب حساب شارژ پیامک', + `type` = 'text', + `can_edit` = 0, + `description` = 'نام صاحب حساب واریز شارژ سامانه پیامکی.' +WHERE `key` = 'sms_charge_account_holder'; + +UPDATE `settings` SET + `title_fa` = 'متن راهنمای شارژ پیامک', + `type` = 'longtext', + `can_edit` = 0, + `description` = @sms_charge_note_desc +WHERE `key` = 'sms_charge_note'; + UPDATE `settings` SET `title_fa` = 'متن دعوتنامه اشتراک‌گذاری', `type` = 'longtext', @@ -1424,8 +1487,12 @@ UPDATE `settings` SET `description` = 'روشن: اگر منبع قیمت montzar باشد، قبل از واریز پاداش معرف/معرف‌شونده همان وزن از همکار خرید می‌شود؛ شکست خرید = واریز نمی‌شود. خاموش: مثل قبل فقط به کیف واریز می‌شود بدون خرید از همکار.' WHERE `key` = 'referral_gift_buy_from_montzar'; UPDATE `settings` SET `description` = 'حداکثر تعداد دعوت‌های مجاز برای هر کاربر. خالی = بدون محدودیت.' WHERE `key` = 'referral_limit'; --- [super-admin can_edit=0] --- UPDATE `settings` SET `description` = 'مبلغ یا مقدار پاداش معرف (متن آزاد — بسته به پیاده‌سازی پیامک/اعتبار). برای نمایش در پیام‌ها.' WHERE `key` = 'referral_bonus_amount'; +UPDATE `settings` SET + `title_fa` = 'مقدار پاداش معرف', + `can_edit` = 1, + `type` = 'text', + `description` = 'مبلغ یا مقدار پاداش معرف برای نمایش در پیامک‌ها و متن‌های دعوت.' +WHERE `key` = 'referral_bonus_amount'; UPDATE `settings` SET `description` = 'روشن: تطبیق شماره کارت بانکی کاربر با سرویس احراز هویت جیبیت هنگام ثبت/ویرایش کارت.' WHERE `key` = 'jibit_verification'; UPDATE `settings` SET `description` = 'روشن: تطبیق کد ملی و موبایل در فرآیند ثبت‌نام از طریق سرویس جیبیت.' WHERE `key` = 'register_jibit_verify'; -- [super-admin can_edit=0] @@ -1613,7 +1680,6 @@ WHERE `key` IN ('text_rule', 'text_about', 'support_messenger_text', 'invite_lin -- 'bale_bot_token', -- 'chart_id', 'chart_use_local_data', -- 'external_order_api_enabled', --- 'referral_bonus_amount', -- 'group_sms', -- 'customer_special_pricing', -- 'customer_direct_sms', @@ -1671,7 +1737,7 @@ UPDATE `settings` SET `can_edit` = 1 WHERE `key` IN ( 'montzar_mobile', 'montzar_open_buy', 'montzar_open_sell', 'montzar_password', 'montzar_product_id', 'open_register', - 'referral_id', 'referral_show', 'referral_limit', 'referral_gift_on_first_order', 'referral_gift_buy_from_montzar', + 'referral_id', 'referral_show', 'referral_limit', 'referral_gift_on_first_order', 'referral_gift_buy_from_montzar', 'referral_bonus_amount', 'register_jibit_verify', 'register_referral_bonus_message', 'register_referral_sms_to_referrer', 'sell_fee', 'show_last_price', 'show_home_price_when_closed', 'show_product_details', 'show_product_trade_status', 'show_product_card_meta', @@ -1697,7 +1763,8 @@ UPDATE `settings` SET `can_edit` = 0 WHERE `key` IN ( 'deposit_method_gateway', 'deposit_method_identified', 'deposit_method_shetab', 'payping_verify_url', 'payping_start_url', 'payping_strict_failed_withdraw', 'payping_fin_token', 'chart_id', 'payping_round_toman', 'payping_gateway_items', - 'payping_gateway_name', 'payping_fin_customer_id', 'payping_fin_url' + 'payping_gateway_name', 'payping_fin_customer_id', 'payping_fin_url', + 'sms_charge_card_number', 'sms_charge_sheba', 'sms_charge_account_holder', 'sms_charge_note' ); -- کلید runtime باقی‌مانده @@ -1784,7 +1851,8 @@ UPDATE `settings` SET `can_edit` = 0 WHERE `key` IN ( 'deposit_method_gateway', 'deposit_method_identified', 'deposit_method_shetab', 'payping_verify_url', 'payping_start_url', 'payping_strict_failed_withdraw', 'payping_fin_token', 'chart_id', 'payping_round_toman', 'payping_gateway_items', - 'payping_gateway_name', 'payping_fin_customer_id', 'payping_fin_url' + 'payping_gateway_name', 'payping_fin_customer_id', 'payping_fin_url', + 'sms_charge_card_number', 'sms_charge_sheba', 'sms_charge_account_holder', 'sms_charge_note' ); UPDATE `settings` SET `can_edit` = 1 WHERE `key` = 'chart_use_local_data'; diff --git a/database/sql/settings_menu_and_show_to_user.sql b/database/sql/settings_menu_and_show_to_user.sql index f260067..0afd4df 100644 --- a/database/sql/settings_menu_and_show_to_user.sql +++ b/database/sql/settings_menu_and_show_to_user.sql @@ -42,6 +42,7 @@ UPDATE `settings` SET `menu` = CASE WHEN `key` LIKE 'montzar_%' OR `key` = 'display_montzar' THEN 'montzar' WHEN `key` LIKE 'sms_notif_%' OR `key` IN ('charge_notif', 'register_referral_sms_to_referrer') THEN 'notifications' + WHEN `key` LIKE 'sms_charge_%' THEN 'sms_charge' WHEN `key` LIKE 'price_channel_%' OR `key` = 'change_mesghal' THEN 'price_channel' WHEN `key` LIKE 'telegram_bot%' OR `key` LIKE 'bale_bot%' OR `key` LIKE 'rubika_bot%' THEN 'bots' WHEN `key` LIKE 'referral_%'