| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456 |
- package operation
- import (
- "fmt"
- "github.com/silenceper/wechat/v2/miniprogram/context"
- "github.com/silenceper/wechat/v2/util"
- )
- const (
- // getDomainInfoURL 查询域名配置
- getDomainInfoURL = "https://api.weixin.qq.com/wxa/getwxadevinfo?access_token=%s"
- // getPerformanceURL 获取性能数据
- getPerformanceURL = "https://api.weixin.qq.com/wxaapi/log/get_performance?access_token=%s"
- // getSceneListURL 获取访问来源
- getSceneListURL = "https://api.weixin.qq.com/wxaapi/log/get_scene?access_token=%s"
- // getVersionListURL 获取客户端版本
- getVersionListURL = "https://api.weixin.qq.com/wxaapi/log/get_client_version?access_token=%s"
- // realTimeLogSearchURL 查询实时日志
- realTimeLogSearchURL = "https://api.weixin.qq.com/wxaapi/userlog/userlog_search?%s"
- // getFeedbackListURL 获取用户反馈列表
- getFeedbackListURL = "https://api.weixin.qq.com/wxaapi/feedback/list?%s"
- // getJsErrDetailURL 查询js错误详情
- getJsErrDetailURL = "https://api.weixin.qq.com/wxaapi/log/jserr_detail?access_token=%s"
- // getJsErrListURL 查询错误列表
- getJsErrListURL = "https://api.weixin.qq.com/wxaapi/log/jserr_list?access_token=%s"
- // getGrayReleasePlanURL 获取分阶段发布详情
- getGrayReleasePlanURL = "https://api.weixin.qq.com/wxa/getgrayreleaseplan?access_token=%s"
- )
- // Operation 运维中心
- type Operation struct {
- *context.Context
- }
- // NewOperation 实例化
- func NewOperation(ctx *context.Context) *Operation {
- return &Operation{ctx}
- }
- // GetDomainInfoRequest 查询域名配置请求
- type GetDomainInfoRequest struct {
- Action string `json:"action"`
- }
- // GetDomainInfoResponse 查询域名配置响应
- type GetDomainInfoResponse struct {
- util.CommonError
- RequestDomain []string `json:"requestdomain"`
- WsRequestDomain []string `json:"wsrequestdomain"`
- UploadDomain []string `json:"uploaddomain"`
- DownloadDomain []string `json:"downloaddomain"`
- UDPDomain []string `json:"udpdomain"`
- BizDomain []string `json:"bizdomain"`
- }
- // GetDomainInfo 查询域名配置
- // see https://developers.weixin.qq.com/miniprogram/dev/OpenApiDoc/operation/getDomainInfo.html
- func (o *Operation) GetDomainInfo(req *GetDomainInfoRequest) (res GetDomainInfoResponse, err error) {
- var accessToken string
- if accessToken, err = o.GetAccessToken(); err != nil {
- return
- }
- var response []byte
- if response, err = util.PostJSON(fmt.Sprintf(getDomainInfoURL, accessToken), req); err != nil {
- return
- }
- err = util.DecodeWithError(response, &res, "GetDomainInfo")
- return
- }
- // GetPerformanceRequest 获取性能数据请求
- type GetPerformanceRequest struct {
- CostTimeType int64 `json:"cost_time_type"`
- DefaultStartTime int64 `json:"default_start_time"`
- DefaultEndTime int64 `json:"default_end_time"`
- Device string `json:"device"`
- IsDownloadCode string `json:"is_download_code"`
- Scene string `json:"scene"`
- NetworkType string `json:"networktype"`
- }
- // GetPerformanceResponse 获取性能数据响应
- type GetPerformanceResponse struct {
- util.CommonError
- DefaultTimeData string `json:"default_time_data"`
- CompareTimeData string `json:"compare_time_data"`
- }
- // PerformanceDefaultTimeData 查询数据
- type PerformanceDefaultTimeData struct {
- List []DefaultTimeDataItem `json:"list"`
- }
- // DefaultTimeDataItem 查询数据
- type DefaultTimeDataItem struct {
- RefData string `json:"ref_data"`
- CostTimeType int64 `json:"cost_time_type"`
- CostTime int64 `json:"cost_time"`
- }
- // GetPerformance 获取性能数据
- // see https://developers.weixin.qq.com/miniprogram/dev/OpenApiDoc/operation/getPerformance.html
- func (o *Operation) GetPerformance(req *GetPerformanceRequest) (res GetPerformanceResponse, err error) {
- var accessToken string
- if accessToken, err = o.GetAccessToken(); err != nil {
- return
- }
- var response []byte
- if response, err = util.PostJSON(fmt.Sprintf(getPerformanceURL, accessToken), req); err != nil {
- return
- }
- err = util.DecodeWithError(response, &res, "GetPerformance")
- return
- }
- // GetSceneListResponse 获取访问来源响应
- type GetSceneListResponse struct {
- util.CommonError
- Scene []Scene `json:"scene"`
- }
- // Scene 访问来源
- type Scene struct {
- Name string `json:"name"`
- Value string `json:"value"`
- }
- // GetSceneList 获取访问来源
- // see https://developers.weixin.qq.com/miniprogram/dev/OpenApiDoc/operation/getSceneList.html
- func (o *Operation) GetSceneList() (res GetSceneListResponse, err error) {
- var accessToken string
- if accessToken, err = o.GetAccessToken(); err != nil {
- return
- }
- var response []byte
- if response, err = util.HTTPGet(fmt.Sprintf(getSceneListURL, accessToken)); err != nil {
- return
- }
- err = util.DecodeWithError(response, &res, "GetSceneList")
- return
- }
- // GetVersionListResponse 获取客户端版本响应
- type GetVersionListResponse struct {
- util.CommonError
- CvList []ClientVersion `json:"cvlist"`
- }
- // ClientVersion 客户端版本
- type ClientVersion struct {
- Type int64 `json:"type"`
- ClientVersionList []string `json:"client_version_list"`
- }
- // GetVersionList 获取客户端版本
- // see https://developers.weixin.qq.com/miniprogram/dev/OpenApiDoc/operation/getVersionList.html
- func (o *Operation) GetVersionList() (res GetVersionListResponse, err error) {
- var accessToken string
- if accessToken, err = o.GetAccessToken(); err != nil {
- return
- }
- var response []byte
- if response, err = util.HTTPGet(fmt.Sprintf(getVersionListURL, accessToken)); err != nil {
- return
- }
- err = util.DecodeWithError(response, &res, "GetVersionList")
- return
- }
- // RealTimeLogSearchRequest 查询实时日志请求
- type RealTimeLogSearchRequest struct {
- Date string
- BeginTime int64
- EndTime int64
- Start int64
- Limit int64
- Level int64
- TraceID string
- URL string
- ID string
- FilterMsg string
- }
- // RealTimeLogSearchResponse 查询实时日志响应
- type RealTimeLogSearchResponse struct {
- util.CommonError
- Data RealTimeLogSearchData `json:"data"`
- }
- // RealTimeLogSearchData 日志数据和日志条数总量
- type RealTimeLogSearchData struct {
- List []RealTimeLogSearchDataList `json:"list"`
- Total int64 `json:"total"`
- }
- // RealTimeLogSearchDataList 日志数据列表
- type RealTimeLogSearchDataList struct {
- Level int64 `json:"level"`
- LibraryVersion string `json:"libraryVersion"`
- ClientVersion string `json:"clientVersion"`
- ID string `json:"id"`
- Timestamp int64 `json:"timestamp"`
- Platform int64 `json:"platform"`
- URL string `json:"url"`
- TraceID string `json:"traceid"`
- FilterMsg string `json:"filterMsg"`
- Msg []RealTimeLogSearchDataListMsg `json:"msg"`
- }
- // RealTimeLogSearchDataListMsg 日志内容数组
- type RealTimeLogSearchDataListMsg struct {
- Time int64 `json:"time"`
- Level int64 `json:"level"`
- Msg []string `json:"msg"`
- }
- // RealTimeLogSearch 查询实时日志
- // see https://developers.weixin.qq.com/miniprogram/dev/OpenApiDoc/operation/realtimelogSearch.html
- func (o *Operation) RealTimeLogSearch(req *RealTimeLogSearchRequest) (res RealTimeLogSearchResponse, err error) {
- var accessToken string
- if accessToken, err = o.GetAccessToken(); err != nil {
- return
- }
- params := map[string]interface{}{
- "access_token": accessToken,
- "date": req.Date,
- "begintime": req.BeginTime,
- "endtime": req.EndTime,
- }
- if req.Start > 0 {
- params["start"] = req.Start
- }
- if req.Limit > 0 {
- params["limit"] = req.Limit
- }
- if req.TraceID != "" {
- params["traceId"] = req.TraceID
- }
- if req.URL != "" {
- params["url"] = req.URL
- }
- if req.ID != "" {
- params["id"] = req.ID
- }
- if req.FilterMsg != "" {
- params["filterMsg"] = req.FilterMsg
- }
- if req.Level > 0 {
- params["level"] = req.Level
- }
- query := util.Query(params)
- var response []byte
- if response, err = util.HTTPGet(fmt.Sprintf(realTimeLogSearchURL, query)); err != nil {
- return
- }
- err = util.DecodeWithError(response, &res, "RealTimeLogSearch")
- return
- }
- // GetFeedbackListRequest 获取用户反馈列表请求
- type GetFeedbackListRequest struct {
- Page int64
- Num int64
- Type int64
- }
- // GetFeedbackListResponse 获取用户反馈列表响应
- type GetFeedbackListResponse struct {
- util.CommonError
- TotalNum int64 `json:"total_num"`
- List []Feedback `json:"list"`
- }
- // Feedback 反馈列表
- type Feedback struct {
- RecordID int64 `json:"record_id"`
- CreateTime int64 `json:"create_time"`
- Content string `json:"content"`
- Phone string `json:"phone"`
- OpenID string `json:"openid"`
- Nickname string `json:"nickname"`
- HeadURL string `json:"head_url"`
- Type int64 `json:"type"`
- MediaIDS []string `json:"mediaIds"`
- SystemInfo string `json:"systemInfo"`
- }
- // GetFeedbackList 获取用户反馈列表
- // see https://developers.weixin.qq.com/miniprogram/dev/OpenApiDoc/operation/getFeedback.html
- func (o *Operation) GetFeedbackList(req *GetFeedbackListRequest) (res GetFeedbackListResponse, err error) {
- var accessToken string
- if accessToken, err = o.GetAccessToken(); err != nil {
- return
- }
- params := map[string]interface{}{
- "access_token": accessToken,
- "page": req.Page,
- "num": req.Num,
- }
- if req.Type > 0 {
- params["type"] = req.Type
- }
- query := util.Query(params)
- var response []byte
- if response, err = util.HTTPGet(fmt.Sprintf(getFeedbackListURL, query)); err != nil {
- return
- }
- err = util.DecodeWithError(response, &res, "GetFeedbackList")
- return
- }
- // GetJsErrDetailRequest 查询js错误详情请求
- type GetJsErrDetailRequest struct {
- StartTime string `json:"startTime"`
- EndTime string `json:"endTime"`
- ErrorMsgMd5 string `json:"errorMsgMd5"`
- ErrorStackMd5 string `json:"errorStackMd5"`
- AppVersion string `json:"appVersion"`
- SdkVersion string `json:"sdkVersion"`
- OsName string `json:"osName"`
- ClientVersion string `json:"clientVersion"`
- OpenID string `json:"openid"`
- Offset int64 `json:"offset"`
- Limit int64 `json:"limit"`
- Desc string `json:"desc"`
- }
- // GetJsErrDetailResponse 查询js错误详情响应
- type GetJsErrDetailResponse struct {
- util.CommonError
- TotalCount int64 `json:"totalCount"`
- OpenID string `json:"openid"`
- Data []JsErrDetailData `json:"data"`
- }
- // JsErrDetailData 错误列表
- type JsErrDetailData struct {
- Count string `json:"Count"`
- SdkVersion string `json:"sdkVersion"`
- ClientVersion string `json:"ClientVersion"`
- ErrorStackMd5 string `json:"errorStackMd5"`
- TimeStamp string `json:"TimeStamp"`
- AppVersion string `json:"appVersion"`
- ErrorMsgMd5 string `json:"errorMsgMd5"`
- ErrorMsg string `json:"errorMsg"`
- ErrorStack string `json:"errorStack"`
- Ds string `json:"Ds"`
- OsName string `json:"OsName"`
- OpenID string `json:"openId"`
- PluginVersion string `json:"pluginversion"`
- AppID string `json:"appId"`
- DeviceModel string `json:"DeviceModel"`
- Source string `json:"source"`
- Route string `json:"route"`
- Uin string `json:"Uin"`
- Nickname string `json:"nickname"`
- }
- // GetJsErrDetail 查询js错误详情
- // see https://developers.weixin.qq.com/miniprogram/dev/OpenApiDoc/operation/getJsErrDetail.html
- func (o *Operation) GetJsErrDetail(req *GetJsErrDetailRequest) (res GetJsErrDetailResponse, err error) {
- var accessToken string
- if accessToken, err = o.GetAccessToken(); err != nil {
- return
- }
- var response []byte
- if response, err = util.PostJSON(fmt.Sprintf(getJsErrDetailURL, accessToken), req); err != nil {
- return
- }
- err = util.DecodeWithError(response, &res, "GetJsErrDetail")
- return
- }
- // GetJsErrListRequest 查询错误列表请求
- type GetJsErrListRequest struct {
- AppVersion string `json:"appVersion"`
- ErrType string `json:"errType"`
- StartTime string `json:"startTime"`
- EndTime string `json:"endTime"`
- Keyword string `json:"keyword"`
- OpenID string `json:"openid"`
- OrderBy string `json:"orderby"`
- Desc string `json:"desc"`
- Offset int64 `json:"offset"`
- Limit int64 `json:"limit"`
- }
- // GetJsErrListResponse 查询错误列表响应
- type GetJsErrListResponse struct {
- util.CommonError
- TotalCount int64 `json:"totalCount"`
- OpenID string `json:"openid"`
- Data []JsErrListData `json:"data"`
- }
- // JsErrListData 错误列表
- type JsErrListData struct {
- ErrorMsgMd5 string `json:"errorMsgMd5"`
- ErrorMsg string `json:"errorMsg"`
- Uv int64 `json:"uv"`
- Pv int64 `json:"pv"`
- ErrorStackMd5 string `json:"errorStackMd5"`
- ErrorStack string `json:"errorStack"`
- PvPercent string `json:"pvPercent"`
- UvPercent string `json:"uvPercent"`
- }
- // GetJsErrList 查询错误列表
- // see https://developers.weixin.qq.com/miniprogram/dev/OpenApiDoc/operation/getJsErrList.html
- func (o *Operation) GetJsErrList(req *GetJsErrListRequest) (res GetJsErrListResponse, err error) {
- var accessToken string
- if accessToken, err = o.GetAccessToken(); err != nil {
- return
- }
- var response []byte
- if response, err = util.PostJSON(fmt.Sprintf(getJsErrListURL, accessToken), req); err != nil {
- return
- }
- err = util.DecodeWithError(response, &res, "GetJsErrList")
- return
- }
- // GetGrayReleasePlanResponse 获取分阶段发布详情响应
- type GetGrayReleasePlanResponse struct {
- util.CommonError
- GrayReleasePlan GrayReleasePlanDetail `json:"gray_release_plan"`
- }
- // GrayReleasePlanDetail 分阶段发布计划详情
- type GrayReleasePlanDetail struct {
- Status int64 `json:"status"`
- CreateTimestamp int64 `json:"create_timestamp"`
- GrayPercentage int64 `json:"gray_percentage"`
- SupportExperiencerFirst bool `json:"support_experiencer_first"`
- SupportDebugerFirst bool `json:"support_debuger_first"`
- }
- // GetGrayReleasePlan 获取分阶段发布详情
- // see https://developers.weixin.qq.com/miniprogram/dev/OpenApiDoc/operation/getGrayReleasePlan.html
- func (o *Operation) GetGrayReleasePlan() (res GetGrayReleasePlanResponse, err error) {
- var accessToken string
- if accessToken, err = o.GetAccessToken(); err != nil {
- return
- }
- var response []byte
- if response, err = util.HTTPGet(fmt.Sprintf(getGrayReleasePlanURL, accessToken)); err != nil {
- return
- }
- err = util.DecodeWithError(response, &res, "GetGrayReleasePlan")
- return
- }
|