class NotificationStatistic < ApplicationRecord # 当前app端传递的platform的值: # android: igetui, xiaomi, huawei # iso: igetui 目前还不清楚为啥不用apns,暂时不修改 enum platform: %i[igetui apns xiaomi huawei] enum device_platform: %i[ios android] # 用于区分当前的应用,为了推送准备, 因为推送需要根据不同的应用使用不同的 id,secret等。 enum app_type: %i[ik_duli lx_duli lx_yun aike_yun] def self.create_by_params(igetui_opts, message, device_ids_opts, app_type) igetui_opts = igetui_opts.with_indifferent_access message = message.with_indifferent_access device_ids_opts = device_ids_opts.with_indifferent_access device_ids_opts.each do |platform, client_ids| client_ids.each do |client_id| next if message[:id].blank? NotificationStatistic.create( organization_id: igetui_opts[:organization_id], user_id: message[:user_id] || igetui_opts[:user_id], notification_id: message[:id], client_id: client_id, platform: platform, device_platform: igetui_opts[:device_platform], app_type: app_type, ip: igetui_opts[:ip], ) end end rescue => e Rails.logger.info "exception is #{e}" e.backtrace.each { |l| Rails.logger.info l } end def self.static_notification(opts, client_ids, platform, device_platform=nil) ::Log.info("统计数据开始 opts is #{opts.to_json} client_ids is #{client_ids} platform is #{platform} device_platform is #{device_platform}") if client_ids.is_a? Array client_ids.each do |client_id| next if opts[:message][:notifiable_id].blank? NotificationStatistic.create( organization_id: opts[:igetui_opts][:organization_id], user_id: opts[:igetui_opts][:user_id], notification_id: opts[:message][:notifiable_id], client_id: client_id, platform: platform, device_platform: device_platform, app_type: opts[:app_type], ip: opts[:igetui_opts][:ip], ) end end rescue => e ::Log.info "exception is #{e}" e.backtrace.each { |l| ::Log.error l } end end