Browse Source

Merge pull request '用户分析开始时间,使用UTC时间。' (#2115) from zouap into V20220519

Reviewed-on: https://git.openi.org.cn/OpenI/aiforge/pulls/2115
Reviewed-by: lewis <747342561@qq.com>
tags/v1.22.5.1^2
lewis 3 years ago
parent
commit
963538bca9
3 changed files with 51 additions and 36 deletions
  1. +32
    -3
      models/user_business_analysis.go
  2. +13
    -27
      routers/repo/user_data_analysis.go
  3. +6
    -6
      web_src/js/components/UserTrend.vue

+ 32
- 3
models/user_business_analysis.go View File

@@ -1,6 +1,7 @@
package models package models


import ( import (
"encoding/json"
"fmt" "fmt"
"sort" "sort"
"strconv" "strconv"
@@ -228,7 +229,7 @@ func getLastCountDate() int64 {
return pageStartTime.Unix() return pageStartTime.Unix()
} }


func QueryMetricsPage(start int64, end int64, page int, pageSize int) ([]*UserMetrics, int64) {
func QueryMetricsPage(start int64, end int64) ([]*UserMetrics, int64) {


statictisSess := xStatistic.NewSession() statictisSess := xStatistic.NewSession()
defer statictisSess.Close() defer statictisSess.Close()
@@ -652,7 +653,9 @@ func refreshUserStaticTable(wikiCountMap map[string]int, tableName string, pageS
dateRecordBatch = make([]UserBusinessAnalysisAll, 0) dateRecordBatch = make([]UserBusinessAnalysisAll, 0)
} }
if tableName == "user_business_analysis_all" { if tableName == "user_business_analysis_all" {
if dateRecordAll.UserIndex > 0 || dateRecordAll.LoginCount > 0 {
tValue := getUserActivateAll(dateRecordAll)
if tValue > 0 {
log.Info("dateRecordAll name=" + dateRecordAll.Name + " value=" + fmt.Sprint(tValue))
userMetrics["TotalHasActivityUser"] = getMapKeyStringValue("TotalHasActivityUser", userMetrics) + 1 userMetrics["TotalHasActivityUser"] = getMapKeyStringValue("TotalHasActivityUser", userMetrics) + 1
} }
} }
@@ -669,7 +672,9 @@ func refreshUserStaticTable(wikiCountMap map[string]int, tableName string, pageS
log.Info("insert all data failed." + err.Error()) log.Info("insert all data failed." + err.Error())
} }
} }

