diff --git a/models/user_business_analysis.go b/models/user_business_analysis.go index bef23e109..6d438ab0a 100644 --- a/models/user_business_analysis.go +++ b/models/user_business_analysis.go @@ -477,6 +477,7 @@ func QueryUserStaticDataForUserDefine(opts *UserBusinessAnalysisQueryOptions, wi dateRecord.Email = userRecord.Email dateRecord.RegistDate = userRecord.CreatedUnix dateRecord.Name = userRecord.Name + dateRecord.UserLocation = userRecord.Location dateRecord.GiteaAgeMonth = subMonth(currentTimeNow, userRecord.CreatedUnix.AsTime()) dateRecord.CodeMergeCount = getMapValue(dateRecord.ID, CodeMergeCountMap) @@ -534,7 +535,7 @@ func QueryUserStaticDataForUserDefine(opts *UserBusinessAnalysisQueryOptions, wi break } } - log.Info("query user define,count=" + fmt.Sprint((ResultList))) + log.Info("query user define,count=" + fmt.Sprint(len(ResultList))) return ResultList, int64(len(ResultList)) } @@ -973,7 +974,7 @@ func CounDataByDateAndReCount(wikiCountMap map[string]int, startTime time.Time, dateRecord.Name = userRecord.Name dateRecord.GiteaAgeMonth = subMonth(currentTimeNow, userRecord.CreatedUnix.AsTime()) dateRecord.DataDate = DataDate - + dateRecord.UserLocation = userRecord.Location dateRecord.CodeMergeCount = getMapValue(dateRecord.ID, CodeMergeCountMap) dateRecord.CommitCount = getMapValue(dateRecord.ID, CommitCountMap) dateRecord.IssueCount = getMapValue(dateRecord.ID, IssueCountMap) @@ -1026,20 +1027,7 @@ func CounDataByDateAndReCount(wikiCountMap map[string]int, startTime time.Time, log.Info("has activity." + userRecord.Name) addUserToMap(userNewAddActivity, userRecord.CreatedUnix, dateRecord.ID) } - if !userRecord.IsActive { - continue - } - var deleteDateRecord UserBusinessAnalysis - deleteDateRecord.ID = userRecord.ID - deleteDateRecord.CountDate = CountDate.Unix() - statictisSess.Delete(&deleteDateRecord) - - _, err = statictisSess.Insert(&dateRecord) - if err != nil { - log.Info("insert daterecord failed." + err.Error()) - return err - } } indexTotal += PAGE_SIZE @@ -1166,7 +1154,7 @@ func getUserIndexFromAnalysisAll(dateRecord UserBusinessAnalysisAll, ParaWeight // 登录次数 0.10 result = float64(dateRecord.CodeMergeCount) * getParaWeightValue("CodeMergeCount", ParaWeight, 0.2) result += float64(dateRecord.CommitCount) * getParaWeightValue("CommitCount", ParaWeight, 0.2) - log.Info("1 result=" + fmt.Sprint(result)) + //log.Info("1 result=" + fmt.Sprint(result)) result += float64(dateRecord.IssueCount) * getParaWeightValue("IssueCount", ParaWeight, 0.2) result += float64(dateRecord.CommentCount) * getParaWeightValue("CommentCount", ParaWeight, 0.2) result += float64(dateRecord.FocusRepoCount) * getParaWeightValue("FocusRepoCount", ParaWeight, 0.1) @@ -1249,7 +1237,7 @@ func getUserIndex(dateRecord UserBusinessAnalysis, ParaWeight map[string]float64 // 登录次数 0.10 result = float64(dateRecord.CodeMergeCount) * getParaWeightValue("CodeMergeCount", ParaWeight, 0.2) result += float64(dateRecord.CommitCount) * getParaWeightValue("CommitCount", ParaWeight, 0.2) - log.Info("2 result=" + fmt.Sprint(result)) + //log.Info("2 result=" + fmt.Sprint(result)) result += float64(dateRecord.IssueCount) * getParaWeightValue("IssueCount", ParaWeight, 0.2) result += float64(dateRecord.CommentCount) * getParaWeightValue("CommentCount", ParaWeight, 0.2) result += float64(dateRecord.FocusRepoCount) * getParaWeightValue("FocusRepoCount", ParaWeight, 0.1) diff --git a/options/locale/locale_en-US.ini b/options/locale/locale_en-US.ini index 7288f2ce8..15afb37ca 100755 --- a/options/locale/locale_en-US.ini +++ b/options/locale/locale_en-US.ini @@ -519,6 +519,8 @@ static.RecommendDataset=Recommended Dataset Count static.CollectImage=Collect Image Count static.CollectedImage=Collected Image Count static.RecommendImage=Recommended Image Count +static.email=Email +static.location=Location static.all=All static.public.user_business_analysis_current_month=Current_Month static.public.user_business_analysis_current_week=Current_Week @@ -528,7 +530,7 @@ 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 - +static.downloadinfo=Due to the large amount of data generated in the customized time period and long calculation time, please download and export the data from the following address and export the data download address: metrics.sheetname=User Trend Analysis metrics.date=Count Date metrics.newregistuser=New registered user @@ -537,6 +539,7 @@ metrics.hasactivateuser=New contributing activities metrics.newregistnotactiveuser=New inactive metrics.averageuser=Average new users metrics.newuseractiveindex=Activation rate of new users +metrics.currentdayactivity=Current day contributing activities metrics.totalregistuser=Cumulative registered users metrics.totalactiveduser=Cumulative activated users metrics.totalhasactivityuser=Cumulative active users diff --git a/options/locale/locale_zh-CN.ini b/options/locale/locale_zh-CN.ini index 9a89d194a..fc5f89ccb 100755 --- a/options/locale/locale_zh-CN.ini +++ b/options/locale/locale_zh-CN.ini @@ -524,6 +524,8 @@ static.RecommendDataset=被推荐数据集数 static.CollectImage=收藏镜像数 static.CollectedImage=被收藏镜像数 static.RecommendImage=被推荐镜像数 +static.email=Email +static.location=所在地区 static.all=所有 static.public.user_business_analysis_current_month=本月 static.public.user_business_analysis_current_week=本周 @@ -533,7 +535,7 @@ static.public.user_business_analysis_last30_day=近30天 static.public.user_business_analysis_last_month=上月 static.public.user_business_analysis_yesterday=昨天 static.public.user_business_analysis_all=所有 - +static.downloadinfo=因自定义时间段产生的数据量比较大,计算时间比较长,请您从如下地址下载导出数据,导出数据下载地址: metrics.sheetname=用户趋势分析 metrics.date=日期 metrics.newregistuser=新增注册用户 @@ -542,6 +544,7 @@ metrics.hasactivateuser=新增有贡献活动 metrics.newregistnotactiveuser=新增未激活 metrics.averageuser=平均新增用户 metrics.newuseractiveindex=新增用户激活率 +metrics.currentdayactivity=当日有贡献活动 metrics.totalregistuser=累计注册用户 metrics.totalactiveduser=累计已激活 metrics.totalhasactivityuser=累计有贡献活动 diff --git a/routers/repo/user_data_analysis.go b/routers/repo/user_data_analysis.go index f631591d1..1c79c9e93 100755 --- a/routers/repo/user_data_analysis.go +++ b/routers/repo/user_data_analysis.go @@ -29,6 +29,7 @@ func getUserMetricsExcelHeader(ctx *context.Context) map[string]string { excelHeader = append(excelHeader, ctx.Tr("user.metrics.hasactivateuser")) excelHeader = append(excelHeader, ctx.Tr("user.metrics.newregistnotactiveuser")) excelHeader = append(excelHeader, ctx.Tr("user.metrics.newuseractiveindex")) + excelHeader = append(excelHeader, ctx.Tr("user.metrics.currentdayactivity")) excelHeader = append(excelHeader, ctx.Tr("user.metrics.totalregistuser")) excelHeader = append(excelHeader, ctx.Tr("user.metrics.totalactiveduser")) excelHeader = append(excelHeader, ctx.Tr("user.metrics.totalhasactivityuser")) @@ -67,6 +68,10 @@ func writeUserMetricsExcel(row int, xlsx *excelize.File, sheetName string, userM } xlsx.SetCellValue(sheetName, getColumn(tmp)+rows, value) tmp = tmp + 1 + + xlsx.SetCellValue(sheetName, getColumn(tmp)+rows, userMetrics.HasActivityUser) + tmp = tmp + 1 + xlsx.SetCellValue(sheetName, getColumn(tmp)+rows, userMetrics.TotalUser) tmp = tmp + 1 xlsx.SetCellValue(sheetName, getColumn(tmp)+rows, userMetrics.TotalActivateRegistUser) @@ -106,6 +111,9 @@ func getExcelHeader(ctx *context.Context) map[string]string { excelHeader = append(excelHeader, ctx.Tr("user.static.CollectedImage")) excelHeader = append(excelHeader, ctx.Tr("user.static.RecommendImage")) + excelHeader = append(excelHeader, ctx.Tr("user.static.email")) + excelHeader = append(excelHeader, ctx.Tr("user.static.location")) + excelHeader = append(excelHeader, ctx.Tr("user.static.registdate")) excelHeader = append(excelHeader, ctx.Tr("user.static.countdate")) @@ -181,6 +189,13 @@ func writeExcel(row int, xlsx *excelize.File, sheetName string, userRecord *mode tmp = tmp + 1 xlsx.SetCellValue(sheetName, getColumn(tmp)+rows, userRecord.RecommendImage) tmp = tmp + 1 + + xlsx.SetCellValue(sheetName, getColumn(tmp)+rows, userRecord.Email) + tmp = tmp + 1 + + xlsx.SetCellValue(sheetName, getColumn(tmp)+rows, userRecord.UserLocation) + tmp = tmp + 1 + formatTime := userRecord.RegistDate.Format("2006-01-02 15:04:05") xlsx.SetCellValue(sheetName, getColumn(tmp)+rows, formatTime[0:len(formatTime)-3]) tmp = tmp + 1 @@ -249,6 +264,13 @@ func writeExcelPage(row int, xlsx *excelize.File, sheetName string, userRecord * tmp = tmp + 1 xlsx.SetCellValue(sheetName, getColumn(tmp)+rows, userRecord.RecommendImage) tmp = tmp + 1 + + xlsx.SetCellValue(sheetName, getColumn(tmp)+rows, userRecord.Email) + tmp = tmp + 1 + + xlsx.SetCellValue(sheetName, getColumn(tmp)+rows, userRecord.UserLocation) + tmp = tmp + 1 + formatTime := userRecord.RegistDate.Format("2006-01-02 15:04:05") xlsx.SetCellValue(sheetName, getColumn(tmp)+rows, formatTime[0:len(formatTime)-3]) tmp = tmp + 1 @@ -414,9 +436,7 @@ func DownloadUserDefineFile(ctx *context.Context) { log.Info("file not exist.") ctx.JSON(http.StatusOK, "File Not Exist.") } else { - ctx.Resp.Header().Set("Content-Disposition", "attachment; filename="+filename) - ctx.Resp.Header().Set("Content-Type", "application/octet-stream") - ctx.ServeFile(allFilename, filename) + ctx.ServeFile(allFilename, url.QueryEscape(filename)) } } @@ -544,14 +564,13 @@ func QueryUserStaticDataPage(ctx *context.Context) { endTime = time.Now() } else { startTime, _ = time.ParseInLocation("2006-01-02", startDate, time.Local) - startTime = time.Date(startTime.Year(), startTime.Month(), startTime.Day(), 12, 0, 0, 0, startTime.Location()) + startTime = time.Date(startTime.Year(), startTime.Month(), startTime.Day(), 0, 0, 0, 0, startTime.Location()) settingStartTime, _ := time.Parse("2006-01-02", setting.RadarMap.RecordBeginTime) if startTime.Unix() < settingStartTime.Unix() { startTime = settingStartTime startDate = settingStartTime.Format("2006-01-02") } endTime, _ = time.ParseInLocation("2006-01-02", endDate, time.Local) - //endTime = endTime.AddDate(0, 0, 1) endTime = time.Date(endTime.Year(), endTime.Month(), endTime.Day(), 23, 59, 59, 0, startTime.Location()) isAll = false @@ -582,7 +601,7 @@ func QueryUserStaticDataPage(ctx *context.Context) { filename := sheetName + "_" + startDate + "_" + endDate + ".xlsx" os.Remove(setting.AppDataPath + Excel_File_Path + filename) go writeFileToDisk(ctx, count, re, filename) - ctx.JSON(http.StatusOK, setting.AppURL+"api/v1/download_user_define_file?filename="+filename) + ctx.JSON(http.StatusOK, ctx.Tr("user.static.downloadinfo")+setting.AppURL+"api/v1/download_user_define_file?filename="+filename) } else { mapInterface := make(map[string]interface{}) re, count := models.QueryUserStaticDataPage(pageOpts) diff --git a/web_src/js/components/UserAnalysis.vue b/web_src/js/components/UserAnalysis.vue index cfc91d449..02027288b 100755 --- a/web_src/js/components/UserAnalysis.vue +++ b/web_src/js/components/UserAnalysis.vue @@ -213,6 +213,18 @@ label="被推荐镜像数" width="120px" align="center"> + + + + 昨日新增注册用户数 未激活:{{ tableDataYesterday.NotActivateRegistUser }} 已激活: {{ tableDataYesterday.ActivateRegistUser }} - 有贡献活动: {{ tableDataYesterday.HasActivityUser }} + 有贡献活动: {{ tableDataYesterday.RegistActivityUser }} @@ -114,7 +114,7 @@ align="center"> @@ -131,6 +131,11 @@ {{scope.row.ActivateIndex | rounding}} + +