Class: EricWeixin::Report::MsgData
- Inherits:
-
ActiveRecord::Base
- Object
- ActiveRecord::Base
- EricWeixin::Report::MsgData
- Defined in:
- app/models/eric_weixin/report/msg_data.rb
Constant Summary collapse
- MSG_DATA_TYPE =
['summary', 'msg_hour', 'msg_week', 'msg_month', 'msg_dist', 'msg_dist_week', 'msg_dist_month']
- MSG_TYPE =
{ 1 => '代表文字', 2 => '代表图片', 3 => '代表语音', 4 => '代表视频', 6 => '代表第三方应用消息(链接消息)' }
- INTERVAL =
{ 0 => '0', 1 => '1-5', 2 => '6-10', 3 => '10次以上' }
Class Method Summary collapse
-
.auto_execute_get_and_save_data_from_weixin(weixin_public_account_id) ⇒ Object
自动去微信服务器拉取当日之前的统计模块的消息数据.
-
.create_msg_data(options) ⇒ Object
创建一个微信消息数据msg_data.
-
.exist(options) ⇒ Object
通过参数确定是否存在这样一个微信消息数据msg_data.
-
.get_and_save_upstream_msg(begin_date, end_date, weixin_public_account_id) ⇒ Object
获得公众平台官网数据统计模块中消息发送概况数据&保存到数据库.
-
.get_and_save_upstream_msg_dist(begin_date, end_date, weixin_public_account_id) ⇒ Object
获得公众平台官网数据统计模块中消息发送分布数据&保存到数据库.
-
.get_and_save_upstream_msg_dist_month(begin_date, end_date, weixin_public_account_id) ⇒ Object
获得公众平台官网数据统计模块中消息发送分布月数据&保存到数据库.
-
.get_and_save_upstream_msg_dist_week(begin_date, end_date, weixin_public_account_id) ⇒ Object
获得公众平台官网数据统计模块中消息发送分布周数据&保存到数据库.
-
.get_and_save_upstream_msg_hour(begin_date, end_date, weixin_public_account_id) ⇒ Object
获得公众平台官网数据统计模块中消息分送分时数据&保存到数据库.
-
.get_and_save_upstream_msg_month(begin_date, end_date, weixin_public_account_id) ⇒ Object
获得公众平台官网数据统计模块中消息发送月数据&保存到数据库.
-
.get_and_save_upstream_msg_week(begin_date, end_date, weixin_public_account_id) ⇒ Object
获得公众平台官网数据统计模块中消息发送周数据&保存到数据库.
Class Method Details
.auto_execute_get_and_save_data_from_weixin(weixin_public_account_id) ⇒ Object
自动去微信服务器拉取当日之前的统计模块的消息数据.
参数说明
-
weixin_public_account_id # 微信公众号ID
调用实例
::EricWeixin::Report::MsgData.auto_execute_get_and_save_data_from_weixin 1
27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 |
# File 'app/models/eric_weixin/report/msg_data.rb', line 27 def self.auto_execute_get_and_save_data_from_weixin weixin_public_account_id self.transaction do # 若当前是周一,则取上周 整周 的数据 if Time.now.to_date.cwday == 1 s = (Time.now - 7.day).to_date.to_s get_and_save_upstream_msg_week s, s, weixin_public_account_id get_and_save_upstream_msg_dist_week s, s, weixin_public_account_id end # 获取昨天的数据 d = (Time.now - 1.day).to_date.to_s get_and_save_upstream_msg d, d, weixin_public_account_id get_and_save_upstream_msg_hour d, d, weixin_public_account_id get_and_save_upstream_msg_dist d, d, weixin_public_account_id # 若当前是月初第一天,则取上个月的数据 if Time.now.day == 1 s = Time.now.last_month.beginning_of_month.to_date.to_s get_and_save_upstream_msg_month s, s, weixin_public_account_id get_and_save_upstream_msg_dist_month s, s, weixin_public_account_id end end end |
.create_msg_data(options) ⇒ Object
创建一个微信消息数据msg_data.
参数说明
-
user_source # 数据来源
-
ref_date # 数据的日期
-
ref_hour # 数据的小时,包括从000到2300,分别代表的是[000,100)到[2300,2400),即每日的第1小时和最后1小时
-
msg_type # 消息类型,代表含义如下:1代表文字 2代表图片 3代表语音 4代表视频 6代表第三方应用消息(链接消息)
-
msg_user # 上行发送了(向公众号发送了)消息的用户数
-
msg_count # 上行发送了消息的消息总数
-
count_interval # 当日发送消息量分布的区间,0代表 “0”,1代表“1-5”,2代表“6-10”,3代表“10次以上”
-
int_page_read_count # 图文页的阅读次数
-
ori_page_read_user # 原文页(点击图文页“阅读原文”进入的页面)的阅读人数,无原文页时此处数据为0
-
weixin_public_account_id # 公众号ID
-
msg_data_type # 数据类型,包括summary、msg_hour、msg_week、msg_month、msg_dist、msg_dist_week、msg_dist_month
调用实例
options = {ref_date: ‘2015-6-6’, ref_hour: 0, weixin_public_account_id: 1, msg_data_type: ‘summary’ … } ::EricWeixin::Report::MsgData.create_msg_data options
66 67 68 69 70 71 72 73 74 75 |
# File 'app/models/eric_weixin/report/msg_data.rb', line 66 def self.create_msg_data self.transaction do = , [:user_source, :ref_date, :ref_hour, :msg_type, :msg_user, :msg_count, :count_interval, :int_page_read_count, :ori_page_read_user, :weixin_public_account_id, :msg_data_type ] msg_data = self.new msg_data.save! msg_data.reload msg_data end end |
.exist(options) ⇒ Object
通过参数确定是否存在这样一个微信消息数据msg_data.
参数说明
-
user_source # 数据来源
-
ref_date # 数据的日期
-
ref_hour # 数据的小时,包括从000到2300,分别代表的是[000,100)到[2300,2400),即每日的第1小时和最后1小时
-
msg_type # 消息类型,代表含义如下:1代表文字 2代表图片 3代表语音 4代表视频 6代表第三方应用消息(链接消息)
-
msg_user # 上行发送了(向公众号发送了)消息的用户数
-
msg_count # 上行发送了消息的消息总数
-
count_interval # 当日发送消息量分布的区间,0代表 “0”,1代表“1-5”,2代表“6-10”,3代表“10次以上”
-
int_page_read_count # 图文页的阅读次数
-
ori_page_read_user # 原文页(点击图文页“阅读原文”进入的页面)的阅读人数,无原文页时此处数据为0
-
weixin_public_account_id # 公众号ID
-
msg_data_type # 数据类型,包括summary、msg_hour、msg_week、msg_month、msg_dist、msg_dist_week、msg_dist_month
调用实例
options = {ref_date: ‘2015-6-6’, ref_hour: 0, weixin_public_account_id: 1, msg_data_type: ‘summary’ … } ::EricWeixin::Report::MsgData.exist options
返回
true 代表存在 false 代表不存在
96 97 98 99 100 |
# File 'app/models/eric_weixin/report/msg_data.rb', line 96 def self.exist = , [:user_source, :ref_date, :ref_hour, :msg_type, :msg_user, :msg_count, :count_interval, :int_page_read_count, :ori_page_read_user, :weixin_public_account_id, :msg_data_type ] self.where( ).count >= 1 end |
.get_and_save_upstream_msg(begin_date, end_date, weixin_public_account_id) ⇒ Object
获得公众平台官网数据统计模块中消息发送概况数据&保存到数据库.
参数说明
-
begin_date # 获取数据的起始日期,begin_date和end_date的差值需小于7
-
end_date # 获取数据的结束日期,end_date允许设置的最大值为昨日
-
weixin_public_account_id # 公众号ID
调用实例
::EricWeixin::Report::MsgData.get_and_save_upstream_msg ‘2015-6-1’, ‘2015-6-7’, 1
109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 |
# File 'app/models/eric_weixin/report/msg_data.rb', line 109 def self.get_and_save_upstream_msg begin_date, end_date, weixin_public_account_id self.transaction do = { :begin_date => begin_date, :end_date => end_date, :weixin_public_account_id => weixin_public_account_id } # 获取消息发送概况数据(getupstreammsg) # get_upstream_msg upstream_msg = ::EricWeixin::AnalyzeData.get_upstream_msg pp "############################ upstream_msg ####################################" pp upstream_msg list_summary = upstream_msg["list"] list_summary.each do |s| s = s.merge(msg_data_type: 'summary').merge(weixin_public_account_id: weixin_public_account_id) self.create_msg_data s unless self.exist s end unless list_summary.blank? end end |
.get_and_save_upstream_msg_dist(begin_date, end_date, weixin_public_account_id) ⇒ Object
获得公众平台官网数据统计模块中消息发送分布数据&保存到数据库.
参数说明
-
begin_date # 获取数据的起始日期,begin_date和end_date的差值需小于15
-
end_date # 获取数据的结束日期,end_date允许设置的最大值为昨日
-
weixin_public_account_id # 公众号ID
调用实例
::EricWeixin::Report::MsgData.get_and_save_upstream_msg_dist ‘2015-5-1’, ‘2015-5-15’, 1
218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 |
# File 'app/models/eric_weixin/report/msg_data.rb', line 218 def self.get_and_save_upstream_msg_dist begin_date, end_date, weixin_public_account_id self.transaction do = { :begin_date => begin_date, :end_date => end_date, :weixin_public_account_id => weixin_public_account_id } # 获取消息发送分布数据(getupstreammsgdist) # get_upstream_msg_dist upstream_msg_dist = ::EricWeixin::AnalyzeData.get_upstream_msg_dist pp "############################ upstream_msg_dist ####################################" pp upstream_msg_dist list_msg_dist = upstream_msg_dist["list"] list_msg_dist.each do |s| s = s.merge(msg_data_type: 'msg_dist').merge(weixin_public_account_id: weixin_public_account_id) self.create_msg_data s unless self.exist s end unless list_msg_dist.blank? end end |
.get_and_save_upstream_msg_dist_month(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::MsgData.get_and_save_upstream_msg_dist_month ‘2015-5-1’, ‘2015-5-30’, 1
272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 |
# File 'app/models/eric_weixin/report/msg_data.rb', line 272 def self.get_and_save_upstream_msg_dist_month begin_date, end_date, weixin_public_account_id self.transaction do = { :begin_date => begin_date, :end_date => end_date, :weixin_public_account_id => weixin_public_account_id } # 获取消息发送分布月数据(getupstreammsgdistmonth) # get_upstream_msg_dist_month upstream_msg_dist_month = ::EricWeixin::AnalyzeData.get_upstream_msg_dist_month pp "############################ upstream_msg_dist_month ####################################" pp upstream_msg_dist_month list_msg_dist_month = upstream_msg_dist_month["list"] list_msg_dist_month.each do |s| s = s.merge(msg_data_type: 'msg_dist_month').merge(weixin_public_account_id: weixin_public_account_id) self.create_msg_data s unless self.exist s end unless list_msg_dist_month.blank? end end |
.get_and_save_upstream_msg_dist_week(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::MsgData.get_and_save_upstream_msg_dist_week ‘2015-5-1’, ‘2015-5-30’, 1
245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 |
# File 'app/models/eric_weixin/report/msg_data.rb', line 245 def self.get_and_save_upstream_msg_dist_week begin_date, end_date, weixin_public_account_id self.transaction do = { :begin_date => begin_date, :end_date => end_date, :weixin_public_account_id => weixin_public_account_id } # 获取消息发送分布周数据(getupstreammsgdistweek) # get_upstream_msg_dist_week upstream_msg_dist_week = ::EricWeixin::AnalyzeData.get_upstream_msg_dist_week pp "############################ upstream_msg_dist_week ####################################" pp upstream_msg_dist_week list_msg_dist_week = upstream_msg_dist_week["list"] list_msg_dist_week.each do |s| s = s.merge(msg_data_type: 'msg_dist_week').merge(weixin_public_account_id: weixin_public_account_id) self.create_msg_data s unless self.exist s end unless list_msg_dist_week.blank? end end |
.get_and_save_upstream_msg_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::MsgData.get_and_save_upstream_msg_hour ‘2015-6-1’, ‘2015-6-1’, 1
137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 |
# File 'app/models/eric_weixin/report/msg_data.rb', line 137 def self.get_and_save_upstream_msg_hour begin_date, end_date, weixin_public_account_id self.transaction do = { :begin_date => begin_date, :end_date => end_date, :weixin_public_account_id => weixin_public_account_id } # 获取消息分送分时数据(getupstreammsghour) # get_upstream_msg_hour upstream_msg_hour = ::EricWeixin::AnalyzeData.get_upstream_msg_hour pp "############################ upstream_msg_hour ####################################" pp upstream_msg_hour list_msg_hour = upstream_msg_hour["list"] list_msg_hour.each do |s| s = s.merge(msg_data_type: 'msg_hour').merge(weixin_public_account_id: weixin_public_account_id) self.create_msg_data s unless self.exist s end unless list_msg_hour.blank? end end |
.get_and_save_upstream_msg_month(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::MsgData.get_and_save_upstream_msg_month ‘2015-5-1’, ‘2015-5-30’, 1
191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 |
# File 'app/models/eric_weixin/report/msg_data.rb', line 191 def self.get_and_save_upstream_msg_month begin_date, end_date, weixin_public_account_id self.transaction do = { :begin_date => begin_date, :end_date => end_date, :weixin_public_account_id => weixin_public_account_id } # 获取消息发送月数据(getupstreammsgmonth) # get_upstream_msg_month upstream_msg_month = ::EricWeixin::AnalyzeData.get_upstream_msg_month pp "############################ upstream_msg_month ####################################" pp upstream_msg_month list_msg_month = upstream_msg_month["list"] list_msg_month.each do |s| s = s.merge(msg_data_type: 'msg_month').merge(weixin_public_account_id: weixin_public_account_id) self.create_msg_data s unless self.exist s end unless list_msg_month.blank? end end |
.get_and_save_upstream_msg_week(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::MsgData.get_and_save_upstream_msg_week ‘2015-5-1’, ‘2015-5-30’, 1
164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 |
# File 'app/models/eric_weixin/report/msg_data.rb', line 164 def self.get_and_save_upstream_msg_week begin_date, end_date, weixin_public_account_id self.transaction do = { :begin_date => begin_date, :end_date => end_date, :weixin_public_account_id => weixin_public_account_id } # 获取消息发送周数据(getupstreammsgweek) # get_upstream_msg_week upstream_msg_week = ::EricWeixin::AnalyzeData.get_upstream_msg_week pp "############################ upstream_msg_week ####################################" pp upstream_msg_week list_msg_week = upstream_msg_week["list"] list_msg_week.each do |s| s = s.merge(msg_data_type: 'msg_week').merge(weixin_public_account_id: weixin_public_account_id) self.create_msg_data s unless self.exist s end unless list_msg_week.blank? end end |