| @@ -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 | |||
| } | |||
| } | |||
| @@ -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:"-"` | |||
| @@ -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) { | |||