diff --git a/app/Domains/Real/Commands/Sync/RefundSync.php b/app/Domains/Real/Commands/Sync/RefundSync.php index b8862dcc..0e5551be 100644 --- a/app/Domains/Real/Commands/Sync/RefundSync.php +++ b/app/Domains/Real/Commands/Sync/RefundSync.php @@ -42,14 +42,18 @@ class RefundSync extends Command ->where('created_at', '<=', $item->create_time) ->update(['refunded_at' => $item->create_time]); - DB::table('virtual_order_cards_partition') - ->leftJoin('cards', 'cards.sim', '=', 'virtual_order_cards_partition.sim') - ->whereIn('virtual_order_cards_partition.sim', $item->sim) - ->where('virtual_order_cards_partition.created_at', '<=', $item->create_time) - ->where(function ($query) use ($item) { - $query->whereNull('cards.virtual_activated_at')->orWhere('cards.virtual_activated_at', '>=', $item->create_time); - }) - ->update(['virtual_order_cards_partition.refunded_at' => $item->create_time]); + $simArrayText = implode(',', $item->sim); + + $sql = " + UPDATE virtual_order_cards_partition AS v + SET refunded_at = '%s' + FROM cards AS c + WHERE c.sim = v.sim + AND v.sim IN (%s) + AND v.created_at <= '%s' + "; + + DB::select(sprintf($sql, $item->create_time, $simArrayText, $item->create_time)); } });