package weapp const ( apiGetMonthlyRetain = "/datacube/getweanalysisappidmonthlyretaininfo" apiGetWeeklyRetain = "/datacube/getweanalysisappidweeklyretaininfo" apiGetDailyRetain = "/datacube/getweanalysisappiddailyretaininfo" ) // Retain 用户留存 type Retain struct { Key uint8 `json:"key"` // 标识,0开始,表示当月,1表示1月后。key取值分别是:0,1 Value uint `json:"value"` // key对应日期的新增用户数/活跃用户数(key=0时)或留存用户数(k>0时) } // RetainResponse 生物认证秘钥签名验证请求返回数据 type RetainResponse struct { CommonError RefDate string `json:"ref_date"` // 时间,月格式为 yyyymm | 周格式为 yyyymmdd-yyyymmdd | 天格式为 yyyymmdd VisitUV []Retain `json:"visit_uv"` // 活跃用户留存 VisitUVNew []Retain `json:"visit_uv_new"` // 新增用户留存 } // GetMonthlyRetain 获取用户访问小程序月留存 // accessToken 接口调用凭证 // begin 开始日期,为自然月第一天。格式为 yyyymmdd // end 结束日期,为自然月最后一天,限定查询一个月数据。格式为 yyyymmdd func GetMonthlyRetain(accessToken, begin, end string) (*RetainResponse, error) { api := baseURL + apiGetMonthlyRetain return getRetain(accessToken, begin, end, api) } // GetWeeklyRetain 获取用户访问小程序周留存 // accessToken 接口调用凭证 // begin 开始日期,为自然月第一天。格式为 yyyymmdd // end 结束日期,为周日日期,限定查询一周数据。格式为 yyyymmdd func GetWeeklyRetain(accessToken, begin, end string) (*RetainResponse, error) { api := baseURL + apiGetWeeklyRetain return getRetain(accessToken, begin, end, api) } // GetDailyRetain 获取用户访问小程序日留存 // accessToken 接口调用凭证 // begin 开始日期,为自然月第一天。格式为 yyyymmdd // end 结束日期,限定查询1天数据,允许设置的最大值为昨日。格式为 yyyymmdd func GetDailyRetain(accessToken, begin, end string) (*RetainResponse, error) { api := baseURL + apiGetDailyRetain return getRetain(accessToken, begin, end, api) } func getRetain(accessToken, begin, end, api string) (*RetainResponse, error) { url, err := tokenAPI(api, accessToken) if err != nil { return nil, err } params := dateRange{ BeginDate: begin, EndDate: end, } res := new(RetainResponse) if err := postJSON(url, params, res); err != nil { return nil, err } return res, nil }