diff --git a/models/user_business_analysis.go b/models/user_business_analysis.go index 384d0b85c..24cab2de9 100644 --- a/models/user_business_analysis.go +++ b/models/user_business_analysis.go @@ -243,12 +243,13 @@ func QueryMetricsPage(start int64, end int64, page int, pageSize int) ([]UserMet return nil, 0 } userMetricsList := make([]UserMetrics, 0) - if err := statictisSess.Table(new(UserMetrics)).Where(cond).Limit(pageSize, page*pageSize).OrderBy("count_date desc"). + //.Limit(pageSize, page*pageSize) + if err := statictisSess.Table(new(UserMetrics)).Where(cond).OrderBy("count_date desc"). Find(&userMetricsList); err != nil { return nil, 0 } + postDeal(userMetricsList) return userMetricsList, allCount - } func QueryMetrics(start int64, end int64) ([]UserMetrics, int) { @@ -259,11 +260,16 @@ func QueryMetrics(start int64, end int64) ([]UserMetrics, int) { Find(&userMetricsList); err != nil { return nil, 0 } + postDeal(userMetricsList) + return userMetricsList, len(userMetricsList) +} + +func postDeal(userMetricsList []UserMetrics) { for _, userMetrics := range userMetricsList { dateTime := time.Unix(userMetrics.CountDate, 0) userMetrics.DisplayDate = dateTime.Format("2006-01-02") + userMetrics.TotalRegistUser = userMetrics.ActivateRegistUser + userMetrics.NotActivateRegistUser } - return userMetricsList, len(userMetricsList) } func QueryMetricsForAll() []UserMetrics { @@ -302,6 +308,7 @@ func makeResultForMonth(allUserInfo []UserMetrics, count int) []UserMetrics { monthUserMetrics.TotalHasActivityUser = userMetrics.TotalHasActivityUser monthUserMetrics.HasActivityUser = userMetrics.HasActivityUser monthUserMetrics.DaysForMonth = 1 + monthUserMetrics.TotalRegistUser = userMetrics.ActivateRegistUser + userMetrics.NotActivateRegistUser monthMap[month] = monthUserMetrics } else { value := monthMap[month] @@ -311,6 +318,7 @@ func makeResultForMonth(allUserInfo []UserMetrics, count int) []UserMetrics { value.TotalActivateRegistUser += userMetrics.TotalActivateRegistUser value.TotalHasActivityUser += userMetrics.TotalHasActivityUser value.HasActivityUser += userMetrics.HasActivityUser + value.TotalRegistUser += userMetrics.TotalRegistUser value.DaysForMonth += 1 } } diff --git a/models/user_business_struct.go b/models/user_business_struct.go index ad4ff0bdb..05d970eb7 100644 --- a/models/user_business_struct.go +++ b/models/user_business_struct.go @@ -407,6 +407,7 @@ type UserMetrics struct { RegistActivityUser int `xorm:"NOT NULL DEFAULT 0"` HasActivityUser int `xorm:"NOT NULL DEFAULT 0"` TotalUser int `xorm:"NOT NULL DEFAULT 0"` + TotalRegistUser int `xorm:"-"` TotalActivateRegistUser int `xorm:"NOT NULL DEFAULT 0"` TotalHasActivityUser int `xorm:"NOT NULL DEFAULT 0"` DisplayDate string `xorm:"-"` diff --git a/routers/repo/user_data_analysis.go b/routers/repo/user_data_analysis.go index 78c3ffec7..5af6df3bd 100755 --- a/routers/repo/user_data_analysis.go +++ b/routers/repo/user_data_analysis.go @@ -254,8 +254,6 @@ func queryUserDataPage(ctx *context.Context, tableName string, queryObj interfac func queryMetrics(ctx *context.Context, tableName string) { startDate := ctx.Query("startDate") endDate := ctx.Query("endDate") - startTime, _ := time.ParseInLocation("2006-01-02", startDate, time.Local) - endTime, _ := time.ParseInLocation("2006-01-02", endDate, time.Local) page := ctx.QueryInt("page") if page <= 0 { @@ -267,6 +265,19 @@ func queryMetrics(ctx *context.Context, tableName string) { } IsReturnFile := ctx.QueryBool("IsReturnFile") + var count int64 + result := make([]models.UserMetrics, 0) + if tableName == "public.user_business_analysis_current_year" { + result = models.QueryMetricsForYear() + count = int64(len(result)) + } else if tableName == "public.user_business_analysis_all" { + result = models.QueryMetricsForAll() + count = int64(len(result)) + } else { + startTime, _ := time.ParseInLocation("2006-01-02", startDate, time.Local) + endTime, _ := time.ParseInLocation("2006-01-02", endDate, time.Local) + result, count = models.QueryMetricsPage(startTime.Unix(), endTime.Unix(), page, pageSize) + } if IsReturnFile { //writer exec file. xlsx := excelize.NewFile() @@ -278,10 +289,9 @@ func queryMetrics(ctx *context.Context, tableName string) { //设置单元格的值 xlsx.SetCellValue(sheetName, k, v) } - userMetricResult, count := models.QueryMetrics(startTime.Unix(), endTime.Unix()) row := 1 log.Info("return count=" + fmt.Sprint(count)) - for _, userRecord := range userMetricResult { + for _, userRecord := range result { row++ writeUserMetricsExcel(row, xlsx, sheetName, userRecord) } @@ -294,22 +304,12 @@ func queryMetrics(ctx *context.Context, tableName string) { log.Info("writer exel error." + err.Error()) } } else { - var count int64 - result := make([]models.UserMetrics, 0) - if tableName == "public.user_business_analysis_current_year" { - result = models.QueryMetricsForYear() - count = int64(len(result)) - } else if tableName == "public.user_business_analysis_all" { - result = models.QueryMetricsForAll() - count = int64(len(result)) - } else { - result, count = models.QueryMetricsPage(startTime.Unix(), endTime.Unix(), page, pageSize) - } mapInterface := make(map[string]interface{}) mapInterface["data"] = result mapInterface["count"] = count ctx.JSON(http.StatusOK, mapInterface) } + } func QueryRankingList(ctx *context.Context) {