Module: Api::Vendor::V1::Dianping::Concerns::OrderErrorResponses
- Extended by:
- ActiveSupport::Concern
- Includes:
- Concerns::TicketTransactionHelpers
- Included in:
- OrdersController
- Defined in:
- app/controllers/api/vendor/v1/dianping/concerns/order_error_responses.rb
Overview
typed: ignore frozen_string_literal: true
Instance Method Summary collapse
Instance Method Details
#render_error(data = {}) ⇒ Object
8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 |
# File 'app/controllers/api/vendor/v1/dianping/concerns/order_error_responses.rb', line 8 def render_error(data = {}) ota_order_status = if [:occupy, :query, nil, ''].include?(data[:method]) ApiVendorV1::Constants::DIANPING_OCCUPY_FAILED_STATUS elsif data[:method] == :release ApiVendorV1::Constants::DIANPING_RELEASE_FAILED_STATUS elsif data[:method] == :confirm ApiVendorV1::Constants::DIANPING_CONFIRM_FAILED_STATUS elsif data[:method] == :cancel ApiVendorV1::Constants::DIANPING_CANCEL_FAILED_STATUS else raise NotImplementedError end order_data = { msg: data[:msg], code: data[:code], vendor_order_id: vendor_order_id, is_success: false, ticket_transaction_id: data[:ticket_transaction_id], ota_order_status: ota_order_status, refund_id: data[:refund_id], } report_error(order_data.merge(params: parsed_data, method: data[:method])) if %i[confirm cancel].include?(data[:method]) worker_data = order_data.slice(:vendor_order_id, :ticket_transaction_id, :ota_order_status, :refund_id) worker_data[:method] = data[:method] Vendors::Dianping::OrderWebhookWorker.perform_async(worker_data) end serialized_data = Api::Vendor::V1::Dianping::OrderSerializer.new(OpenStruct.new(order_data)) render json: serialized_data, status: :ok end |
#report_error(data) ⇒ Object
44 45 46 47 48 49 50 51 52 |
# File 'app/controllers/api/vendor/v1/dianping/concerns/order_error_responses.rb', line 44 def report_error(data) error_heading = "Api:Dianping:#{data[:method]}: #{data[:msg]}" BUSINESS_LOGGER.set_business_context({ ticket_transaction_id: data[:ticket_transaction_id] }) BUSINESS_LOGGER.error(error_heading, data: data) return if skip_reporting_error?(data[:msg]) APMErrorHandler.report(error_heading, data: data, ticket_transaction_id: data[:ticket_transaction_id]) send_notify_email(data) end |
#send_notify_email(data) ⇒ Object
54 55 56 57 58 59 60 61 |
# File 'app/controllers/api/vendor/v1/dianping/concerns/order_error_responses.rb', line 54 def send_notify_email(data) receivers = [::SUPPORT_EMAIL, ::SUPPORT_EMAIL_SLACK, ::VENDOR_TEAM_EMAIL] subject = "#{data[:error_from]}: #{data[:msg]}" body = <<~BODY #{data} BODY StaffMailer.notify(subject, body, receivers).deliver_later! end |