Advertisement
nuringa

Untitled

Feb 4th, 2021
1,201
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Ruby 2.94 KB | None | 0 0
  1.     Invoice.where(status: 'wait').each do |invoice|
  2.       if invoice.asset_id == 'usdt' && invoice.commit == 'usdt'
  3.         transfer = Transfer.new
  4.         transfer.amount = invoice.amount
  5.         transfer.asset_id = 'usdt'
  6.         transfer.sender_id = ENV['FA_MEMBER']
  7.         transfer.recipient_id =ENV['MIN_MEMBER_ID']
  8.         transfer.execute!
  9.         invoice.update(status: 'done', )
  10.         MIN::Webhooks.new.invoice(invoice.attributes.merge(price: 1, output_amount: invoice.amount))
  11.       else
  12.         if invoice.order
  13.           order = invoice.order
  14.           if order.state == 'done'
  15.             trades = order.trades.to_a
  16.             price = trades.sum{|trade| trade.price * trade.volume} /trades.sum{|trade| trade.volume}
  17.             trade_volume = trades.sum{|trade| trade.volume}
  18.             volume = order.type == 'OrderAsk' ? trade_volume * price : trade_volume
  19.             if order.type == 'OrderBid'
  20.               transfer = Transfer.new
  21.               transfer.amount = volume
  22.               transfer.asset_id = invoice.asset_id
  23.               transfer.sender_id = ENV['FA_MEMBER']
  24.               transfer.recipient_id =ENV['MIN_MEMBER_ID']
  25.               transfer.execute!
  26.             end
  27.             invoice.update(status: 'done')
  28.             MIN::Webhooks.new.invoice(invoice.attributes.merge(price: price, output_amount: volume))
  29.             # end
  30.           end
  31.         else
  32.           order_base_params = {
  33.               source:        'Invoice',
  34.               ord_type:      'market',
  35.               state:         ::Order::WAIT,
  36.               member_id:     ENV['FA_MEMBER']
  37.           }
  38.           if invoice.commit == 'usdt'
  39.             order_klass = OrderBid
  40.             order_base_params[:amount] = invoice.amount
  41.             order_base_params[:ask_asset_id] = invoice.asset_id
  42.             order_base_params[:bid_asset_id] = invoice.commit
  43.             order_base_params[:currency] = "#{invoice.asset_id}#{ invoice.commit}"
  44.           else
  45.             order_klass = OrderAsk
  46.             order_base_params[:volume] = invoice.amount
  47.             order_base_params[:origin_volume] = invoice.amount
  48.             order_base_params[:ask_asset_id] = invoice.commit
  49.             order_base_params[:bid_asset_id] = invoice.asset_id
  50.             order_base_params[:currency] = "#{invoice.commit}#{invoice.asset_id}"
  51.           end
  52.           order = order_klass.new(order_base_params)
  53.           market = order.market_obj
  54.           account_balance = Account.find_by(member_id: ENV['FA_MEMBER'], currency: invoice.commit ).balance
  55.           HuobiOrdering.new(order).submit(market, nil, account_balance)
  56.           if order
  57.             invoice.update(order: order)
  58.             AMQPQueue.enqueue(
  59.                 :wl_orders,
  60.                 action: 'create_order',
  61.                 order_id: order.id,
  62.                 huobi_id:  market.huobi_id,
  63.                 account_balance: account_balance
  64.             )
  65.           end
  66.  
  67.         end
  68.  
  69.       end
  70.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement