forked from chanxuehong/wechat
-
Notifications
You must be signed in to change notification settings - Fork 1
/
retain.go
112 lines (104 loc) · 3.47 KB
/
retain.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
package analysis
import (
"github.com/charsunny/wechat/mp/core"
)
type VisitKV struct {
Key int `json:"key"`
Value int `json:"value"`
}
// 获取用户访问小程序日留存
// @param begin_date string 是 开始日期。格式为 yyyymmdd
// @param end_date string 是 开始日期。格式为 结束日期,限定查询1天数据
// @return visitUvNew Object 新增用户留存
// @return visitUv Object 新增用户留存
func GetDailyRetain(clt *core.Client, begin_date string, end_date string) (date string, visit_new []*VisitKV, visit_uv []*VisitKV, err error) {
const incompleteURL = "https://api.weixin.qq.com/datacube/getweanalysisappiddailyretaininfo?access_token="
var req = struct {
BeginDate string `json:"begin_date"`
EndDate string `json:"end_date"`
} {
BeginDate:begin_date,
EndDate:end_date,
}
var result struct {
core.Error
RefDate string `json:"ref_date"`
VisitUvNew []*VisitKV `json:"visit_uv_new"`
VisitUv []*VisitKV `json:"visit_uv"`
}
if err = clt.PostJSON(incompleteURL, &req, &result); err != nil {
return
}
if result.ErrCode != core.ErrCodeOK {
err = &result.Error
return
}
date = result.RefDate
visit_new = result.VisitUvNew
visit_uv = result.VisitUv
return
}
// 获取用户访问小程序周留存
// @param begin_date string 是 开始日期,为周一日期。格式为 yyyymmdd
// @param end_date string 是 开始日期。结束日期,为周日日期,限定查询一周数据。格式为 yyyymmdd
// @return visitUvNew Object 新增用户留存
// @return visitUv Object 新增用户留存
func GetWeeklyRetain(clt *core.Client, begin_date string, end_date string) (date string, visit_new []*VisitKV, visit_uv []*VisitKV, err error) {
const incompleteURL = "https://api.weixin.qq.com/datacube/getweanalysisappidweeklyretaininfo?access_token="
var req = struct {
BeginDate string `json:"begin_date"`
EndDate string `json:"end_date"`
} {
BeginDate:begin_date,
EndDate:end_date,
}
var result struct {
core.Error
RefDate string `json:"ref_date"`
VisitUvNew []*VisitKV `json:"visit_uv_new"`
VisitUv []*VisitKV `json:"visit_uv"`
}
if err = clt.PostJSON(incompleteURL, &req, &result); err != nil {
return
}
if result.ErrCode != core.ErrCodeOK {
err = &result.Error
return
}
date = result.RefDate
visit_new = result.VisitUvNew
visit_uv = result.VisitUv
return
}
// 获取用户访问小程序月留存
// @param begin_date string 是 开始日期,为自然月第一天。格式为 yyyymmdd
// @param end_date string 是 开始日期。结束日期,为自然月最后一天,限定查询一个月数据。格式为 yyyymmdd
// @return visitUvNew Object 新增用户留存
// @return visitUv Object 新增用户留存
func GetMonthlyRetain(clt *core.Client, begin_date string, end_date string) (date string, visit_new []*VisitKV, visit_uv []*VisitKV, err error) {
const incompleteURL = "https://api.weixin.qq.com/datacube/getweanalysisappidmonthlyretaininfo?access_token="
var req = struct {
BeginDate string `json:"begin_date"`
EndDate string `json:"end_date"`
} {
BeginDate:begin_date,
EndDate:end_date,
}
var result struct {
core.Error
RefDate string `json:"ref_date"`
VisitUvNew []*VisitKV `json:"visit_uv_new"`
VisitUv []*VisitKV `json:"visit_uv"`
}
if err = clt.PostJSON(incompleteURL, &req, &result); err != nil {
return
}
if result.ErrCode != core.ErrCodeOK {
err = &result.Error
return
}
date = result.RefDate
visit_new = result.VisitUvNew
visit_uv = result.VisitUv
return
}