1
0
mirror of https://github.com/silenceper/wechat.git synced 2026-02-04 12:52:27 +08:00
Files
wechat/officialaccount/datacube/message.go
Liangwt fe31f04640 增加微信公众号数据统计功能 (#279)
* * fix: 移除代码中的Println

* 增加公众号数据统计

* fix code style
2020-06-14 23:18:09 +08:00

253 lines
6.4 KiB
Go

package datacube
import (
"fmt"
"github.com/silenceper/wechat/v2/util"
)
const (
getUpstreamMsg = "https://api.weixin.qq.com/datacube/getupstreammsg"
getUpstreamMsgHour = "https://api.weixin.qq.com/datacube/getupstreammsghour"
getUpstreamMsgWeek = "https://api.weixin.qq.com/datacube/getupstreammsgweek"
getUpstreamMsgMonth = "https://api.weixin.qq.com/datacube/getupstreammsgmonth"
getUpstreamMsgDist = "https://api.weixin.qq.com/datacube/getupstreammsgdist"
getUpstreamMsgDistWeek = "https://api.weixin.qq.com/datacube/getupstreammsgdistweek"
getUpstreamMsgDistMonth = "https://api.weixin.qq.com/datacube/getupstreammsgdistmonth"
)
//ResUpstreamMsg 获取消息发送概况数据响应
type ResUpstreamMsg struct {
util.CommonError
List []struct {
RefDate string `json:"ref_date"`
MsgType int `json:"msg_type"`
MsgUser int `json:"msg_user"`
MsgCount int `json:"msg_count"`
} `json:"list"`
}
//ResUpstreamMsgHour 获取消息分送分时数据响应
type ResUpstreamMsgHour struct {
util.CommonError
List []struct {
RefDate string `json:"ref_date"`
RefHour int `json:"ref_hour"`
MsgType int `json:"msg_type"`
MsgUser int `json:"msg_user"`
MsgCount int `json:"msg_count"`
} `json:"list"`
}
//ResUpstreamMsgWeek 获取消息发送周数据响应
type ResUpstreamMsgWeek struct {
util.CommonError
List []struct {
RefDate string `json:"ref_date"`
MsgType int `json:"msg_type"`
MsgUser int `json:"msg_user"`
MsgCount int `json:"msg_count"`
} `json:"list"`
}
//ResUpstreamMsgMonth 获取消息发送月数据响应
type ResUpstreamMsgMonth struct {
util.CommonError
List []struct {
RefDate string `json:"ref_date"`
MsgType int `json:"msg_type"`
MsgUser int `json:"msg_user"`
MsgCount int `json:"msg_count"`
} `json:"list"`
}
//ResUpstreamMsgDist 获取消息发送分布数据响应
type ResUpstreamMsgDist struct {
util.CommonError
List []struct {
RefDate string `json:"ref_date"`
CountInterval int `json:"count_interval"`
MsgUser int `json:"msg_user"`
} `json:"list"`
}
//ResUpstreamMsgDistWeek 获取消息发送分布周数据响应
type ResUpstreamMsgDistWeek struct {
util.CommonError
List []struct {
RefDate string `json:"ref_date"`
CountInterval int `json:"count_interval"`
MsgUser int `json:"msg_user"`
} `json:"list"`
}
//ResUpstreamMsgDistMonth 获取消息发送分布月数据响应
type ResUpstreamMsgDistMonth struct {
util.CommonError
List []struct {
RefDate string `json:"ref_date"`
CountInterval int `json:"count_interval"`
MsgUser int `json:"msg_user"`
} `json:"list"`
}
//GetUpstreamMsg 获取消息发送概况数据
func (cube *DataCube) GetUpstreamMsg(s string, e string) (resUpstreamMsg ResUpstreamMsg, err error) {
accessToken, err := cube.GetAccessToken()
if err != nil {
return
}
uri := fmt.Sprintf("%s?access_token=%s", getUpstreamMsg, accessToken)
reqDate := &reqDate{
BeginDate: s,
EndDate: e,
}
response, err := util.PostJSON(uri, reqDate)
if err != nil {
return
}
err = util.DecodeWithError(response, &resUpstreamMsg, "GetUpstreamMsg")
return
}
//GetUpstreamMsgHour 获取消息分送分时数据
func (cube *DataCube) GetUpstreamMsgHour(s string, e string) (resUpstreamMsgHour ResUpstreamMsgHour, err error) {
accessToken, err := cube.GetAccessToken()
if err != nil {
return
}
uri := fmt.Sprintf("%s?access_token=%s", getUpstreamMsgHour, accessToken)
reqDate := &reqDate{
BeginDate: s,
EndDate: e,
}
response, err := util.PostJSON(uri, reqDate)
if err != nil {
return
}
err = util.DecodeWithError(response, &resUpstreamMsgHour, "GetUpstreamMsgHour")
return
}
//GetUpstreamMsgWeek 获取消息发送周数据
func (cube *DataCube) GetUpstreamMsgWeek(s string, e string) (resUpstreamMsgWeek ResUpstreamMsgWeek, err error) {
accessToken, err := cube.GetAccessToken()
if err != nil {
return
}
uri := fmt.Sprintf("%s?access_token=%s", getUpstreamMsgWeek, accessToken)
reqDate := &reqDate{
BeginDate: s,
EndDate: e,
}
response, err := util.PostJSON(uri, reqDate)
if err != nil {
return
}
err = util.DecodeWithError(response, &resUpstreamMsgWeek, "GetUpstreamMsgWeek")
return
}
//GetUpstreamMsgMonth 获取消息发送月数据
func (cube *DataCube) GetUpstreamMsgMonth(s string, e string) (resUpstreamMsgMonth ResUpstreamMsgMonth, err error) {
accessToken, err := cube.GetAccessToken()
if err != nil {
return
}
uri := fmt.Sprintf("%s?access_token=%s", getUpstreamMsgMonth, accessToken)
reqDate := &reqDate{
BeginDate: s,
EndDate: e,
}
response, err := util.PostJSON(uri, reqDate)
if err != nil {
return
}
err = util.DecodeWithError(response, &resUpstreamMsgMonth, "GetUpstreamMsgMonth")
return
}
//GetUpstreamMsgDist 获取消息发送分布数据
func (cube *DataCube) GetUpstreamMsgDist(s string, e string) (resUpstreamMsgDist ResUpstreamMsgDist, err error) {
accessToken, err := cube.GetAccessToken()
if err != nil {
return
}
uri := fmt.Sprintf("%s?access_token=%s", getUpstreamMsgDist, accessToken)
reqDate := &reqDate{
BeginDate: s,
EndDate: e,
}
response, err := util.PostJSON(uri, reqDate)
if err != nil {
return
}
err = util.DecodeWithError(response, &resUpstreamMsgDist, "GetUpstreamMsgDist")
return
}
//GetUpstreamMsgDistWeek 获取消息发送分布周数据
func (cube *DataCube) GetUpstreamMsgDistWeek(s string, e string) (resUpstreamMsgDistWeek ResUpstreamMsgDistWeek, err error) {
accessToken, err := cube.GetAccessToken()
if err != nil {
return
}
uri := fmt.Sprintf("%s?access_token=%s", getUpstreamMsgDistWeek, accessToken)
reqDate := &reqDate{
BeginDate: s,
EndDate: e,
}
response, err := util.PostJSON(uri, reqDate)
if err != nil {
return
}
err = util.DecodeWithError(response, &resUpstreamMsgDistWeek, "GetUpstreamMsgDistWeek")
return
}
//GetUpstreamMsgDistMonth 获取消息发送分布月数据
func (cube *DataCube) GetUpstreamMsgDistMonth(s string, e string) (resUpstreamMsgDistMonth ResUpstreamMsgDistMonth, err error) {
accessToken, err := cube.GetAccessToken()
if err != nil {
return
}
uri := fmt.Sprintf("%s?access_token=%s", getUpstreamMsgDistMonth, accessToken)
reqDate := &reqDate{
BeginDate: s,
EndDate: e,
}
response, err := util.PostJSON(uri, reqDate)
if err != nil {
return
}
err = util.DecodeWithError(response, &resUpstreamMsgDistMonth, "GetUpstreamMsgDistMonth")
return
}