broadcast.go 8.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271
  1. package datacube
  2. import (
  3. "fmt"
  4. "github.com/silenceper/wechat/v2/util"
  5. )
  6. const (
  7. getArticleSummary = "https://api.weixin.qq.com/datacube/getarticlesummary"
  8. getArticleTotal = "https://api.weixin.qq.com/datacube/getarticletotal"
  9. getUserRead = "https://api.weixin.qq.com/datacube/getuserread"
  10. getUserReadHour = "https://api.weixin.qq.com/datacube/getuserreadhour"
  11. getUserShare = "https://api.weixin.qq.com/datacube/getusershare"
  12. getUserShareHour = "https://api.weixin.qq.com/datacube/getusersharehour"
  13. )
  14. // ResArticleSummary 获取图文群发每日数据响应
  15. type ResArticleSummary struct {
  16. util.CommonError
  17. List []struct {
  18. RefDate string `json:"ref_date"`
  19. MsgID string `json:"msgid"`
  20. Title string `json:"title"`
  21. IntPageReadUser int `json:"int_page_read_user"`
  22. IntPageReadCount int `json:"int_page_read_count"`
  23. OriPageReadUser int `json:"ori_page_read_user"`
  24. OriPageReadCount int `json:"ori_page_read_count"`
  25. ShareUser int `json:"share_user"`
  26. ShareCount int `json:"share_count"`
  27. AddToFavUser int `json:"add_to_fav_user"`
  28. AddToFavCount int `json:"add_to_fav_count"`
  29. } `json:"list"`
  30. }
  31. // ResArticleTotal 获取图文群发总数据响应
  32. type ResArticleTotal struct {
  33. util.CommonError
  34. List []struct {
  35. RefDate string `json:"ref_date"`
  36. MsgID string `json:"msgid"`
  37. Title string `json:"title"`
  38. Details []ArticleTotalDetails `json:"details"`
  39. } `json:"list"`
  40. }
  41. // ArticleTotalDetails 获取图文群发总数据响应文字详情
  42. type ArticleTotalDetails struct {
  43. StatDate string `json:"stat_date"`
  44. TargetUser int `json:"target_user"`
  45. IntPageReadUser int `json:"int_page_read_user"`
  46. IntPageReadCount int `json:"int_page_read_count"`
  47. OriPageReadUser int `json:"ori_page_read_user"`
  48. OriPageReadCount int `json:"ori_page_read_count"`
  49. ShareUser int `json:"share_user"`
  50. ShareCount int `json:"share_count"`
  51. AddToFavUser int `json:"add_to_fav_user"`
  52. AddToFavCount int `json:"add_to_fav_count"`
  53. IntPageFromSessionReadUser int `json:"int_page_from_session_read_user"`
  54. IntPageFromSessionReadCount int `json:"int_page_from_session_read_count"`
  55. IntPageFromHistMsgReadUser int `json:"int_page_from_hist_msg_read_user"`
  56. IntPageFromHistMsgReadCount int `json:"int_page_from_hist_msg_read_count"`
  57. IntPageFromFeedReadUser int `json:"int_page_from_feed_read_user"`
  58. IntPageFromFeedReadCount int `json:"int_page_from_feed_read_count"`
  59. IntPageFromFriendsReadUser int `json:"int_page_from_friends_read_user"`
  60. IntPageFromFriendsReadCount int `json:"int_page_from_friends_read_count"`
  61. IntPageFromOtherReadUser int `json:"int_page_from_other_read_user"`
  62. IntPageFromOtherReadCount int `json:"int_page_from_other_read_count"`
  63. FeedShareFromSessionUser int `json:"feed_share_from_session_user"`
  64. FeedShareFromSessionCnt int `json:"feed_share_from_session_cnt"`
  65. FeedShareFromFeedUser int `json:"feed_share_from_feed_user"`
  66. FeedShareFromFeedCnt int `json:"feed_share_from_feed_cnt"`
  67. FeedShareFromOtherUser int `json:"feed_share_from_other_user"`
  68. FeedShareFromOtherCnt int `json:"feed_share_from_other_cnt"`
  69. }
  70. // ResUserRead 获取图文统计数据响应
  71. type ResUserRead struct {
  72. util.CommonError
  73. List []struct {
  74. RefDate string `json:"ref_date"`
  75. UserSource int `json:"user_source"`
  76. IntPageReadUser int `json:"int_page_read_user"`
  77. IntPageReadCount int `json:"int_page_read_count"`
  78. OriPageReadUser int `json:"ori_page_read_user"`
  79. OriPageReadCount int `json:"ori_page_read_count"`
  80. ShareUser int `json:"share_user"`
  81. ShareCount int `json:"share_count"`
  82. AddToFavUser int `json:"add_to_fav_user"`
  83. AddToFavCount int `json:"add_to_fav_count"`
  84. } `json:"list"`
  85. }
  86. // ResUserReadHour 获取图文统计分时数据
  87. type ResUserReadHour struct {
  88. util.CommonError
  89. List []struct {
  90. RefDate string `json:"ref_date"`
  91. RefHour int `json:"ref_hour"`
  92. UserSource int `json:"user_source"`
  93. IntPageReadUser int `json:"int_page_read_user"`
  94. IntPageReadCount int `json:"int_page_read_count"`
  95. OriPageReadUser int `json:"ori_page_read_user"`
  96. OriPageReadCount int `json:"ori_page_read_count"`
  97. ShareUser int `json:"share_user"`
  98. ShareCount int `json:"share_count"`
  99. AddToFavUser int `json:"add_to_fav_user"`
  100. AddToFavCount int `json:"add_to_fav_count"`
  101. } `json:"list"`
  102. }
  103. // ResUserShare 获取图文分享转发数据
  104. type ResUserShare struct {
  105. util.CommonError
  106. List []struct {
  107. RefDate string `json:"ref_date"`
  108. ShareScene int `json:"share_scene"`
  109. ShareCount int `json:"share_count"`
  110. ShareUser int `json:"share_user"`
  111. } `json:"list"`
  112. }
  113. // ResUserShareHour 获取图文分享转发分时数据
  114. type ResUserShareHour struct {
  115. util.CommonError
  116. List []struct {
  117. RefDate string `json:"ref_date"`
  118. RefHour int `json:"ref_hour"`
  119. ShareScene int `json:"share_scene"`
  120. ShareCount int `json:"share_count"`
  121. ShareUser int `json:"share_user"`
  122. } `json:"list"`
  123. }
  124. // GetArticleSummary 获取图文群发每日数据
  125. func (cube *DataCube) GetArticleSummary(s string, e string) (resArticleSummary ResArticleSummary, err error) {
  126. accessToken, err := cube.GetAccessToken()
  127. if err != nil {
  128. return
  129. }
  130. uri := fmt.Sprintf("%s?access_token=%s", getArticleSummary, accessToken)
  131. reqDate := &reqDate{
  132. BeginDate: s,
  133. EndDate: e,
  134. }
  135. response, err := util.PostJSON(uri, reqDate)
  136. if err != nil {
  137. return
  138. }
  139. err = util.DecodeWithError(response, &resArticleSummary, "GetArticleSummary")
  140. return
  141. }
  142. // GetArticleTotal 获取图文群发总数据
  143. func (cube *DataCube) GetArticleTotal(s string, e string) (resArticleTotal ResArticleTotal, err error) {
  144. accessToken, err := cube.GetAccessToken()
  145. if err != nil {
  146. return
  147. }
  148. uri := fmt.Sprintf("%s?access_token=%s", getArticleTotal, accessToken)
  149. reqDate := &reqDate{
  150. BeginDate: s,
  151. EndDate: e,
  152. }
  153. response, err := util.PostJSON(uri, reqDate)
  154. if err != nil {
  155. return
  156. }
  157. err = util.DecodeWithError(response, &resArticleTotal, "GetArticleTotal")
  158. return
  159. }
  160. // GetUserRead 获取图文统计数据
  161. func (cube *DataCube) GetUserRead(s string, e string) (resUserRead ResUserRead, err error) {
  162. accessToken, err := cube.GetAccessToken()
  163. if err != nil {
  164. return
  165. }
  166. uri := fmt.Sprintf("%s?access_token=%s", getUserRead, accessToken)
  167. reqDate := &reqDate{
  168. BeginDate: s,
  169. EndDate: e,
  170. }
  171. response, err := util.PostJSON(uri, reqDate)
  172. if err != nil {
  173. return
  174. }
  175. err = util.DecodeWithError(response, &resUserRead, "GetUserRead")
  176. return
  177. }
  178. // GetUserReadHour 获取图文统计分时数据
  179. func (cube *DataCube) GetUserReadHour(s string, e string) (resUserReadHour ResUserReadHour, err error) {
  180. accessToken, err := cube.GetAccessToken()
  181. if err != nil {
  182. return
  183. }
  184. uri := fmt.Sprintf("%s?access_token=%s", getUserReadHour, accessToken)
  185. reqDate := &reqDate{
  186. BeginDate: s,
  187. EndDate: e,
  188. }
  189. response, err := util.PostJSON(uri, reqDate)
  190. if err != nil {
  191. return
  192. }
  193. err = util.DecodeWithError(response, &resUserReadHour, "GetUserReadHour")
  194. return
  195. }
  196. // GetUserShare 获取图文分享转发数据
  197. func (cube *DataCube) GetUserShare(s string, e string) (resUserShare ResUserShare, err error) {
  198. accessToken, err := cube.GetAccessToken()
  199. if err != nil {
  200. return
  201. }
  202. uri := fmt.Sprintf("%s?access_token=%s", getUserShare, accessToken)
  203. reqDate := &reqDate{
  204. BeginDate: s,
  205. EndDate: e,
  206. }
  207. response, err := util.PostJSON(uri, reqDate)
  208. if err != nil {
  209. return
  210. }
  211. err = util.DecodeWithError(response, &resUserShare, "GetUserShare")
  212. return
  213. }
  214. // GetUserShareHour 获取图文分享转发分时数据
  215. func (cube *DataCube) GetUserShareHour(s string, e string) (resUserShareHour ResUserShareHour, err error) {
  216. accessToken, err := cube.GetAccessToken()
  217. if err != nil {
  218. return
  219. }
  220. uri := fmt.Sprintf("%s?access_token=%s", getUserShareHour, accessToken)
  221. reqDate := &reqDate{
  222. BeginDate: s,
  223. EndDate: e,
  224. }
  225. response, err := util.PostJSON(uri, reqDate)
  226. if err != nil {
  227. return
  228. }
  229. err = util.DecodeWithError(response, &resUserShareHour, "GetUserShareHour")
  230. return
  231. }