|
|
|
@@ -21,51 +21,55 @@ const ( |
|
|
|
|
|
|
|
func getUserMetricsExcelHeader(ctx *context.Context) map[string]string { |
|
|
|
excelHeader := make([]string, 0) |
|
|
|
excelHeader = append(excelHeader, ctx.Tr("user.static.id")) |
|
|
|
excelHeader = append(excelHeader, ctx.Tr("user.static.name")) |
|
|
|
excelHeader = append(excelHeader, ctx.Tr("user.static.UserIndex")) |
|
|
|
excelHeader = append(excelHeader, ctx.Tr("user.static.UserIndexPrimitive")) |
|
|
|
excelHeader = append(excelHeader, ctx.Tr("user.static.codemergecount")) |
|
|
|
excelHeader = append(excelHeader, ctx.Tr("user.static.commitcount")) |
|
|
|
excelHeader = append(excelHeader, ctx.Tr("user.static.issuecount")) |
|
|
|
excelHeader = append(excelHeader, ctx.Tr("user.static.commentcount")) |
|
|
|
excelHeader = append(excelHeader, ctx.Tr("user.static.focusrepocount")) |
|
|
|
excelHeader = append(excelHeader, ctx.Tr("user.static.starrepocount")) |
|
|
|
excelHeader = append(excelHeader, ctx.Tr("user.static.logincount")) |
|
|
|
excelHeader = append(excelHeader, ctx.Tr("user.static.watchedcount")) |
|
|
|
excelHeader = append(excelHeader, ctx.Tr("user.static.commitcodesize")) |
|
|
|
excelHeader = append(excelHeader, ctx.Tr("user.static.solveissuecount")) |
|
|
|
excelHeader = append(excelHeader, ctx.Tr("user.static.encyclopediascount")) |
|
|
|
excelHeader = append(excelHeader, ctx.Tr("user.static.createrepocount")) |
|
|
|
excelHeader = append(excelHeader, ctx.Tr("user.static.openiindex")) |
|
|
|
excelHeader = append(excelHeader, ctx.Tr("user.static.CloudBrainTaskNum")) |
|
|
|
excelHeader = append(excelHeader, ctx.Tr("user.static.CloudBrainRunTime")) |
|
|
|
excelHeader = append(excelHeader, ctx.Tr("user.static.CommitDatasetNum")) |
|
|
|
excelHeader = append(excelHeader, ctx.Tr("user.static.CommitModelCount")) |
|
|
|
|
|
|
|
excelHeader = append(excelHeader, ctx.Tr("user.static.FocusOtherUser")) |
|
|
|
excelHeader = append(excelHeader, ctx.Tr("user.static.CollectDataset")) |
|
|
|
excelHeader = append(excelHeader, ctx.Tr("user.static.CollectedDataset")) |
|
|
|
excelHeader = append(excelHeader, ctx.Tr("user.static.RecommendDataset")) |
|
|
|
excelHeader = append(excelHeader, ctx.Tr("user.static.CollectImage")) |
|
|
|
excelHeader = append(excelHeader, ctx.Tr("user.static.CollectedImage")) |
|
|
|
excelHeader = append(excelHeader, ctx.Tr("user.static.RecommendImage")) |
|
|
|
|
|
|
|
excelHeader = append(excelHeader, ctx.Tr("user.static.registdate")) |
|
|
|
excelHeader = append(excelHeader, ctx.Tr("user.static.countdate")) |
|
|
|
excelHeader = append(excelHeader, ctx.Tr("user.metrics.date")) |
|
|
|
excelHeader = append(excelHeader, ctx.Tr("user.metrics.newregistuser")) |
|
|
|
excelHeader = append(excelHeader, ctx.Tr("user.metrics.newregistandactiveuser")) |
|
|
|
excelHeader = append(excelHeader, ctx.Tr("user.metrics.hasactivateuser")) |
|
|
|
excelHeader = append(excelHeader, ctx.Tr("user.metrics.newregistnotactiveuser")) |
|
|
|
excelHeader = append(excelHeader, ctx.Tr("user.metrics.averageuser")) |
|
|
|
excelHeader = append(excelHeader, ctx.Tr("user.metrics.newuseractiveindex")) |
|
|
|
excelHeader = append(excelHeader, ctx.Tr("user.metrics.totalregistuser")) |
|
|
|
excelHeader = append(excelHeader, ctx.Tr("user.metrics.totalactiveduser")) |
|
|
|
excelHeader = append(excelHeader, ctx.Tr("user.metrics.totalhasactivityuser")) |
|
|
|
|
|
|
|
excelHeaderMap := make(map[string]string, 0) |
|
|
|
var i byte |
|
|
|
i = 0 |
|
|
|
for _, value := range excelHeader { |
|
|
|
excelColumn := getColumn(i) + fmt.Sprint(1) |
|
|
|
log.Info("excelColumn=" + excelColumn) |
|
|
|
excelHeaderMap[excelColumn] = value |
|
|
|
i++ |
|
|
|
} |
|
|
|
return excelHeaderMap |
|
|
|
} |
|
|
|
|
|
|
|
func writeUserMetricsExcel(row int, xlsx *excelize.File, sheetName string, userMetrics models.UserMetrics) { |
|
|
|
rows := fmt.Sprint(row) |
|
|
|
var tmp byte |
|
|
|
tmp = 0 |
|
|
|
dateTime := time.Unix(userMetrics.CountDate, 0) |
|
|
|
//dateTime.Format("2006-01-02 15:04:05") |
|
|
|
xlsx.SetCellValue(sheetName, getColumn(tmp)+rows, dateTime.Format("2006-01-02 15:04:05")) |
|
|
|
tmp = tmp + 1 |
|
|
|
xlsx.SetCellValue(sheetName, getColumn(tmp)+rows, userMetrics.ActivateRegistUser+userMetrics.NotActivateRegistUser) |
|
|
|
tmp = tmp + 1 |
|
|
|
xlsx.SetCellValue(sheetName, getColumn(tmp)+rows, userMetrics.ActivateRegistUser) |
|
|
|
tmp = tmp + 1 |
|
|
|
xlsx.SetCellValue(sheetName, getColumn(tmp)+rows, userMetrics.RegistActivityUser) |
|
|
|
tmp = tmp + 1 |
|
|
|
xlsx.SetCellValue(sheetName, getColumn(tmp)+rows, userMetrics.NotActivateRegistUser) |
|
|
|
tmp = tmp + 1 |
|
|
|
xlsx.SetCellValue(sheetName, getColumn(tmp)+rows, "") |
|
|
|
tmp = tmp + 1 |
|
|
|
xlsx.SetCellValue(sheetName, getColumn(tmp)+rows, fmt.Sprintf("%.2f", userMetrics.ActivateIndex)) |
|
|
|
tmp = tmp + 1 |
|
|
|
xlsx.SetCellValue(sheetName, getColumn(tmp)+rows, userMetrics.TotalUser) |
|
|
|
tmp = tmp + 1 |
|
|
|
xlsx.SetCellValue(sheetName, getColumn(tmp)+rows, userMetrics.TotalActivateRegistUser) |
|
|
|
tmp = tmp + 1 |
|
|
|
xlsx.SetCellValue(sheetName, getColumn(tmp)+rows, userMetrics.TotalHasActivityUser) |
|
|
|
} |
|
|
|
|
|
|
|
func getExcelHeader(ctx *context.Context) map[string]string { |
|
|
|
excelHeader := make([]string, 0) |
|
|
|
excelHeader = append(excelHeader, ctx.Tr("user.static.id")) |
|
|
|
@@ -247,7 +251,7 @@ func queryUserDataPage(ctx *context.Context, tableName string, queryObj interfac |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
func QueryMetrics(ctx *context.Context) { |
|
|
|
func queryMetrics(ctx *context.Context, tableName string) { |
|
|
|
startDate := ctx.Query("startDate") |
|
|
|
endDate := ctx.Query("endDate") |
|
|
|
startTime, _ := time.ParseInLocation("2006-01-02", startDate, time.Local) |
|
|
|
@@ -267,13 +271,28 @@ func QueryMetrics(ctx *context.Context) { |
|
|
|
//writer exec file. |
|
|
|
xlsx := excelize.NewFile() |
|
|
|
sheetName := ctx.Tr("user.metrics.sheetname") |
|
|
|
//index := xlsx.NewSheet(sheetName) |
|
|
|
index := xlsx.NewSheet(sheetName) |
|
|
|
xlsx.DeleteSheet("Sheet1") |
|
|
|
dataHeader := getUserMetricsExcelHeader(ctx) |
|
|
|
for k, v := range dataHeader { |
|
|
|
//设置单元格的值 |
|
|
|
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 { |
|
|
|
row++ |
|
|
|
writeUserMetricsExcel(row, xlsx, sheetName, userRecord) |
|
|
|
} |
|
|
|
//设置默认打开的表单 |
|
|
|
xlsx.SetActiveSheet(index) |
|
|
|
filename := sheetName + "_" + ctx.Tr("user.static."+tableName) + ".xlsx" |
|
|
|
ctx.Resp.Header().Set("Content-Disposition", "attachment; filename="+url.QueryEscape(filename)) |
|
|
|
ctx.Resp.Header().Set("Content-Type", "application/octet-stream") |
|
|
|
if _, err := xlsx.WriteTo(ctx.Resp); err != nil { |
|
|
|
log.Info("writer exel error." + err.Error()) |
|
|
|
} |
|
|
|
} else { |
|
|
|
result, count := models.QueryMetricsPage(startTime.Unix(), endTime.Unix(), page, pageSize) |
|
|
|
mapInterface := make(map[string]interface{}) |
|
|
|
@@ -281,7 +300,6 @@ func QueryMetrics(ctx *context.Context) { |
|
|
|
mapInterface["count"] = count |
|
|
|
ctx.JSON(http.StatusOK, mapInterface) |
|
|
|
} |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
func QueryRankingList(ctx *context.Context) { |
|
|
|
@@ -296,30 +314,45 @@ func QueryRankingList(ctx *context.Context) { |
|
|
|
ctx.JSON(http.StatusOK, mapInterface) |
|
|
|
} |
|
|
|
|
|
|
|
func QueryUserMetricsCurrentMonth(ctx *context.Context) { |
|
|
|
queryMetrics(ctx, "public.user_business_analysis_current_month") |
|
|
|
} |
|
|
|
func QueryUserStaticCurrentMonth(ctx *context.Context) { |
|
|
|
queryUserDataPage(ctx, "public.user_business_analysis_current_month", new(models.UserBusinessAnalysisCurrentMonth)) |
|
|
|
} |
|
|
|
|
|
|
|
func QueryUserMetricsCurrentWeek(ctx *context.Context) { |
|
|
|
queryMetrics(ctx, "public.user_business_analysis_current_week") |
|
|
|
} |
|
|
|
func QueryUserStaticCurrentWeek(ctx *context.Context) { |
|
|
|
queryUserDataPage(ctx, "public.user_business_analysis_current_week", new(models.UserBusinessAnalysisCurrentWeek)) |
|
|
|
} |
|
|
|
|
|
|
|
func QueryUserMetricsCurrentYear(ctx *context.Context) { |
|
|
|
queryMetrics(ctx, "public.user_business_analysis_current_year") |
|
|
|
} |
|
|
|
func QueryUserStaticCurrentYear(ctx *context.Context) { |
|
|
|
queryUserDataPage(ctx, "public.user_business_analysis_current_year", new(models.UserBusinessAnalysisCurrentYear)) |
|
|
|
} |
|
|
|
|
|
|
|
func QueryUserMetricsLast30Day(ctx *context.Context) { |
|
|
|
queryMetrics(ctx, "public.user_business_analysis_last30_day") |
|
|
|
} |
|
|
|
func QueryUserStaticLast30Day(ctx *context.Context) { |
|
|
|
queryUserDataPage(ctx, "public.user_business_analysis_last30_day", new(models.UserBusinessAnalysisLast30Day)) |
|
|
|
} |
|
|
|
|
|
|
|
func QueryUserMetricsLastMonth(ctx *context.Context) { |
|
|
|
queryMetrics(ctx, "public.user_business_analysis_last_month") |
|
|
|
} |
|
|
|
func QueryUserStaticLastMonth(ctx *context.Context) { |
|
|
|
queryUserDataPage(ctx, "public.user_business_analysis_last_month", new(models.UserBusinessAnalysisLastMonth)) |
|
|
|
} |
|
|
|
|
|
|
|
func QueryUserMetricsYesterday(ctx *context.Context) { |
|
|
|
queryMetrics(ctx, "public.user_business_analysis_yesterday") |
|
|
|
} |
|
|
|
func QueryUserStaticYesterday(ctx *context.Context) { |
|
|
|
queryUserDataPage(ctx, "public.user_business_analysis_yesterday", new(models.UserBusinessAnalysisYesterday)) |
|
|
|
} |
|
|
|
|
|
|
|
func QueryUserMetricsStaticAll(ctx *context.Context) { |
|
|
|
queryMetrics(ctx, "public.user_business_analysis_all") |
|
|
|
} |
|
|
|
func QueryUserStaticAll(ctx *context.Context) { |
|
|
|
queryUserDataPage(ctx, "public.user_business_analysis_all", new(models.UserBusinessAnalysisAll)) |
|
|
|
} |
|
|
|
|