fix deposite and withdraw
This commit is contained in:
@@ -0,0 +1,46 @@
|
||||
-- =============================================================================
|
||||
-- اصلاح transaction_type تراکنشهای ریالی قبلی
|
||||
--
|
||||
-- مشکل: متد charge() در WalletController همیشه type=4 (برداشت ریالی) استفاده میکرد
|
||||
-- حتی وقتی پول مثبت (شارژ) بود.
|
||||
--
|
||||
-- راهحل:
|
||||
-- - cash > 0 و type = 4 → type = 3 (واریز ریالی)
|
||||
-- - cash < 0 و type = 3 → type = 4 (برداشت ریالی)
|
||||
--
|
||||
-- این اسکریپت idempotent است و چند بار اجرا مشکلی ایجاد نمیکند.
|
||||
-- =============================================================================
|
||||
|
||||
START TRANSACTION;
|
||||
|
||||
-- ۱) شارژ ریالی که اشتباه type=4 گرفته → اصلاح به type=3
|
||||
UPDATE `transactions`
|
||||
SET `type` = 3,
|
||||
`updated_at` = NOW()
|
||||
WHERE `type` = 4
|
||||
AND `cash` > 0
|
||||
AND `fund_id` IS NULL;
|
||||
|
||||
-- ۲) برداشت ریالی که اشتباه type=3 گرفته → اصلاح به type=4
|
||||
UPDATE `transactions`
|
||||
SET `type` = 4,
|
||||
`updated_at` = NOW()
|
||||
WHERE `type` = 3
|
||||
AND `cash` < 0
|
||||
AND `fund_id` IS NULL;
|
||||
|
||||
-- ۳) گزارش تعداد تغییرات (اختیاری — برای لاگ)
|
||||
-- SELECT
|
||||
-- (SELECT COUNT(*) FROM `transactions` WHERE `type` = 3 AND `cash` > 0 AND `fund_id` IS NULL) AS fixed_to_deposit,
|
||||
-- (SELECT COUNT(*) FROM `transactions` WHERE `type` = 4 AND `cash` < 0 AND `fund_id` IS NULL) AS fixed_to_withdraw;
|
||||
|
||||
COMMIT;
|
||||
|
||||
-- =============================================================================
|
||||
-- بعد از اجرا، جدول transactions را چک کنید:
|
||||
-- SELECT id, type, type_str, cash, note, created_at
|
||||
-- FROM `transactions`
|
||||
-- WHERE `fund_id` IS NULL AND `type` IN (3,4)
|
||||
-- ORDER BY `created_at` DESC
|
||||
-- LIMIT 20;
|
||||
-- =============================================================================
|
||||
Reference in New Issue
Block a user