message.go 6.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253
  1. package datacube
  2. import (
  3. "fmt"
  4. "github.com/silenceper/wechat/v2/util"
  5. )
  6. const (
  7. getUpstreamMsg = "https://api.weixin.qq.com/datacube/getupstreammsg"
  8. getUpstreamMsgHour = "https://api.weixin.qq.com/datacube/getupstreammsghour"
  9. getUpstreamMsgWeek = "https://api.weixin.qq.com/datacube/getupstreammsgweek"
  10. getUpstreamMsgMonth = "https://api.weixin.qq.com/datacube/getupstreammsgmonth"
  11. getUpstreamMsgDist = "https://api.weixin.qq.com/datacube/getupstreammsgdist"
  12. getUpstreamMsgDistWeek = "https://api.weixin.qq.com/datacube/getupstreammsgdistweek"
  13. getUpstreamMsgDistMonth = "https://api.weixin.qq.com/datacube/getupstreammsgdistmonth"
  14. )
  15. // ResUpstreamMsg 获取消息发送概况数据响应
  16. type ResUpstreamMsg struct {
  17. util.CommonError
  18. List []struct {
  19. RefDate string `json:"ref_date"`
  20. MsgType int `json:"msg_type"`
  21. MsgUser int `json:"msg_user"`
  22. MsgCount int `json:"msg_count"`
  23. } `json:"list"`
  24. }
  25. // ResUpstreamMsgHour 获取消息分送分时数据响应
  26. type ResUpstreamMsgHour struct {
  27. util.CommonError
  28. List []struct {
  29. RefDate string `json:"ref_date"`
  30. RefHour int `json:"ref_hour"`
  31. MsgType int `json:"msg_type"`
  32. MsgUser int `json:"msg_user"`
  33. MsgCount int `json:"msg_count"`
  34. } `json:"list"`
  35. }
  36. // ResUpstreamMsgWeek 获取消息发送周数据响应
  37. type ResUpstreamMsgWeek struct {
  38. util.CommonError
  39. List []struct {
  40. RefDate string `json:"ref_date"`
  41. MsgType int `json:"msg_type"`
  42. MsgUser int `json:"msg_user"`
  43. MsgCount int `json:"msg_count"`
  44. } `json:"list"`
  45. }
  46. // ResUpstreamMsgMonth 获取消息发送月数据响应
  47. type ResUpstreamMsgMonth struct {
  48. util.CommonError
  49. List []struct {
  50. RefDate string `json:"ref_date"`
  51. MsgType int `json:"msg_type"`
  52. MsgUser int `json:"msg_user"`
  53. MsgCount int `json:"msg_count"`
  54. } `json:"list"`
  55. }
  56. // ResUpstreamMsgDist 获取消息发送分布数据响应
  57. type ResUpstreamMsgDist struct {
  58. util.CommonError
  59. List []struct {
  60. RefDate string `json:"ref_date"`
  61. CountInterval int `json:"count_interval"`
  62. MsgUser int `json:"msg_user"`
  63. } `json:"list"`
  64. }
  65. // ResUpstreamMsgDistWeek 获取消息发送分布周数据响应
  66. type ResUpstreamMsgDistWeek struct {
  67. util.CommonError
  68. List []struct {
  69. RefDate string `json:"ref_date"`
  70. CountInterval int `json:"count_interval"`
  71. MsgUser int `json:"msg_user"`
  72. } `json:"list"`
  73. }
  74. // ResUpstreamMsgDistMonth 获取消息发送分布月数据响应
  75. type ResUpstreamMsgDistMonth struct {
  76. util.CommonError
  77. List []struct {
  78. RefDate string `json:"ref_date"`
  79. CountInterval int `json:"count_interval"`
  80. MsgUser int `json:"msg_user"`
  81. } `json:"list"`
  82. }
  83. // GetUpstreamMsg 获取消息发送概况数据
  84. func (cube *DataCube) GetUpstreamMsg(s string, e string) (resUpstreamMsg ResUpstreamMsg, err error) {
  85. accessToken, err := cube.GetAccessToken()
  86. if err != nil {
  87. return
  88. }
  89. uri := fmt.Sprintf("%s?access_token=%s", getUpstreamMsg, accessToken)
  90. reqDate := &reqDate{
  91. BeginDate: s,
  92. EndDate: e,
  93. }
  94. response, err := util.PostJSON(uri, reqDate)
  95. if err != nil {
  96. return
  97. }
  98. err = util.DecodeWithError(response, &resUpstreamMsg, "GetUpstreamMsg")
  99. return
  100. }
  101. // GetUpstreamMsgHour 获取消息分送分时数据
  102. func (cube *DataCube) GetUpstreamMsgHour(s string, e string) (resUpstreamMsgHour ResUpstreamMsgHour, err error) {
  103. accessToken, err := cube.GetAccessToken()
  104. if err != nil {
  105. return
  106. }
  107. uri := fmt.Sprintf("%s?access_token=%s", getUpstreamMsgHour, accessToken)
  108. reqDate := &reqDate{
  109. BeginDate: s,
  110. EndDate: e,
  111. }
  112. response, err := util.PostJSON(uri, reqDate)
  113. if err != nil {
  114. return
  115. }
  116. err = util.DecodeWithError(response, &resUpstreamMsgHour, "GetUpstreamMsgHour")
  117. return
  118. }
  119. // GetUpstreamMsgWeek 获取消息发送周数据
  120. func (cube *DataCube) GetUpstreamMsgWeek(s string, e string) (resUpstreamMsgWeek ResUpstreamMsgWeek, err error) {
  121. accessToken, err := cube.GetAccessToken()
  122. if err != nil {
  123. return
  124. }
  125. uri := fmt.Sprintf("%s?access_token=%s", getUpstreamMsgWeek, accessToken)
  126. reqDate := &reqDate{
  127. BeginDate: s,
  128. EndDate: e,
  129. }
  130. response, err := util.PostJSON(uri, reqDate)
  131. if err != nil {
  132. return
  133. }
  134. err = util.DecodeWithError(response, &resUpstreamMsgWeek, "GetUpstreamMsgWeek")
  135. return
  136. }
  137. // GetUpstreamMsgMonth 获取消息发送月数据
  138. func (cube *DataCube) GetUpstreamMsgMonth(s string, e string) (resUpstreamMsgMonth ResUpstreamMsgMonth, err error) {
  139. accessToken, err := cube.GetAccessToken()
  140. if err != nil {
  141. return
  142. }
  143. uri := fmt.Sprintf("%s?access_token=%s", getUpstreamMsgMonth, accessToken)
  144. reqDate := &reqDate{
  145. BeginDate: s,
  146. EndDate: e,
  147. }
  148. response, err := util.PostJSON(uri, reqDate)
  149. if err != nil {
  150. return
  151. }
  152. err = util.DecodeWithError(response, &resUpstreamMsgMonth, "GetUpstreamMsgMonth")
  153. return
  154. }
  155. // GetUpstreamMsgDist 获取消息发送分布数据
  156. func (cube *DataCube) GetUpstreamMsgDist(s string, e string) (resUpstreamMsgDist ResUpstreamMsgDist, err error) {
  157. accessToken, err := cube.GetAccessToken()
  158. if err != nil {
  159. return
  160. }
  161. uri := fmt.Sprintf("%s?access_token=%s", getUpstreamMsgDist, accessToken)
  162. reqDate := &reqDate{
  163. BeginDate: s,
  164. EndDate: e,
  165. }
  166. response, err := util.PostJSON(uri, reqDate)
  167. if err != nil {
  168. return
  169. }
  170. err = util.DecodeWithError(response, &resUpstreamMsgDist, "GetUpstreamMsgDist")
  171. return
  172. }
  173. // GetUpstreamMsgDistWeek 获取消息发送分布周数据
  174. func (cube *DataCube) GetUpstreamMsgDistWeek(s string, e string) (resUpstreamMsgDistWeek ResUpstreamMsgDistWeek, err error) {
  175. accessToken, err := cube.GetAccessToken()
  176. if err != nil {
  177. return
  178. }
  179. uri := fmt.Sprintf("%s?access_token=%s", getUpstreamMsgDistWeek, accessToken)
  180. reqDate := &reqDate{
  181. BeginDate: s,
  182. EndDate: e,
  183. }
  184. response, err := util.PostJSON(uri, reqDate)
  185. if err != nil {
  186. return
  187. }
  188. err = util.DecodeWithError(response, &resUpstreamMsgDistWeek, "GetUpstreamMsgDistWeek")
  189. return
  190. }
  191. // GetUpstreamMsgDistMonth 获取消息发送分布月数据
  192. func (cube *DataCube) GetUpstreamMsgDistMonth(s string, e string) (resUpstreamMsgDistMonth ResUpstreamMsgDistMonth, err error) {
  193. accessToken, err := cube.GetAccessToken()
  194. if err != nil {
  195. return
  196. }
  197. uri := fmt.Sprintf("%s?access_token=%s", getUpstreamMsgDistMonth, accessToken)
  198. reqDate := &reqDate{
  199. BeginDate: s,
  200. EndDate: e,
  201. }
  202. response, err := util.PostJSON(uri, reqDate)
  203. if err != nil {
  204. return
  205. }
  206. err = util.DecodeWithError(response, &resUpstreamMsgDistMonth, "GetUpstreamMsgDistMonth")
  207. return
  208. }