Class: EricWeixin::Report::InterfaceData

Inherits:
ActiveRecord::Base
  • Object
show all
Defined in:
app/models/eric_weixin/report/interface_data.rb

Constant Summary collapse

INTERFACE_DATA_TYPE =
['summary', 'summary_hour']

Class Method Summary collapse

Class Method Details

.auto_execute_get_and_save_data_from_weixin(weixin_public_account_id) ⇒ Object

自动去微信服务器拉取当日之前的统计模块的接口数据.

参数说明

  • weixin_public_account_id # 微信公众号ID

调用实例

::EricWeixin::Report::InterfaceData.auto_execute_get_and_save_data_from_weixin 1



14
15
16
17
18
19
20
21
# File 'app/models/eric_weixin/report/interface_data.rb', line 14

def self.auto_execute_get_and_save_data_from_weixin 
  self.transaction do
    yesterday = (Time.now - 1.day).to_date.to_s
    # 取当天的前一天数据
    get_and_save_interface_summary yesterday, yesterday, 
    get_and_save_interface_summary_hour yesterday, yesterday, 
  end
end

.create_interface_data(options) ⇒ Object

创建一个微信接口数据interface_data.

参数说明

  • ref_date # 数据的日期

  • ref_hour # 数据的小时,包括从000到2300,分别代表的是[000,100)到[2300,2400),即每日的第1小时和最后1小时

  • callback_count # 通过服务器配置地址获得消息后,被动回复用户消息的次数

  • fail_count # 上述动作的失败次数

  • total_time_cost # 总耗时,除以callback_count即为平均耗时

  • max_time_cost # 最大耗时

  • weixin_public_account_id # 公众账号ID

  • interface_data_type # 数据类型,包括summary、summary_hour

调用实例

options = {ref_date: ‘2015-6-6’, ref_hour: 0, weixin_public_account_id: 1, interface_data_type: ‘summary’ … } ::EricWeixin::Report::InterfaceData.create_interface_data options



36
37
38
39
40
41
42
43
44
45
# File 'app/models/eric_weixin/report/interface_data.rb', line 36

def self.create_interface_data options
  self.transaction do
    options = get_arguments_options options, [:ref_date, :ref_hour, :callback_count, :fail_count, :total_time_cost, :max_time_cost,
                                              :weixin_public_account_id, :interface_data_type]
    interface_data = self.new options
    interface_data.save!
    interface_data.reload
    interface_data
  end
end

.exist(options) ⇒ Object

通过参数确定是否存在这样一个微信接口数据interface_data.

参数说明

  • ref_date # 数据的日期

  • ref_hour # 数据的小时,包括从000到2300,分别代表的是[000,100)到[2300,2400),即每日的第1小时和最后1小时

  • callback_count # 通过服务器配置地址获得消息后,被动回复用户消息的次数

  • fail_count # 上述动作的失败次数

  • total_time_cost # 总耗时,除以callback_count即为平均耗时

  • max_time_cost # 最大耗时

  • weixin_public_account_id # 公众账号ID

  • interface_data_type # 数据类型,包括summary、summary_hour

调用实例

options = {ref_date: ‘2015-6-6’, ref_hour: 0, weixin_public_account_id: 1, interface_data_type: ‘summary’ … } ::EricWeixin::Report::InterfaceData.exist options

返回

true 代表存在 false 代表不存在



63
64
65
66
67
# File 'app/models/eric_weixin/report/interface_data.rb', line 63

def self.exist options
  options = get_arguments_options options, [:ref_date, :ref_hour, :callback_count, :fail_count, :total_time_cost, :max_time_cost,
                                            :weixin_public_account_id, :interface_data_type]
  self.where( options ).count >= 1
end

.get_and_save_interface_summary(begin_date, end_date, weixin_public_account_id) ⇒ Object

获得公众平台官网数据统计模块中接口分析数据&保存到数据库.

参数说明

  • begin_date # 获取数据的起始日期,begin_date和end_date的差值需小于30

  • end_date # 获取数据的结束日期,end_date允许设置的最大值为昨日

  • weixin_public_account_id # 公众号ID

调用实例

::EricWeixin::Report::InterfaceData.get_and_save_interface_summary ‘2015-5-1’, ‘2015-5-30’, 1



76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
# File 'app/models/eric_weixin/report/interface_data.rb', line 76

def self.get_and_save_interface_summary begin_date, end_date, 
  self.transaction do
    options = {
        :begin_date => begin_date,
        :end_date => end_date,
        :weixin_public_account_id => 
    }
    interface_summary = ::EricWeixin::AnalyzeData.get_interface_summary options
    pp "############################ interface_summary ####################################"
    pp interface_summary
    list_summary = interface_summary["list"]
    list_summary.each do |s|
      s = s.merge(interface_data_type: 'summary').merge(weixin_public_account_id: )
      self.create_interface_data s unless self.exist s
    end unless list_summary.blank?

  end
end

.get_and_save_interface_summary_hour(begin_date, end_date, weixin_public_account_id) ⇒ Object

获得公众平台官网数据统计模块中接口分析分时数据&保存到数据库.

参数说明

  • begin_date # 获取数据的起始日期,begin_date和end_date的差值需小于1

  • end_date # 获取数据的结束日期,end_date允许设置的最大值为昨日

  • weixin_public_account_id # 公众号ID

调用实例

::EricWeixin::Report::InterfaceData.get_and_save_interface_summary_hour ‘2015-5-1’, ‘2015-5-1’, 1



102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
# File 'app/models/eric_weixin/report/interface_data.rb', line 102

def self.get_and_save_interface_summary_hour begin_date, end_date, 
  self.transaction do
    options = {
        :begin_date => begin_date,
        :end_date => end_date,
        :weixin_public_account_id => 
    }
    interface_summary_hour = ::EricWeixin::AnalyzeData.get_interface_summary_hour options
    pp "############################ interface_summary_hour ####################################"
    pp interface_summary_hour
    list_summary_hour = interface_summary_hour["list"]
    list_summary_hour.each do |s|
      s = s.merge(interface_data_type: 'summary_hour').merge(weixin_public_account_id: )
      self.create_interface_data s unless self.exist s
    end unless list_summary_hour.blank?

  end
end