Class: EricWeixin::Report::NewsData
- Inherits:
-
ActiveRecord::Base
- Object
- ActiveRecord::Base
- EricWeixin::Report::NewsData
- Defined in:
- app/models/eric_weixin/report/news_data.rb
Constant Summary collapse
- NEWS_DATA_TYPE =
['summary', 'total', 'read', 'read_hour', 'share', 'share_hour']
- SHARE_SCENE =
{ 1 => '好友转发', 2 => '朋友圈', 3 => '腾讯微博', 255 => '其他' }
Class Method Summary collapse
-
.auto_execute_get_and_save_data_from_weixin(weixin_public_account_id) ⇒ Object
自动去微信服务器拉取当日前一天的统计模块的图文数据.
-
.create_news_data(options) ⇒ Object
创建一个微信图文数据news_data.
-
.exist(options) ⇒ Object
通过参数确定是否存在这样一个微信图文数据news_data.
-
.get_and_save_article_total(begin_date, end_date, weixin_public_account_id) ⇒ Object
获得公众平台官网数据统计模块中图文群发总数据&保存到数据库.
-
.get_and_save_data_from_weixin(begin_date, end_date, weixin_public_account_id) ⇒ Object
获得公众平台官网数据统计模块中图文群发每日数据&保存到数据库.
-
.get_and_save_user_read(begin_date, end_date, weixin_public_account_id) ⇒ Object
获得公众平台官网数据统计模块中图文统计数据&保存到数据库.
-
.get_and_save_user_read_hour(begin_date, end_date, weixin_public_account_id) ⇒ Object
获得公众平台官网数据统计模块中图文统计分时数据&保存到数据库.
-
.get_and_save_user_share(begin_date, end_date, weixin_public_account_id) ⇒ Object
获得公众平台官网数据统计模块中图文分享转发数据&保存到数据库.
-
.get_and_save_user_share_hour(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::NewsData.auto_execute_get_and_save_data_from_weixin 1
20 21 22 23 24 25 26 27 28 29 30 31 |
# File 'app/models/eric_weixin/report/news_data.rb', line 20 def self.auto_execute_get_and_save_data_from_weixin weixin_public_account_id self.transaction do yesterday = (Time.now - 1.day).to_date.to_s # 取当天的前一天数据 get_and_save_data_from_weixin yesterday, yesterday, weixin_public_account_id get_and_save_article_total yesterday, yesterday, weixin_public_account_id get_and_save_user_read_hour yesterday, yesterday, weixin_public_account_id get_and_save_user_share_hour yesterday, yesterday, weixin_public_account_id get_and_save_user_share yesterday, yesterday, weixin_public_account_id get_and_save_user_read yesterday, yesterday, weixin_public_account_id end end |
.create_news_data(options) ⇒ Object
创建一个微信图文数据news_data.
参数说明
-
ref_date # 数据的日期
-
ref_hour # 数据的小时,包括从000到2300,分别代表的是[000,100)到[2300,2400),即每日的第1小时和最后1小时
-
stat_date # 统计的日期,在getarticletotal接口中,ref_date指的是文章群发出日期, 而stat_date是数据统计日期
-
msgid # 这里的msgid实际上是由msgid(图文消息id)和index(消息次序索引)组成, 例如12003_3, 其中12003是msgid,即一次群发的id消息的; 3为index,假设该次群发的图文消息共5个文章(因为可能为多图文), 3表示5个中的第3个
-
title # 图文消息的标题
-
int_page_read_user # 图文页(点击群发图文卡片进入的页面)的阅读人数
-
int_page_read_count # 图文页的阅读次数
-
ori_page_read_user # 原文页(点击图文页“阅读原文”进入的页面)的阅读人数,无原文页时此处数据为0
-
ori_page_read_count # 原文页的阅读次数
-
share_scene # 分享的场景 1代表好友转发 2代表朋友圈 3代表腾讯微博 255代表其他
-
share_user # 分享的人数
-
share_count # 分享的次数
-
add_to_fav_user # 收藏的人数
-
add_to_fav_count # 收藏的次数
-
target_user # 送达人数,一般约等于总粉丝数(需排除黑名单或其他异常情况下无法收到消息的粉丝)
-
weixin_public_account_id # 公众号ID
-
news_data_type # 数据类型,包括summary、total、read、read_hour、share、share_hour
-
user_source # 数据来源
-
total_online_time # 总在线时间
调用实例
options = {ref_date: ‘2015-6-6’, ref_hour: 0, weixin_public_account_id: 1, news_data_type: ‘summary’ … } ::EricWeixin::Report::NewsData.create_news_data options
57 58 59 60 61 62 63 64 65 66 67 68 |
# File 'app/models/eric_weixin/report/news_data.rb', line 57 def self.create_news_data self.transaction do = , [:ref_date, :ref_hour, :stat_date, :msgid, :title, :int_page_read_user, :int_page_read_count, :ori_page_read_user, :ori_page_read_count, :share_scene, :share_user, :share_count, :add_to_fav_user, :add_to_fav_count, :target_user, :weixin_public_account_id, :news_data_type, :user_source, :total_online_time] news_data = self.new news_data.save! news_data.reload news_data end end |
.exist(options) ⇒ Object
通过参数确定是否存在这样一个微信图文数据news_data.
参数说明
-
ref_date # 数据的日期
-
ref_hour # 数据的小时,包括从000到2300,分别代表的是[000,100)到[2300,2400),即每日的第1小时和最后1小时
-
stat_date # 统计的日期,在getarticletotal接口中,ref_date指的是文章群发出日期, 而stat_date是数据统计日期
-
msgid # 这里的msgid实际上是由msgid(图文消息id)和index(消息次序索引)组成, 例如12003_3, 其中12003是msgid,即一次群发的id消息的; 3为index,假设该次群发的图文消息共5个文章(因为可能为多图文), 3表示5个中的第3个
-
title # 图文消息的标题
-
int_page_read_user # 图文页(点击群发图文卡片进入的页面)的阅读人数
-
int_page_read_count # 图文页的阅读次数
-
ori_page_read_user # 原文页(点击图文页“阅读原文”进入的页面)的阅读人数,无原文页时此处数据为0
-
ori_page_read_count # 原文页的阅读次数
-
share_scene # 分享的场景 1代表好友转发 2代表朋友圈 3代表腾讯微博 255代表其他
-
share_user # 分享的人数
-
share_count # 分享的次数
-
add_to_fav_user # 收藏的人数
-
add_to_fav_count # 收藏的次数
-
target_user # 送达人数,一般约等于总粉丝数(需排除黑名单或其他异常情况下无法收到消息的粉丝)
-
weixin_public_account_id # 公众号ID
-
news_data_type # 数据类型,包括summary、total、read、read_hour、share、share_hour
-
user_source # 数据来源
-
total_online_time # 总在线时间
调用实例
options = {ref_date: ‘2015-6-6’, ref_hour: 0, weixin_public_account_id: 1, news_data_type: ‘summary’ … } ::EricWeixin::Report::NewsData.exist options
返回
true 代表存在 false 代表不存在
97 98 99 100 101 102 103 |
# File 'app/models/eric_weixin/report/news_data.rb', line 97 def self.exist = , [:ref_date, :ref_hour, :stat_date, :msgid, :title, :int_page_read_user, :int_page_read_count, :ori_page_read_user, :ori_page_read_count, :share_scene, :share_user, :share_count, :add_to_fav_user, :add_to_fav_count, :target_user, :weixin_public_account_id, :news_data_type, :user_source, :total_online_time] self.where( ).count >= 1 end |
.get_and_save_article_total(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::NewsData.get_and_save_article_total ‘2015-6-1’, ‘2015-6-1’, 1
138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 |
# File 'app/models/eric_weixin/report/news_data.rb', line 138 def self.get_and_save_article_total 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 } # get_article_total article_total = ::EricWeixin::AnalyzeData.get_article_total pp "############################ article_total ####################################" pp article_total list_total = article_total["list"] list_total.each do |s| s = s.merge(news_data_type: 'total').merge(weixin_public_account_id: weixin_public_account_id) details = s["details"] details.each do |d| self.create_news_data s.merge(d) unless self.exist s.merge(d) end unless details.blank? end unless list_total.blank? end end |
.get_and_save_data_from_weixin(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::NewsData.get_and_save_data_from_weixin ‘2015-6-1’, ‘2015-6-1’, 1
112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 |
# File 'app/models/eric_weixin/report/news_data.rb', line 112 def self.get_and_save_data_from_weixin 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 } # get_article_summary article_summary = ::EricWeixin::AnalyzeData.get_article_summary pp "############################ article_summary ####################################" pp article_summary list_summary = article_summary["list"] list_summary.each do |s| s = s.merge(news_data_type: 'summary').merge(weixin_public_account_id: weixin_public_account_id) self.create_news_data s unless self.exist s end unless list_summary.blank? end end |
.get_and_save_user_read(begin_date, end_date, weixin_public_account_id) ⇒ Object
获得公众平台官网数据统计模块中图文统计数据&保存到数据库.
参数说明
-
begin_date # 获取数据的起始日期,begin_date和end_date的差值需小于3
-
end_date # 获取数据的结束日期,end_date允许设置的最大值为昨日
-
weixin_public_account_id # 公众号ID
调用实例
::EricWeixin::Report::NewsData.get_and_save_user_read ‘2015-6-1’, ‘2015-6-3’, 1
167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 |
# File 'app/models/eric_weixin/report/news_data.rb', line 167 def self.get_and_save_user_read 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 } # get_user_read user_read = ::EricWeixin::AnalyzeData.get_user_read pp "############################ user_read ####################################" pp user_read list_read = user_read["list"] list_read.each do |s| s = s.merge(news_data_type: 'read').merge(weixin_public_account_id: weixin_public_account_id) self.create_news_data s unless self.exist s end unless list_read.blank? end end |
.get_and_save_user_read_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::NewsData.get_and_save_user_read_hour ‘2015-6-1’, ‘2015-6-1’, 1
193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 |
# File 'app/models/eric_weixin/report/news_data.rb', line 193 def self.get_and_save_user_read_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 } # get_user_read_hour user_read_hour = ::EricWeixin::AnalyzeData.get_user_read_hour pp "############################ user_read_hour ####################################" pp user_read_hour list_read_hour = user_read_hour["list"] list_read_hour.each do |s| s = s.merge(news_data_type: 'read_hour').merge(weixin_public_account_id: weixin_public_account_id) self.create_news_data s unless self.exist s end unless list_read_hour.blank? end end |
.get_and_save_user_share(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::NewsData.get_and_save_user_share ‘2015-6-1’, ‘2015-6-7’, 1
219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 |
# File 'app/models/eric_weixin/report/news_data.rb', line 219 def self.get_and_save_user_share 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 } # get_user_share user_share = ::EricWeixin::AnalyzeData.get_user_share pp "############################ user_share ####################################" pp user_share list_share = user_share["list"] list_share.each do |s| s = s.merge(news_data_type: 'share').merge(weixin_public_account_id: weixin_public_account_id) self.create_news_data s unless self.exist s end unless list_share.blank? end end |
.get_and_save_user_share_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::NewsData.get_and_save_user_share_hour ‘2015-6-1’, ‘2015-6-1’, 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/news_data.rb', line 245 def self.get_and_save_user_share_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 } # get_user_share_hour user_share_hour = ::EricWeixin::AnalyzeData.get_user_share_hour pp "############################ user_share_hour ####################################" pp user_share_hour list_share_hour = user_share_hour["list"] list_share_hour.each do |s| s = s.merge(news_data_type: 'share_hour').merge(weixin_public_account_id: weixin_public_account_id) self.create_news_data s unless self.exist s end unless list_share_hour.blank? end end |