github.com/chanxuehong/wechat@v0.0.0-20230222024006-36f0325263cd/mp/datacube/upstream_msg.go (about) 1 package datacube 2 3 import ( 4 "errors" 5 6 "github.com/chanxuehong/wechat/mp/core" 7 ) 8 9 // 消息发送概况数据 10 type UpstreamMsgData struct { 11 RefDate string `json:"ref_date"` // 数据的日期, YYYY-MM-DD 格式 12 UserSource int `json:"user_source"` // 返回的 json 有这个字段, 文档中没有, 都是 0 值, 可能没有实际意义!!! 13 14 // 消息类型, 代表含义如下: 15 // 1代表文字 16 // 2代表图片 17 // 3代表语音 18 // 4代表视频 19 // 6代表第三方应用消息(链接消息) 20 MsgType int `json:"msg_type"` 21 MsgUser int `json:"msg_user"` // 上行发送了(向公众号发送了)消息的用户数 22 MsgCount int `json:"msg_count"` // 上行发送了消息的消息总数 23 } 24 25 // 获取消息发送概况数据. 26 func GetUpstreamMsg(clt *core.Client, req *Request) (list []UpstreamMsgData, err error) { 27 if req == nil { 28 err = errors.New("nil Request") 29 return 30 } 31 32 var result struct { 33 core.Error 34 List []UpstreamMsgData `json:"list"` 35 } 36 37 incompleteURL := "https://api.weixin.qq.com/datacube/getupstreammsg?access_token=" 38 if err = clt.PostJSON(incompleteURL, req, &result); err != nil { 39 return 40 } 41 42 if result.ErrCode != core.ErrCodeOK { 43 err = &result.Error 44 return 45 } 46 list = result.List 47 return 48 } 49 50 // 消息分送分时数据 51 type UpstreamMsgHourData struct { 52 RefHour int `json:"ref_hour"` // 数据的小时, 包括从000到2300, 分别代表的是[000,100)到[2300,2400), 即每日的第1小时和最后1小时 53 UpstreamMsgData 54 } 55 56 // 获取消息分送分时数据. 57 func GetUpstreamMsgHour(clt *core.Client, req *Request) (list []UpstreamMsgHourData, err error) { 58 if req == nil { 59 err = errors.New("nil Request") 60 return 61 } 62 63 var result struct { 64 core.Error 65 List []UpstreamMsgHourData `json:"list"` 66 } 67 68 incompleteURL := "https://api.weixin.qq.com/datacube/getupstreammsghour?access_token=" 69 if err = clt.PostJSON(incompleteURL, req, &result); err != nil { 70 return 71 } 72 73 if result.ErrCode != core.ErrCodeOK { 74 err = &result.Error 75 return 76 } 77 list = result.List 78 return 79 } 80 81 // 消息发送周数据 82 type UpstreamMsgWeekData UpstreamMsgData 83 84 // 获取消息发送周数据. 85 func GetUpstreamMsgWeek(clt *core.Client, req *Request) (list []UpstreamMsgWeekData, err error) { 86 if req == nil { 87 err = errors.New("nil Request") 88 return 89 } 90 91 var result struct { 92 core.Error 93 List []UpstreamMsgWeekData `json:"list"` 94 } 95 96 incompleteURL := "https://api.weixin.qq.com/datacube/getupstreammsgweek?access_token=" 97 if err = clt.PostJSON(incompleteURL, req, &result); err != nil { 98 return 99 } 100 101 if result.ErrCode != core.ErrCodeOK { 102 err = &result.Error 103 return 104 } 105 list = result.List 106 return 107 } 108 109 // 消息发送月数据 110 type UpstreamMsgMonthData UpstreamMsgData 111 112 // 获取消息发送月数据. 113 func GetUpstreamMsgMonth(clt *core.Client, req *Request) (list []UpstreamMsgMonthData, err error) { 114 if req == nil { 115 err = errors.New("nil Request") 116 return 117 } 118 119 var result struct { 120 core.Error 121 List []UpstreamMsgMonthData `json:"list"` 122 } 123 124 incompleteURL := "https://api.weixin.qq.com/datacube/getupstreammsgmonth?access_token=" 125 if err = clt.PostJSON(incompleteURL, req, &result); err != nil { 126 return 127 } 128 129 if result.ErrCode != core.ErrCodeOK { 130 err = &result.Error 131 return 132 } 133 list = result.List 134 return 135 } 136 137 // 消息发送分布数据 138 type UpstreamMsgDistData struct { 139 RefDate string `json:"ref_date"` // 数据的日期, YYYY-MM-DD 格式 140 UserSource int `json:"user_source"` // 返回的 json 有这个字段, 文档中没有, 都是 0 值, 可能没有实际意义!!! 141 CountInterval int `json:"count_interval"` // 当日发送消息量分布的区间, 0代表 "0", 1代表"1-5", 2代表"6-10", 3代表"10次以上" 142 MsgUser int `json:"msg_user"` // 上行发送了(向公众号发送了)消息的用户数 143 } 144 145 // 获取消息发送分布数据. 146 func GetUpstreamMsgDist(clt *core.Client, req *Request) (list []UpstreamMsgDistData, err error) { 147 if req == nil { 148 err = errors.New("nil Request") 149 return 150 } 151 152 var result struct { 153 core.Error 154 List []UpstreamMsgDistData `json:"list"` 155 } 156 157 incompleteURL := "https://api.weixin.qq.com/datacube/getupstreammsgdist?access_token=" 158 if err = clt.PostJSON(incompleteURL, req, &result); err != nil { 159 return 160 } 161 162 if result.ErrCode != core.ErrCodeOK { 163 err = &result.Error 164 return 165 } 166 list = result.List 167 return 168 } 169 170 // 消息发送分布周数据 171 type UpstreamMsgDistWeekData UpstreamMsgDistData 172 173 // 获取消息发送分布周数据. 174 func GetUpstreamMsgDistWeek(clt *core.Client, req *Request) (list []UpstreamMsgDistWeekData, err error) { 175 if req == nil { 176 err = errors.New("nil Request") 177 return 178 } 179 180 var result struct { 181 core.Error 182 List []UpstreamMsgDistWeekData `json:"list"` 183 } 184 185 incompleteURL := "https://api.weixin.qq.com/datacube/getupstreammsgdistweek?access_token=" 186 if err = clt.PostJSON(incompleteURL, req, &result); err != nil { 187 return 188 } 189 190 if result.ErrCode != core.ErrCodeOK { 191 err = &result.Error 192 return 193 } 194 list = result.List 195 return 196 } 197 198 // 消息发送分布月数据 199 type UpstreamMsgDistMonthData UpstreamMsgDistData 200 201 // 获取消息发送分布月数据. 202 func GetUpstreamMsgDistMonth(clt *core.Client, req *Request) (list []UpstreamMsgDistMonthData, err error) { 203 if req == nil { 204 err = errors.New("nil Request") 205 return 206 } 207 208 var result struct { 209 core.Error 210 List []UpstreamMsgDistMonthData `json:"list"` 211 } 212 213 incompleteURL := "https://api.weixin.qq.com/datacube/getupstreammsgdistmonth?access_token=" 214 if err = clt.PostJSON(incompleteURL, req, &result); err != nil { 215 return 216 } 217 218 if result.ErrCode != core.ErrCodeOK { 219 err = &result.Error 220 return 221 } 222 list = result.List 223 return 224 }