github.com/chanxuehong/wechat@v0.0.0-20230222024006-36f0325263cd/mp/datacube/interface.go (about)

     1  package datacube
     2  
     3  import (
     4  	"errors"
     5  
     6  	"github.com/chanxuehong/wechat/mp/core"
     7  )
     8  
     9  // 接口分析数据
    10  type InterfaceSummaryData struct {
    11  	RefDate       string `json:"ref_date"`        // 数据的日期, YYYY-MM-DD 格式
    12  	CallbackCount int    `json:"callback_count"`  // 通过服务器配置地址获得消息后, 被动回复用户消息的次数
    13  	FailCount     int    `json:"fail_count"`      // 上述动作的失败次数
    14  	TotalTimeCost int64  `json:"total_time_cost"` // 总耗时, 除以callback_count即为平均耗时
    15  	MaxTimeCost   int64  `json:"max_time_cost"`   // 最大耗时
    16  }
    17  
    18  // 获取接口分析数据.
    19  func GetInterfaceSummary(clt *core.Client, req *Request) (list []InterfaceSummaryData, err error) {
    20  	if req == nil {
    21  		err = errors.New("nil Request")
    22  		return
    23  	}
    24  
    25  	var result struct {
    26  		core.Error
    27  		List []InterfaceSummaryData `json:"list"`
    28  	}
    29  
    30  	incompleteURL := "https://api.weixin.qq.com/datacube/getinterfacesummary?access_token="
    31  	if err = clt.PostJSON(incompleteURL, req, &result); err != nil {
    32  		return
    33  	}
    34  
    35  	if result.ErrCode != core.ErrCodeOK {
    36  		err = &result.Error
    37  		return
    38  	}
    39  	list = result.List
    40  	return
    41  }
    42  
    43  type InterfaceSummaryHourData struct {
    44  	RefHour int `json:"ref_hour"` // 数据的小时, 包括从000到2300, 分别代表的是[000,100)到[2300,2400), 即每日的第1小时和最后1小时
    45  	InterfaceSummaryData
    46  }
    47  
    48  // 获取接口分析分时数据.
    49  func GetInterfaceSummaryHour(clt *core.Client, req *Request) (list []InterfaceSummaryHourData, err error) {
    50  	if req == nil {
    51  		err = errors.New("nil Request")
    52  		return
    53  	}
    54  
    55  	var result struct {
    56  		core.Error
    57  		List []InterfaceSummaryHourData `json:"list"`
    58  	}
    59  
    60  	incompleteURL := "https://api.weixin.qq.com/datacube/getinterfacesummaryhour?access_token="
    61  	if err = clt.PostJSON(incompleteURL, req, &result); err != nil {
    62  		return
    63  	}
    64  
    65  	if result.ErrCode != core.ErrCodeOK {
    66  		err = &result.Error
    67  		return
    68  	}
    69  	list = result.List
    70  	return
    71  }