Reviewed-on: https://git.openi.org.cn/OpenI/aiforge/pulls/2174 Reviewed-by: lewis <747342561@qq.com>tags/v1.22.5.2^2
| @@ -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) | |||
| @@ -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 | |||
| @@ -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=累计有贡献活动 | |||
| @@ -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) | |||
| @@ -213,6 +213,18 @@ | |||
| label="被推荐镜像数" | |||
| width="120px" | |||
| align="center"> | |||
| </el-table-column> | |||
| <el-table-column | |||
| prop="Email" | |||
| label="Email" | |||
| width="120px" | |||
| align="center"> | |||
| </el-table-column> | |||
| <el-table-column | |||
| prop="UserLocation" | |||
| label="用户所在地址" | |||
| width="120px" | |||
| align="center"> | |||
| </el-table-column> | |||
| <el-table-column | |||
| prop="RegistDate" | |||
| @@ -267,7 +279,7 @@ | |||
| value_time: '', | |||
| search:'', | |||
| data:'', | |||
| columns: [{title: 'ID',key: 'ID'},{title: '用户名',key: 'Name'},{title: 'PR数',key: 'CodeMergeCount'},{title: 'commit数',key:'CommitCount'},{title: '提出任务数',key: 'IssueCount'},{title: '评论数',key: 'CommentCount'},{title: '关注项目数',key: 'FocusRepoCount'},{title: '点赞项目数',key: 'StarRepoCount'},{title: '登录次数',key: 'LoginCount'},{title:'关注者数',key:'WatchedCount'},{title:'commit代码行数',key:'CommitCodeSize'},{title:'已解决任务数',key:'SolveIssueCount'},{title:'百科页面贡献次数',key:'EncyclopediasCount'},{title:'创建项目',key:'CreateRepoCount'},{title:'用户注册时间',key:'RegistDate'},{title:'云脑任务数',key:'CloudBrainTaskNum'},{title:'云脑运行时间(小时)',key:'CloudBrainRunTime'},{title:'上传(提交)数据集文件数',key:'CommitDatasetNum'},{title:'提交模型数',key:'CommitModelCount'},{title:'归一化用户指数',key:'UserIndex'},{title:'用户指数',key:'UserIndexPrimitive'},{title:'关注他人数',key:'FocusOtherUser'},{title:'收藏数据集',key:'CollectDataset'},{title:'被收藏数据集',key:'CollectedDataset'},{title:'被推荐数据集数',key:'RecommendDataset'},{title:'收藏镜像数',key:'CollectImage'},{title:'被收藏镜像数',key:'CollectedImage'},{title:'被推荐镜像数',key:'RecommendImage'},{title:'系统统计时间',key:'CountDate'}], | |||
| columns: [{title: 'ID',key: 'ID'},{title: '用户名',key: 'Name'},{title: 'PR数',key: 'CodeMergeCount'},{title: 'commit数',key:'CommitCount'},{title: '提出任务数',key: 'IssueCount'},{title: '评论数',key: 'CommentCount'},{title: '关注项目数',key: 'FocusRepoCount'},{title: '点赞项目数',key: 'StarRepoCount'},{title: '登录次数',key: 'LoginCount'},{title:'关注者数',key:'WatchedCount'},{title:'commit代码行数',key:'CommitCodeSize'},{title:'已解决任务数',key:'SolveIssueCount'},{title:'百科页面贡献次数',key:'EncyclopediasCount'},{title:'创建项目',key:'CreateRepoCount'},{title:'用户注册时间',key:'RegistDate'},{title:'云脑任务数',key:'CloudBrainTaskNum'},{title:'云脑运行时间(小时)',key:'CloudBrainRunTime'},{title:'上传(提交)数据集文件数',key:'CommitDatasetNum'},{title:'提交模型数',key:'CommitModelCount'},{title:'归一化用户指数',key:'UserIndex'},{title:'用户指数',key:'UserIndexPrimitive'},{title:'关注他人数',key:'FocusOtherUser'},{title:'收藏数据集',key:'CollectDataset'},{title:'被收藏数据集',key:'CollectedDataset'},{title:'被推荐数据集数',key:'RecommendDataset'},{title:'收藏镜像数',key:'CollectImage'},{title:'被收藏镜像数',key:'CollectedImage'},{title:'被推荐镜像数',key:'RecommendImage'},{title:'Email',key:'Email'},{title:'用户所在地址',key:'UserLocation'},{title:'系统统计时间',key:'CountDate'}], | |||
| blob:'', | |||
| fileName:'', | |||
| dynamic:7, | |||
| @@ -13,7 +13,7 @@ | |||
| <span class="yesterday_blk yesterday_title" >昨日新增注册用户数 </span> | |||
| <span class="yesterday_blk yesterday_color1 yesterday_pdrt yesterday_text">未激活:<span class="bold_num">{{ tableDataYesterday.NotActivateRegistUser }}</span> 人 </span> | |||
| <span class="yesterday_blk yesterday_color2 yesterday_pdrt yesterday_text">已激活: <span class="bold_num">{{ tableDataYesterday.ActivateRegistUser }} </span>人</span> | |||
| <span class="yesterday_blk yesterday_pdrt yesterday_text">有贡献活动: <span class="bold_num">{{ tableDataYesterday.HasActivityUser }} </span>人</span> | |||
| <span class="yesterday_blk yesterday_pdrt yesterday_text">有贡献活动: <span class="bold_num">{{ tableDataYesterday.RegistActivityUser }} </span>人</span> | |||
| </el-col> | |||
| @@ -114,7 +114,7 @@ | |||
| align="center"> | |||
| </el-table-column> | |||
| <el-table-column | |||
| prop="HasActivityUser" | |||
| prop="RegistActivityUser" | |||
| label="新增有贡献活动" | |||
| align="center"> | |||
| </el-table-column> | |||
| @@ -131,6 +131,11 @@ | |||
| {{scope.row.ActivateIndex | rounding}} | |||
| </template> | |||
| </el-table-column> | |||
| <el-table-column | |||
| prop="HasActivityUser" | |||
| label="当日有贡献活动" | |||
| align="center"> | |||
| </el-table-column> | |||
| <el-table-column | |||
| prop="TotalUser" | |||
| label="累计注册用户" | |||
| @@ -517,7 +522,7 @@ | |||
| xdata.push(this.tableData[this.tableData.length-1-i].DisplayDate); | |||
| ydata_TotalRegistUser.push(this.tableData[this.tableData.length-1-i].TotalRegistUser) | |||
| ydata_ActivateRegistUser.push(this.tableData[this.tableData.length-1-i].ActivateRegistUser) | |||
| ydata_RegistActivityUser.push(this.tableData[this.tableData.length-1-i].HasActivityUser) | |||
| ydata_RegistActivityUser.push(this.tableData[this.tableData.length-1-i].RegistActivityUser) | |||
| ydata_NotActivateRegistUser.push(this.tableData[this.tableData.length-1-i].NotActivateRegistUser) | |||
| ydata_TotalUser.push(this.tableData[this.tableData.length-1-i].TotalUser) | |||
| ydata_TotalActivateRegistUser.push(this.tableData[this.tableData.length-1-i].TotalActivateRegistUser) | |||