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  }