Initial commit

This commit is contained in:
Yaser
2026-08-13 19:50:53 +03:30
commit 38084458fe
879 changed files with 95198 additions and 0 deletions

View File

@@ -0,0 +1,37 @@
module Jobs
module Cron
class ReferralBonus
def self.process
irt_currency = Currency.find('irt')
Operations::Revenue.h24.where(reference_type: 'Trade').find_in_batches(batch_size: 1000).each do |group|
group.each do |revenue|
referral_user = revenue.member.referral_user
next unless referral_user.present?
next unless revenue.credit.positive?
referral_account = referral_user.get_account('irt')
referral_account.lock!
trade = Trade.find(revenue.reference_id)
referral_bonus = if revenue.currency_id.in? %w[irt usdt]
revenue.credit * ENV.fetch('REFERRAL_FEE').to_d * trade.irt_price
else
(revenue.credit * ENV.fetch('REFERRAL_FEE').to_d) * (trade.price * trade.irt_price)
end
begin
ActiveRecord::Base.transaction do
referral_account.balance += referral_bonus
referral_account.save!
bonus = Bonus.create(trade: trade, sender_member: revenue.member, bonus_member: referral_user, amount: referral_bonus, state: 'payed')
Operations::Revenue.debit!(amount: referral_bonus, member_id: referral_user, currency: irt_currency, reference_type: 'bonus', reference_id: bonus.id)
end
rescue StandardError
Bonus.create(trade: trade, sender_member: revenue.member, bonus_member: referral_user, amount: referral_bonus, state: 'pending')
end
end
end
sleep 86400
end
end
end
end