附近小店
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 

68 lines
2.4 KiB

  1. package weapp
  2. const (
  3. apiGetMonthlyRetain = "/datacube/getweanalysisappidmonthlyretaininfo"
  4. apiGetWeeklyRetain = "/datacube/getweanalysisappidweeklyretaininfo"
  5. apiGetDailyRetain = "/datacube/getweanalysisappiddailyretaininfo"
  6. )
  7. // Retain 用户留存
  8. type Retain struct {
  9. Key uint8 `json:"key"` // 标识,0开始,表示当月,1表示1月后。key取值分别是:0,1
  10. Value uint `json:"value"` // key对应日期的新增用户数/活跃用户数(key=0时)或留存用户数(k>0时)
  11. }
  12. // RetainResponse 生物认证秘钥签名验证请求返回数据
  13. type RetainResponse struct {
  14. CommonError
  15. RefDate string `json:"ref_date"` // 时间,月格式为 yyyymm | 周格式为 yyyymmdd-yyyymmdd | 天格式为 yyyymmdd
  16. VisitUV []Retain `json:"visit_uv"` // 活跃用户留存
  17. VisitUVNew []Retain `json:"visit_uv_new"` // 新增用户留存
  18. }
  19. // GetMonthlyRetain 获取用户访问小程序月留存
  20. // accessToken 接口调用凭证
  21. // begin 开始日期,为自然月第一天。格式为 yyyymmdd
  22. // end 结束日期,为自然月最后一天,限定查询一个月数据。格式为 yyyymmdd
  23. func GetMonthlyRetain(accessToken, begin, end string) (*RetainResponse, error) {
  24. api := baseURL + apiGetMonthlyRetain
  25. return getRetain(accessToken, begin, end, api)
  26. }
  27. // GetWeeklyRetain 获取用户访问小程序周留存
  28. // accessToken 接口调用凭证
  29. // begin 开始日期,为自然月第一天。格式为 yyyymmdd
  30. // end 结束日期,为周日日期,限定查询一周数据。格式为 yyyymmdd
  31. func GetWeeklyRetain(accessToken, begin, end string) (*RetainResponse, error) {
  32. api := baseURL + apiGetWeeklyRetain
  33. return getRetain(accessToken, begin, end, api)
  34. }
  35. // GetDailyRetain 获取用户访问小程序日留存
  36. // accessToken 接口调用凭证
  37. // begin 开始日期,为自然月第一天。格式为 yyyymmdd
  38. // end 结束日期,限定查询1天数据,允许设置的最大值为昨日。格式为 yyyymmdd
  39. func GetDailyRetain(accessToken, begin, end string) (*RetainResponse, error) {
  40. api := baseURL + apiGetDailyRetain
  41. return getRetain(accessToken, begin, end, api)
  42. }
  43. func getRetain(accessToken, begin, end, api string) (*RetainResponse, error) {
  44. url, err := tokenAPI(api, accessToken)
  45. if err != nil {
  46. return nil, err
  47. }
  48. params := dateRange{
  49. BeginDate: begin,
  50. EndDate: end,
  51. }
  52. res := new(RetainResponse)
  53. if err := postJSON(url, params, res); err != nil {
  54. return nil, err
  55. }
  56. return res, nil
  57. }