if tableName == "user_business_analysis_all" {
log.Info("TotalHasActivityUser=" + fmt.Sprint(userMetrics["TotalHasActivityUser"]))
}
//normalization //normalization
for k, v := range userIndexMap { for k, v := range userIndexMap {
tmpResult := (v - minUserIndex) / (maxUserIndex - minUserIndex) tmpResult := (v - minUserIndex) / (maxUserIndex - minUserIndex)
@@ -774,6 +779,8 @@ func CounDataByDateAndReCount(wikiCountMap map[string]int, startTime time.Time,
log.Info("query commit code errr.") log.Info("query commit code errr.")
} else { } else {
log.Info("query commit code size, len=" + fmt.Sprint(len(CommitCodeSizeMap))) log.Info("query commit code size, len=" + fmt.Sprint(len(CommitCodeSizeMap)))
CommitCodeSizeMapJson, _ := json.Marshal(CommitCodeSizeMap)
log.Info("CommitCodeSizeMapJson=" + string(CommitCodeSizeMapJson))
} }
CommitDatasetSizeMap, CommitDatasetNumMap := queryDatasetSize(start_unix, end_unix) CommitDatasetSizeMap, CommitDatasetNumMap := queryDatasetSize(start_unix, end_unix)
SolveIssueCountMap := querySolveIssue(start_unix, end_unix) SolveIssueCountMap := querySolveIssue(start_unix, end_unix)
@@ -868,6 +875,7 @@ func CounDataByDateAndReCount(wikiCountMap map[string]int, startTime time.Time,
dateRecord.UserIndexPrimitive = getUserIndex(dateRecord, ParaWeight) dateRecord.UserIndexPrimitive = getUserIndex(dateRecord, ParaWeight)
setUserMetrics(userMetrics, userRecord, start_unix, end_unix, dateRecord) setUserMetrics(userMetrics, userRecord, start_unix, end_unix, dateRecord)
if getUserActivate(dateRecord) > 0 { if getUserActivate(dateRecord) > 0 {
log.Info("has activity." + userRecord.Name)
addUserToMap(userNewAddActivity, userRecord.CreatedUnix, dateRecord.ID) addUserToMap(userNewAddActivity, userRecord.CreatedUnix, dateRecord.ID)
} }
if userRecord.IsActive { if userRecord.IsActive {
@@ -1035,6 +1043,27 @@ func getUserIndexFromAnalysisAll(dateRecord UserBusinessAnalysisAll, ParaWeight
return result return result
} }


func getUserActivateAll(dateRecord UserBusinessAnalysisAll) int {
var result int
result += dateRecord.CodeMergeCount
result += dateRecord.CommitCount
result += dateRecord.IssueCount
result += dateRecord.CommentCount
result += dateRecord.FocusRepoCount
result += dateRecord.StarRepoCount
result += dateRecord.SolveIssueCount
result += dateRecord.EncyclopediasCount
result += dateRecord.CreateRepoCount
result += dateRecord.CloudBrainTaskNum
result += dateRecord.CommitModelCount
result += dateRecord.CommitDatasetNum
result += dateRecord.FocusOtherUser
result += dateRecord.CollectDataset
result += dateRecord.CollectImage
result += dateRecord.CommitCodeSize
return result
}

func getUserActivate(dateRecord UserBusinessAnalysis) int { func getUserActivate(dateRecord UserBusinessAnalysis) int {
var result int var result int
result += dateRecord.CodeMergeCount result += dateRecord.CodeMergeCount


+ 13
- 27
routers/repo/user_data_analysis.go View File

@@ -256,14 +256,6 @@ func queryUserDataPage(ctx *context.Context, tableName string, queryObj interfac


func queryMetrics(ctx *context.Context, tableName string, startTime time.Time, endTime time.Time) { func queryMetrics(ctx *context.Context, tableName string, startTime time.Time, endTime time.Time) {


page := ctx.QueryInt("page")
if page <= 0 {
page = 1
}
pageSize := ctx.QueryInt("pageSize")
if pageSize <= 0 {
pageSize = setting.UI.IssuePagingNum
}
IsReturnFile := ctx.QueryBool("IsReturnFile") IsReturnFile := ctx.QueryBool("IsReturnFile")


var count int64 var count int64
@@ -275,7 +267,7 @@ func queryMetrics(ctx *context.Context, tableName string, startTime time.Time, e
result = models.QueryMetricsForAll(startTime.Unix(), endTime.Unix()) result = models.QueryMetricsForAll(startTime.Unix(), endTime.Unix())
count = int64(len(result)) count = int64(len(result))
} else { } else {
result, count = models.QueryMetricsPage(startTime.Unix(), endTime.Unix(), page, pageSize)
result, count = models.QueryMetricsPage(startTime.Unix(), endTime.Unix())
} }
if IsReturnFile { if IsReturnFile {
//writer exec file. //writer exec file.
@@ -297,6 +289,9 @@ func queryMetrics(ctx *context.Context, tableName string, startTime time.Time, e
//设置默认打开的表单 //设置默认打开的表单
xlsx.SetActiveSheet(index) xlsx.SetActiveSheet(index)
filename := sheetName + "_" + ctx.Tr("user.static."+tableName) + ".xlsx" filename := sheetName + "_" + ctx.Tr("user.static."+tableName) + ".xlsx"
if tableName == "" {
filename = sheetName + "_" + getTimeFileName(startTime) + "_" + getTimeFileName(endTime) + ".xlsx"
}
ctx.Resp.Header().Set("Content-Disposition", "attachment; filename="+url.QueryEscape(filename)) ctx.Resp.Header().Set("Content-Disposition", "attachment; filename="+url.QueryEscape(filename))
ctx.Resp.Header().Set("Content-Type", "application/octet-stream") ctx.Resp.Header().Set("Content-Type", "application/octet-stream")
if _, err := xlsx.WriteTo(ctx.Resp); err != nil { if _, err := xlsx.WriteTo(ctx.Resp); err != nil {
@@ -317,7 +312,10 @@ func queryMetrics(ctx *context.Context, tableName string, startTime time.Time, e
} }
ctx.JSON(http.StatusOK, mapInterface) ctx.JSON(http.StatusOK, mapInterface)
} }

}
func getTimeFileName(t time.Time) string {
t = t.Local()
return t.Format("20060102")
} }


func QueryRankingList(ctx *context.Context) { func QueryRankingList(ctx *context.Context) {
@@ -345,8 +343,8 @@ func QueryUserStaticCurrentMonth(ctx *context.Context) {
} }


func getStartTime(pageStartTime time.Time) time.Time { func getStartTime(pageStartTime time.Time) time.Time {
t, _ := time.Parse("2006-01-02", setting.RadarMap.GrowthBeginTime)
t = time.Date(t.Year(), t.Month(), t.Day(), 0, 0, 0, 1, t.Location())
t, _ := time.ParseInLocation("2006-01-02", setting.RadarMap.GrowthBeginTime, time.Local)
t = t.UTC()
if pageStartTime.Before(t) { if pageStartTime.Before(t) {
pageStartTime = t pageStartTime = t
} }
@@ -423,22 +421,10 @@ func QueryUserMetricDataPage(ctx *context.Context) {
startDate := ctx.Query("startDate") startDate := ctx.Query("startDate")
endDate := ctx.Query("endDate") endDate := ctx.Query("endDate")
startTime, _ := time.ParseInLocation("2006-01-02", startDate, time.Local) startTime, _ := time.ParseInLocation("2006-01-02", startDate, time.Local)
startTime = startTime.UTC()
endTime, _ := time.ParseInLocation("2006-01-02", endDate, time.Local) endTime, _ := time.ParseInLocation("2006-01-02", endDate, time.Local)

page := ctx.QueryInt("page")
if page <= 0 {
page = 1
}
pageSize := ctx.QueryInt("pageSize")
if pageSize <= 0 {
pageSize = setting.UI.IssuePagingNum
}
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)
startTime = getStartTime(startTime)
queryMetrics(ctx, "", startTime, endTime)
} }


func QueryUserStaticDataPage(ctx *context.Context) { func QueryUserStaticDataPage(ctx *context.Context) {


+ 6
- 6
web_src/js/components/UserTrend.vue View File

@@ -13,7 +13,7 @@
<span class="yesterday_blk yesterday_title" >昨日新增注册用户数 </span> <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_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_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.RegistActivityUser }} </span>人</span>
<span class="yesterday_blk yesterday_pdrt yesterday_text">有贡献活动: <span class="bold_num">{{ tableDataYesterday.HasActivityUser }} </span>人</span>
</el-col> </el-col>
@@ -24,8 +24,8 @@
</el-col> </el-col>
<el-col :span="8" :style="{ height: '180px'}" v-if="ys_count>0"> <el-col :span="8" :style="{ height: '180px'}" v-if="ys_count>0">
<span class="yesterday_blk yesterday_title" >注册用户数 </span> <span class="yesterday_blk yesterday_title" >注册用户数 </span>
<span class="yesterday_blk yesterday_color1 yesterday_pdrt yesterday_text">未激活:<span class="bold_num">{{ tableDataYesterday.TotalActivateRegistUser}} </span>人 </span>
<span class="yesterday_blk yesterday_color2 yesterday_pdrt yesterday_text">已激活:<span class="bold_num">{{ tableDataYesterday.TotalNotActivateRegistUser }} </span>人</span>
<span class="yesterday_blk yesterday_color2 yesterday_pdrt yesterday_text">未激活:<span class="bold_num">{{ tableDataYesterday.TotalNotActivateRegistUser }} </span>人</span>
<span class="yesterday_blk yesterday_color1 yesterday_pdrt yesterday_text">已激活:<span class="bold_num">{{ tableDataYesterday.TotalActivateRegistUser}} </span>人 </span>
<span class="yesterday_blk yesterday_pdrt yesterday_text">有贡献活动:<span class="bold_num"> {{ tableDataYesterday.TotalHasActivityUser}} </span>人</span> <span class="yesterday_blk yesterday_pdrt yesterday_text">有贡献活动:<span class="bold_num"> {{ tableDataYesterday.TotalHasActivityUser}} </span>人</span>
</el-col> </el-col>
@@ -114,7 +114,7 @@
align="center"> align="center">
</el-table-column> </el-table-column>
<el-table-column <el-table-column
prop="RegistActivityUser"
prop="HasActivityUser"
label="新增有贡献活动" label="新增有贡献活动"
align="center"> align="center">
</el-table-column> </el-table-column>
@@ -292,7 +292,7 @@
switch(type_val){ switch(type_val){
case "yesterday_usr":{ case "yesterday_usr":{
this.value_time=[] this.value_time=[]
this.dataUrl = '../../api/v1/query_user_yesterday';
this.dataUrl = '../../api/v1/query_metrics_yesterday';
break break
} }
case "current_week_usr":{ case "current_week_usr":{
@@ -517,7 +517,7 @@
xdata.push(this.tableData[this.tableData.length-1-i].DisplayDate); xdata.push(this.tableData[this.tableData.length-1-i].DisplayDate);
ydata_TotalRegistUser.push(this.tableData[this.tableData.length-1-i].TotalRegistUser) ydata_TotalRegistUser.push(this.tableData[this.tableData.length-1-i].TotalRegistUser)
ydata_ActivateRegistUser.push(this.tableData[this.tableData.length-1-i].ActivateRegistUser) ydata_ActivateRegistUser.push(this.tableData[this.tableData.length-1-i].ActivateRegistUser)
ydata_RegistActivityUser.push(this.tableData[this.tableData.length-1-i].RegistActivityUser)
ydata_RegistActivityUser.push(this.tableData[this.tableData.length-1-i].HasActivityUser)
ydata_NotActivateRegistUser.push(this.tableData[this.tableData.length-1-i].NotActivateRegistUser) ydata_NotActivateRegistUser.push(this.tableData[this.tableData.length-1-i].NotActivateRegistUser)
ydata_TotalUser.push(this.tableData[this.tableData.length-1-i].TotalUser) ydata_TotalUser.push(this.tableData[this.tableData.length-1-i].TotalUser)
ydata_TotalActivateRegistUser.push(this.tableData[this.tableData.length-1-i].TotalActivateRegistUser) ydata_TotalActivateRegistUser.push(this.tableData[this.tableData.length-1-i].TotalActivateRegistUser)


Loading…
Cancel
Save