Browse Source

提交代码。

Signed-off-by: zouap <zouap@pcl.ac.cn>
tags/v1.22.5.1^2
zouap 4 years ago
parent
commit
211286a68e
3 changed files with 90 additions and 44 deletions
  1. +13
    -0
      options/locale/locale_en-US.ini
  2. +2
    -2
      options/locale/locale_zh-CN.ini
  3. +75
    -42
      routers/repo/user_data_analysis.go

+ 13
- 0
options/locale/locale_en-US.ini View File

@@ -525,6 +525,19 @@ static.public.user_business_analysis_last30_day=Last_30_day
static.public.user_business_analysis_last_month=Last_Month
static.public.user_business_analysis_yesterday=Yesterday
static.public.user_business_analysis_all=All

metrics.sheetname=User Trend Analysis
metrics.date=Count Date
metrics.newregistuser=New registered user
metrics.newregistandactiveuser=New activated
metrics.hasactivateuser=New contributing activities
metrics.newregistnotactiveuser=New inactive
metrics.averageuser=Average new users
metrics.newuseractiveindex=Activation rate of new users
metrics.totalregistuser=Cumulative registered users
metrics.totalactiveduser=Cumulative activated users
metrics.totalhasactivityuser=Cumulative active users

[settings]
profile = Profile
account = Account


+ 2
- 2
options/locale/locale_zh-CN.ini View File

@@ -540,8 +540,8 @@ metrics.newregistnotactiveuser=新增未激活
metrics.averageuser=平均新增用户
metrics.newuseractiveindex=新增用户激活率
metrics.totalregistuser=累计注册用户
metrics.totalregistuser=累计已激活
metrics.totalregistuser=累计有贡献活动
metrics.totalactiveduser=累计已激活
metrics.totalhasactivityuser=累计有贡献活动

[settings]
profile=个人信息


+ 75
- 42
routers/repo/user_data_analysis.go View File

@@ -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))
}


Loading…
Cancel
Save